From 933b8388dab5cbb7dce8e222a2531403c9bae59d Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Fri, 7 Dec 2018 11:01:28 +0100 Subject: [PATCH 1/7] conmon: init at unstable-2018-11-28 conmon is a required dependency for `podman` Signed-off-by: Vincent Demeester --- .../virtualization/podman/conmon.nix | 33 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 1 + 2 files changed, 34 insertions(+) create mode 100644 pkgs/applications/virtualization/podman/conmon.nix diff --git a/pkgs/applications/virtualization/podman/conmon.nix b/pkgs/applications/virtualization/podman/conmon.nix new file mode 100644 index 00000000000..0d29bf33a56 --- /dev/null +++ b/pkgs/applications/virtualization/podman/conmon.nix @@ -0,0 +1,33 @@ +{ stdenv, lib, fetchFromGitHub, pkgconfig, glib }: + +with lib; + +stdenv.mkDerivation rec { + name = "conmon-${version}"; + version = "unstable-2018-11-28"; + rev = "8fba206232c249a8fc4e2fac1469fb2fddbf5cf7"; + + src = fetchFromGitHub { + owner = "containers"; + repo = "conmon"; + sha256 = "07ar0dk9i072b14f6il51yqahxp5c4fkf5jzar8rxcpvymkdy8zq"; + inherit rev; + }; + + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ + glib + ]; + + installPhase = '' + install -D -m 755 bin/conmon $out/bin/conmon + ''; + + meta = { + homepage = https://github.com/containers/conmon; + description = "An OCI container runtime monitor"; + license = licenses.asl20; + maintainers = with maintainers; [ vdemeester ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0562410f914..5845034781a 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4966,6 +4966,7 @@ in podiff = callPackage ../tools/text/podiff { }; + conmon = callPackage ../applications/virtualization/podman/conmon.nix { }; pod2mdoc = callPackage ../tools/misc/pod2mdoc { }; poedit = callPackage ../tools/text/poedit { }; From b5eda4cccc2dccdb0b38e04d9bfdd9f2f80b0929 Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Mon, 10 Dec 2018 13:49:11 +0100 Subject: [PATCH 2/7] podman: init at 0.11.1.1 podman is a binary build from libpod : libpod is a library used to create container pods. podman aims to be *almost* compatible with the docker cli but doesn't require a docker daemon. Signed-off-by: Vincent Demeester --- .../virtualization/podman/conmon.nix | 2 +- .../virtualization/podman/default.nix | 49 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 pkgs/applications/virtualization/podman/default.nix diff --git a/pkgs/applications/virtualization/podman/conmon.nix b/pkgs/applications/virtualization/podman/conmon.nix index 0d29bf33a56..42907bc84ba 100644 --- a/pkgs/applications/virtualization/podman/conmon.nix +++ b/pkgs/applications/virtualization/podman/conmon.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation rec { ]; installPhase = '' - install -D -m 755 bin/conmon $out/bin/conmon + install -D -m 555 bin/conmon $out/bin/conmon ''; meta = { diff --git a/pkgs/applications/virtualization/podman/default.nix b/pkgs/applications/virtualization/podman/default.nix new file mode 100644 index 00000000000..b4c160bc896 --- /dev/null +++ b/pkgs/applications/virtualization/podman/default.nix @@ -0,0 +1,49 @@ +{ stdenv, lib, fetchFromGitHub, removeReferencesTo, pkgconfig +, go, gpgme, lvm2, btrfs-progs, libseccomp +}: + +with lib; + +stdenv.mkDerivation rec { + name = "podman-${version}"; + version = "0.11.1.1"; + src = fetchFromGitHub { + owner = "containers"; + repo = "libpod"; + rev = "v${version}"; + sha256 = "18r7jasaf18cbraf5v2fl96hs47d3ivjq82pivw9knbwafsscg64"; + }; + + # Optimizations break compilation of libseccomp c bindings + hardeningDisable = [ "fortify" ]; + nativeBuildInputs = [ pkgconfig removeReferencesTo ]; + + buildInputs = [ + go btrfs-progs libseccomp gpgme lvm2 + ]; + + buildPhase = '' + patchShebangs . + mkdir -p .gopath/src/github.com/containers + ln -sf $PWD .gopath/src/github.com/containers/libpod + ln -sf $PWD/vendor/github.com/varlink .gopath/src/github.com/varlink + export GOPATH="$PWD/.gopath:$GOPATH" + make binaries + ''; + + installPhase = '' + install -Dm555 bin/podman $out/bin/podman + ''; + + preFixup = '' + find $out -type f -exec remove-references-to -t ${go} -t ${stdenv.cc.cc} -t ${stdenv.glibc.dev} '{}' + + ''; + + meta = { + homepage = https://podman.io/; + description = "A program for managing pods, containers and container images"; + license = licenses.asl20; + maintainers = with maintainers; [ vdemeester ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5845034781a..13dfa2d3c54 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4966,7 +4966,9 @@ in podiff = callPackage ../tools/text/podiff { }; + podman = callPackage ../applications/virtualization/podman { }; conmon = callPackage ../applications/virtualization/podman/conmon.nix { }; + pod2mdoc = callPackage ../tools/misc/pod2mdoc { }; poedit = callPackage ../tools/text/poedit { }; From a97b42511f8a7eb0f85fa18d49f1ec8531fbd859 Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Tue, 11 Dec 2018 15:34:32 +0100 Subject: [PATCH 3/7] podman: add patch from containers/libpod#1977 Removes the `-i` from the `go build` commands. Once the PR is merged and released, this patch won't be required anymore. Signed-off-by: Vincent Demeester --- ...i-in-go-build-with-go-1.10-and-above.patch | 49 +++++++++++++++++++ .../virtualization/podman/default.nix | 2 + 2 files changed, 51 insertions(+) create mode 100644 pkgs/applications/virtualization/podman/0001-No-need-to-use-i-in-go-build-with-go-1.10-and-above.patch diff --git a/pkgs/applications/virtualization/podman/0001-No-need-to-use-i-in-go-build-with-go-1.10-and-above.patch b/pkgs/applications/virtualization/podman/0001-No-need-to-use-i-in-go-build-with-go-1.10-and-above.patch new file mode 100644 index 00000000000..e2305bd80a5 --- /dev/null +++ b/pkgs/applications/virtualization/podman/0001-No-need-to-use-i-in-go-build-with-go-1.10-and-above.patch @@ -0,0 +1,49 @@ +From 0b0096382c8346d463ce019714fcc46256bc4af3 Mon Sep 17 00:00:00 2001 +From: Vincent Demeester +Date: Tue, 11 Dec 2018 15:26:01 +0100 +Subject: [PATCH] No need to use `-i` in go build (with go 1.10 and above) +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +> The go build command now maintains a cache of recently built + packages, separate from the installed packages in $GOROOT/pkg or + $GOPATH/pkg. The effect of the cache should be to speed builds that + do not explicitly install packages or when switching between + different copies of source code (for example, when changing back and + forth between different branches in a version control system). The + old advice to add the -i flag for speed, as in go build -i or go + test -i, is no longer necessary: builds run just as fast without -i. + +This should also fix podman builds for NixOS, snap-installed go, … + +Signed-off-by: Vincent Demeester +--- + Makefile | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index f99aaaec..55f34bcc 100644 +--- a/Makefile ++++ b/Makefile +@@ -108,7 +108,7 @@ test/goecho/goecho: .gopathok $(wildcard test/goecho/*.go) + $(GO) build -ldflags '$(LDFLAGS)' -o $@ $(PROJECT)/test/goecho + + podman: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) +- $(GO) build -i -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman ++ $(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman + + local-cross: $(CROSS_BUILD_TARGETS) + +@@ -116,7 +116,7 @@ bin/podman.cross.%: .gopathok + TARGET="$*"; \ + GOOS="$${TARGET%%.*}" \ + GOARCH="$${TARGET##*.}" \ +- $(GO) build -i -ldflags '$(LDFLAGS_PODMAN)' -tags '$(BUILDTAGS_CROSS)' -o "$@" $(PROJECT)/cmd/podman ++ $(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags '$(BUILDTAGS_CROSS)' -o "$@" $(PROJECT)/cmd/podman + + python: + ifdef HAS_PYTHON3 +-- +2.19.1 + diff --git a/pkgs/applications/virtualization/podman/default.nix b/pkgs/applications/virtualization/podman/default.nix index b4c160bc896..a96dcb330a7 100644 --- a/pkgs/applications/virtualization/podman/default.nix +++ b/pkgs/applications/virtualization/podman/default.nix @@ -22,6 +22,8 @@ stdenv.mkDerivation rec { go btrfs-progs libseccomp gpgme lvm2 ]; + patches = [ ./0001-No-need-to-use-i-in-go-build-with-go-1.10-and-above.patch ]; + buildPhase = '' patchShebangs . mkdir -p .gopath/src/github.com/containers From e3452cd8757ff392b28b5f7134f3c500c98d0211 Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Tue, 11 Dec 2018 16:55:05 +0100 Subject: [PATCH 4/7] podman: 0.11.1 -> 0.12.1 Signed-off-by: Vincent Demeester --- pkgs/applications/virtualization/podman/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/virtualization/podman/default.nix b/pkgs/applications/virtualization/podman/default.nix index a96dcb330a7..9b74982369a 100644 --- a/pkgs/applications/virtualization/podman/default.nix +++ b/pkgs/applications/virtualization/podman/default.nix @@ -6,12 +6,12 @@ with lib; stdenv.mkDerivation rec { name = "podman-${version}"; - version = "0.11.1.1"; + version = "0.12.1"; src = fetchFromGitHub { owner = "containers"; repo = "libpod"; rev = "v${version}"; - sha256 = "18r7jasaf18cbraf5v2fl96hs47d3ivjq82pivw9knbwafsscg64"; + sha256 = "18vmzq9nqjndxa3gkc7y1rrfsyrbcrpglipp38jmn7m45w1g8dj7"; }; # Optimizations break compilation of libseccomp c bindings From 1a10caf4df87eeb277a8974340fbe2b44dbc5348 Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Mon, 17 Dec 2018 15:33:34 +0100 Subject: [PATCH 5/7] podman: 0.12.1 -> 0.12.1.2 Signed-off-by: Vincent Demeester --- ...i-in-go-build-with-go-1.10-and-above.patch | 49 ------------------- .../virtualization/podman/default.nix | 6 +-- 2 files changed, 2 insertions(+), 53 deletions(-) delete mode 100644 pkgs/applications/virtualization/podman/0001-No-need-to-use-i-in-go-build-with-go-1.10-and-above.patch diff --git a/pkgs/applications/virtualization/podman/0001-No-need-to-use-i-in-go-build-with-go-1.10-and-above.patch b/pkgs/applications/virtualization/podman/0001-No-need-to-use-i-in-go-build-with-go-1.10-and-above.patch deleted file mode 100644 index e2305bd80a5..00000000000 --- a/pkgs/applications/virtualization/podman/0001-No-need-to-use-i-in-go-build-with-go-1.10-and-above.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 0b0096382c8346d463ce019714fcc46256bc4af3 Mon Sep 17 00:00:00 2001 -From: Vincent Demeester -Date: Tue, 11 Dec 2018 15:26:01 +0100 -Subject: [PATCH] No need to use `-i` in go build (with go 1.10 and above) -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -> The go build command now maintains a cache of recently built - packages, separate from the installed packages in $GOROOT/pkg or - $GOPATH/pkg. The effect of the cache should be to speed builds that - do not explicitly install packages or when switching between - different copies of source code (for example, when changing back and - forth between different branches in a version control system). The - old advice to add the -i flag for speed, as in go build -i or go - test -i, is no longer necessary: builds run just as fast without -i. - -This should also fix podman builds for NixOS, snap-installed go, … - -Signed-off-by: Vincent Demeester ---- - Makefile | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/Makefile b/Makefile -index f99aaaec..55f34bcc 100644 ---- a/Makefile -+++ b/Makefile -@@ -108,7 +108,7 @@ test/goecho/goecho: .gopathok $(wildcard test/goecho/*.go) - $(GO) build -ldflags '$(LDFLAGS)' -o $@ $(PROJECT)/test/goecho - - podman: .gopathok $(PODMAN_VARLINK_DEPENDENCIES) -- $(GO) build -i -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman -+ $(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags "$(BUILDTAGS)" -o bin/$@ $(PROJECT)/cmd/podman - - local-cross: $(CROSS_BUILD_TARGETS) - -@@ -116,7 +116,7 @@ bin/podman.cross.%: .gopathok - TARGET="$*"; \ - GOOS="$${TARGET%%.*}" \ - GOARCH="$${TARGET##*.}" \ -- $(GO) build -i -ldflags '$(LDFLAGS_PODMAN)' -tags '$(BUILDTAGS_CROSS)' -o "$@" $(PROJECT)/cmd/podman -+ $(GO) build -ldflags '$(LDFLAGS_PODMAN)' -tags '$(BUILDTAGS_CROSS)' -o "$@" $(PROJECT)/cmd/podman - - python: - ifdef HAS_PYTHON3 --- -2.19.1 - diff --git a/pkgs/applications/virtualization/podman/default.nix b/pkgs/applications/virtualization/podman/default.nix index 9b74982369a..8dd1a0ab9e4 100644 --- a/pkgs/applications/virtualization/podman/default.nix +++ b/pkgs/applications/virtualization/podman/default.nix @@ -6,12 +6,12 @@ with lib; stdenv.mkDerivation rec { name = "podman-${version}"; - version = "0.12.1"; + version = "0.12.1.2"; src = fetchFromGitHub { owner = "containers"; repo = "libpod"; rev = "v${version}"; - sha256 = "18vmzq9nqjndxa3gkc7y1rrfsyrbcrpglipp38jmn7m45w1g8dj7"; + sha256 = "1gz7vci273bgrihrxbks2zxlb2lsmlj3lisw7s3d54ci0zr7avv3"; }; # Optimizations break compilation of libseccomp c bindings @@ -22,8 +22,6 @@ stdenv.mkDerivation rec { go btrfs-progs libseccomp gpgme lvm2 ]; - patches = [ ./0001-No-need-to-use-i-in-go-build-with-go-1.10-and-above.patch ]; - buildPhase = '' patchShebangs . mkdir -p .gopath/src/github.com/containers From 3ca772275707fd0f781882bbdfb515574c931cd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 18 Dec 2018 10:53:40 +0100 Subject: [PATCH 6/7] podman: use buildGoPackage --- .../virtualization/podman/default.nix | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/pkgs/applications/virtualization/podman/default.nix b/pkgs/applications/virtualization/podman/default.nix index 8dd1a0ab9e4..9a6fec47266 100644 --- a/pkgs/applications/virtualization/podman/default.nix +++ b/pkgs/applications/virtualization/podman/default.nix @@ -1,45 +1,39 @@ -{ stdenv, lib, fetchFromGitHub, removeReferencesTo, pkgconfig -, go, gpgme, lvm2, btrfs-progs, libseccomp +{ stdenv, fetchFromGitHub, pkgconfig +, buildGoPackage, gpgme, lvm2, btrfs-progs, libseccomp }: -with lib; - -stdenv.mkDerivation rec { +buildGoPackage rec { name = "podman-${version}"; version = "0.12.1.2"; + src = fetchFromGitHub { owner = "containers"; repo = "libpod"; rev = "v${version}"; sha256 = "1gz7vci273bgrihrxbks2zxlb2lsmlj3lisw7s3d54ci0zr7avv3"; }; - + + goPackagePath = "github.com/containers/libpod"; + # Optimizations break compilation of libseccomp c bindings hardeningDisable = [ "fortify" ]; - nativeBuildInputs = [ pkgconfig removeReferencesTo ]; - + nativeBuildInputs = [ pkgconfig ]; + buildInputs = [ - go btrfs-progs libseccomp gpgme lvm2 + btrfs-progs libseccomp gpgme lvm2 ]; buildPhase = '' + pushd $NIX_BUILD_TOP/go/src/${goPackagePath} patchShebangs . - mkdir -p .gopath/src/github.com/containers - ln -sf $PWD .gopath/src/github.com/containers/libpod - ln -sf $PWD/vendor/github.com/varlink .gopath/src/github.com/varlink - export GOPATH="$PWD/.gopath:$GOPATH" make binaries ''; - + installPhase = '' - install -Dm555 bin/podman $out/bin/podman - ''; - - preFixup = '' - find $out -type f -exec remove-references-to -t ${go} -t ${stdenv.cc.cc} -t ${stdenv.glibc.dev} '{}' + + install -Dm555 bin/podman $bin/bin/podman ''; - meta = { + meta = with stdenv.lib; { homepage = https://podman.io/; description = "A program for managing pods, containers and container images"; license = licenses.asl20; From de5fd9e6110489722e8667664dce9fdc17331866 Mon Sep 17 00:00:00 2001 From: Vincent Demeester Date: Mon, 21 Jan 2019 12:24:12 +0100 Subject: [PATCH 7/7] podman: 0.12.1.2 -> 1.0.0 Signed-off-by: Vincent Demeester --- pkgs/applications/virtualization/podman/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/virtualization/podman/default.nix b/pkgs/applications/virtualization/podman/default.nix index 9a6fec47266..753fada5e7d 100644 --- a/pkgs/applications/virtualization/podman/default.nix +++ b/pkgs/applications/virtualization/podman/default.nix @@ -4,13 +4,13 @@ buildGoPackage rec { name = "podman-${version}"; - version = "0.12.1.2"; + version = "1.0.0"; src = fetchFromGitHub { owner = "containers"; repo = "libpod"; rev = "v${version}"; - sha256 = "1gz7vci273bgrihrxbks2zxlb2lsmlj3lisw7s3d54ci0zr7avv3"; + sha256 = "1py6vbmpm25j1gb51dn973pckvgjl9q63y9qyzszvc3q3wsxsqhw"; }; goPackagePath = "github.com/containers/libpod";