From 9b43c29047f3e19d22564edee7bd2f3fb3f2e611 Mon Sep 17 00:00:00 2001 From: Sascha Grunert Date: Sun, 19 May 2019 14:25:52 +0200 Subject: [PATCH] cri-o: init at version v1.14.1 This commits adds the CRI-O package, which includes the `crio` binary as well as `conmon` and `pause`. The configuration is not part of this package because it would be included in a service. Signed-off-by: Sascha Grunert --- maintainers/maintainer-list.nix | 9 ++- .../virtualization/cri-o/default.nix | 75 +++++++++++++++++++ 2 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 pkgs/applications/virtualization/cri-o/default.nix diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 6a88e5a5307..778277f3651 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -1746,13 +1746,13 @@ github = "fps"; name = "Florian Paul Schmidt"; }; - + fragamus = { email = "innovative.engineer@gmail.com"; github = "fragamus"; name = "Michael Gough"; }; - + fredeb = { email = "im@fredeb.dev"; github = "fredeeb"; @@ -4397,6 +4397,11 @@ github = "sargon"; name = "Daniel Ehlers"; }; + saschagrunert = { + email = "mail@saschagrunert.de"; + github = "saschagrunert"; + name = "Sascha Grunert"; + }; sauyon = { email = "s@uyon.co"; github = "sauyon"; diff --git a/pkgs/applications/virtualization/cri-o/default.nix b/pkgs/applications/virtualization/cri-o/default.nix new file mode 100644 index 00000000000..6e2790ef859 --- /dev/null +++ b/pkgs/applications/virtualization/cri-o/default.nix @@ -0,0 +1,75 @@ +{ flavor ? "" +, ldflags ? "" +, stdenv +, btrfs-progs +, buildGoPackage +, fetchFromGitHub +, glibc +, gpgme +, libapparmor +, libassuan +, libgpgerror +, libseccomp +, libselinux +, lvm2 +, pkgconfig +}: + +buildGoPackage rec { + project = "cri-o"; + version = "1.14.1"; + name = "${project}-${version}${flavor}"; + + goPackagePath = "github.com/${project}/${project}"; + + src = fetchFromGitHub { + owner = "cri-o"; + repo = "cri-o"; + rev = "v${version}"; + sha256 = "1cclxarwabk5zlqysm2dzgsm6qkxyzbnlylr0gs57ppn4ibky3nk"; + }; + + outputs = [ "bin" "out" ]; + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ btrfs-progs gpgme libapparmor libassuan libgpgerror + libseccomp libselinux lvm2 ] + ++ stdenv.lib.optionals (glibc != null) [ glibc glibc.static ]; + + makeFlags = ''BUILDTAGS="apparmor seccomp selinux + containers_image_ostree_stub"''; + + buildPhase = '' + pushd go/src/${goPackagePath} + + # Build conmon and pause + go build -tags ${makeFlags} -o bin/crio-config -buildmode=pie \ + -ldflags '-s -w ${ldflags}' ${goPackagePath}/cmd/crio-config + + pushd conmon + ../bin/crio-config + popd + + make -C conmon + make -C pause + + # Build the crio binary + go build -tags ${makeFlags} -o bin/crio -buildmode=pie \ + -ldflags '-s -w ${ldflags}' ${goPackagePath}/cmd/crio + ''; + installPhase = '' + install -Dm755 bin/crio $bin/bin/crio${flavor} + + mkdir -p $bin/libexec/crio + install -Dm755 bin/conmon $bin/libexec/crio/conmon${flavor} + install -Dm755 bin/pause $bin/libexec/crio/pause${flavor} + ''; + + meta = with stdenv.lib; { + homepage = https://cri-o.io; + description = ''Open Container Initiative-based implementation of the + Kubernetes Container Runtime Interface''; + license = licenses.asl20; + maintainers = with maintainers; [ saschagrunert ]; + platforms = platforms.linux; + }; +}