# Contributor: ungleich <foss@ungleich.ch>
# Contributor: TBK <alpine@jjtc.eu>
# Maintainer: Francesco Colista <fcolista@alpinelinux.org>
pkgname=cri-o
pkgver=1.32.2
pkgrel=2
pkgdesc="OCI-based implementation of Kubernetes Container Runtime Interface"
url="https://github.com/cri-o/cri-o/"
arch="all"
license="Apache-2.0"
# Most tests will fail if not ran as root
# since it tries to create network interfaces
options="net chmod-clean !check"
depends="
	cni-plugins
	conmon
	conntrack-tools
	containers-common
	iproute2
	iptables
	oci-runtime
	"
makedepends="
	bash
	btrfs-progs-dev
	eudev-dev
	glib-dev
	go
	go-md2man
	gpgme-dev
	libseccomp-dev
	libselinux-dev
	lvm2-dev
	ostree-dev
	sqlite-dev
	tzdata
	"
checkdepends="bats cri-tools jq parallel sudo conmon"
subpackages="
	$pkgname-doc
	$pkgname-bash-completion
	$pkgname-zsh-completion
	$pkgname-fish-completion
	$pkgname-openrc
	"
source="
	$pkgname-$pkgver.tar.gz::https://github.com/cri-o/cri-o/archive/v$pkgver/cri-o-$pkgver.tar.gz
	crio.conf
	crio.initd
	crio.logrotated
	cni-plugins-path.patch
	makefile-fix-install.patch
	"

# secfixes:
#   1.23.2-r0:
#     - CVE-2022-0811
#   1.24.1-r0:
#     - CVE-2022-1708
#   1.26.2-r0:
#     - CVE-2022-4318

export GOCACHE="${GOCACHE:-"$srcdir/go-cache"}"
export GOTMPDIR="${GOTMPDIR:-"$srcdir"}"
export GOMODCACHE="${GOMODCACHE:-"$srcdir/go"}"
export GOBIN="$GOPATH/bin"

build() {
	# https://github.com/cri-o/cri-o/blob/master/install.md#build-tags
	make BUILDTAGS="libsqlite3 seccomp selinux apparmor containers_image_openpgp containers_image_ostree_stub"
}

check() {
	make localintegration
}

package() {
	make \
		DESTDIR="$pkgdir" \
		PREFIX=/usr \
		CRICTL_CONFIG_DIR="/etc/crio" \
		OCIUMOUNTINSTALLDIR="/etc/crio" \
		FISHINSTALLDIR=/usr/share/fish/vendor_completions.d \
		install.bin-nobuild install.man-nobuild install.completions install.config-nobuild

	# We want it in etc so apk does not overwrite it
	mkdir -p  "$pkgdir"/usr/share/oci-umount/oci-umount.d/
	ln -sf ../../../../etc/crio/crio-umount.conf "$pkgdir"/usr/share/oci-umount/oci-umount.d/crio-umount.conf

	# The CNI plugins are recommended to be installed as examples
	install -Dm644 contrib/cni/*.conflist -t "$pkgdir"/usr/share/doc/cri-o/examples/cni/

	install -Dm755 "$srcdir"/crio.initd "$pkgdir"/etc/init.d/crio
	install -Dm644 "$srcdir"/crio.conf "$pkgdir"/etc/crio/crio.conf
	install -Dm644 "$srcdir"/crio.logrotated "$pkgdir"/etc/logrotate.d/crio
}

sha512sums="
f1e54ed4678c0b63777e89f92f43472e8864ac49a464600b535b5fcc5d99ab670d56a951c87f7c5c0b968afeaf83554ced96fe95eb53f072b7fafb968236c809  cri-o-1.32.2.tar.gz
1f60719677295c9c5c615eb25d9159bde0af68a132eee67747f57fe76642d457c98c896c6189f85637d7b4ac24ba55fd9eaeb1699f43c3c5077b645f72a479fb  crio.conf
26048a219bc426ef4a4f50e96d6e0ded1c55dc8415df9a2773764d2ebcb3d9e91077b2916da1ff32674ca4a53062e41e185503d671dacc3167a018b0066347e1  crio.initd
1115228546a696eeebeb6d4b3e5c3152af0c99a2559097fc5829d8b416d979c457b4b1789e0120054babf57f585d3f63cbe49949d40417ae7aab613184bf4516  crio.logrotated
08793e54ee7889d6243150a8356b137f068a0464c8b807dcff6d5799b8f94465de9393f26d72900e0c7ec2b88808ed05532354e8e184b60cc7d92bbfcb55eda0  cni-plugins-path.patch
642b160ac2268737f5b92f8eabd4ec4b650504b543f5bcdc3de777e4b8c8f3eb5a1c01c7f0d5c0ce565bad5f34ba9526e93222b8461570eb13745a01495874e6  makefile-fix-install.patch
"
