Package: guix-patches;
Reported by: Pierre Langlois <pierre.langlois <at> gmx.com>
Date: Sat, 25 Dec 2021 14:32:01 UTC
Severity: normal
Tags: patch
Done: Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Pierre Langlois <pierre.langlois <at> gmx.com> To: 52790 <at> debbugs.gnu.org Cc: Pierre Langlois <pierre.langlois <at> gmx.com> Subject: [bug#52790] [PATCH v2 6/7] gnu: docker: Update to 20.10.14. Date: Fri, 01 Apr 2022 02:11:56 +0100
[Message part 1 (text/plain, inline)]
Pierre Langlois <pierre.langlois <at> gmx.com> writes: > * gnu/packages/docker.scm (%docker-version): Update to 20.10.14. > (docker-libnetwork): Update commit according to vendor.conf. > (docker)[origin]: Remove docker-fix-tests.patch. > [arguments]: Adapt 'patch-paths phase, substitute "ip6tables" and > buildkit-qemu. Remove trailing #t. > [native-inputs]: Replace go-1.14 by go. > (docker-cli)[arguments]: Set GO_LINKMODE to "dynamic". Remove trailing #t. > * gnu/packages/networking.scm (go-sctp): Update commit according to > docker-libnetwork's vendor.conf. > * gnu/packages/patches/docker-fix-tests.patch: Delete. > * gnu/local.mk (dist_patch_DATA): Remove patch. > --- > gnu/local.mk | 1 - > gnu/packages/docker.scm | 69 ++++++++------------- > gnu/packages/networking.scm | 6 +- > gnu/packages/patches/docker-fix-tests.patch | 28 --------- > 4 files changed, 29 insertions(+), 75 deletions(-) > delete mode 100644 gnu/packages/patches/docker-fix-tests.patch > > diff --git a/gnu/local.mk b/gnu/local.mk > index a704161abc..d5b3d4bba3 100644 > --- a/gnu/local.mk > +++ b/gnu/local.mk > @@ -1007,7 +1007,6 @@ dist_patch_DATA = \ > %D%/packages/patches/docbook-xsl-support-old-url.patch \ > %D%/packages/patches/doc++-include-directives.patch \ > %D%/packages/patches/doc++-segfault-fix.patch \ > - %D%/packages/patches/docker-fix-tests.patch \ > %D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch \ > %D%/packages/patches/dstat-fix-crash-when-specifying-delay.patch \ > %D%/packages/patches/dstat-skip-devices-without-io.patch \ > diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm > index 0d721ead38..020c89bb11 100644 > --- a/gnu/packages/docker.scm > +++ b/gnu/packages/docker.scm > @@ -54,7 +54,7 @@ (define-module (gnu packages docker) > > ;; Note - when changing Docker versions it is important to update the versions > ;; of several associated packages (docker-libnetwork and go-sctp). > -(define %docker-version "19.03.15") > +(define %docker-version "20.10.14") > > (define-public python-docker > (package > @@ -252,13 +252,12 @@ (define-public containerd > ;;; anyway, as it needs many dependencies that aren't being satisfied. > (define docker-libnetwork > ;; There are no recent release for libnetwork, so choose the last commit of > - ;; the branch that Docker uses, as can be seen in the Docker source file > - ;; 'hack/dockerfile/install/proxy.installer'. NOTE - It is important that > - ;; this version is kept in sync with the version of Docker being used. > - ;; This commit is the "bump_19.03" branch, as mentioned in Docker's vendor.conf. > - (let ((commit "55e924b8a84231a065879156c0de95aefc5f5435") > + ;; the branch that Docker uses, as can be seen in the 'vendor.conf' Docker > + ;; source file. NOTE - It is important that this version is kept in sync > + ;; with the version of Docker being used. > + (let ((commit "339b972b464ee3d401b5788b2af9e31d09d6b7da") > (version (version-major+minor %docker-version)) > - (revision "1")) > + (revision "2")) > (package > (name "docker-libnetwork") > (version (git-version version revision commit)) > @@ -271,7 +270,7 @@ (define docker-libnetwork > (file-name (git-file-name name version)) > (sha256 > (base32 > - "19syb3scwiykn44gqfaqrgqv8a0df4ps0ykf3za9xkjc5cyi99mp")) > + "0wx2hdwx56cbxiaky9kw2bi1prdfgzwr776lq1k0slw8kvn0cn32")) > ;; Delete bundled ("vendored") free software source code. > (modules '((guix build utils))) > (snippet '(begin > @@ -324,9 +323,7 @@ (define-public docker > (commit (string-append "v" version)))) > (file-name (git-file-name name version)) > (sha256 > - (base32 "0419iha9zmwlhzhnbfxlsa13vgd04yifnsr8qqnj2ks5dxrcajl8")) > - (patches > - (search-patches "docker-fix-tests.patch")))) > + (base32 "18nid42p1n20mg7spz0knh4izkk8qgjz9xi6v54czvy7aaj336i3")))) > (build-system gnu-build-system) > (arguments > `(#:modules > @@ -369,9 +366,10 @@ (define-public docker > (("DefaultRuntimeBinary = .*") > (string-append "DefaultRuntimeBinary = \"" > (assoc-ref inputs "runc") > - "/sbin/runc\"\n")) > - (("DefaultRuntimeName = .*") > - (string-append "DefaultRuntimeName = \"" > + "/sbin/runc\"\n"))) > + (substitute* "daemon/runtime_unix.go" > + (("defaultRuntimeName = .*") > + (string-append "defaultRuntimeName = \"" > (assoc-ref inputs "runc") > "/sbin/runc\"\n"))) > (substitute* "daemon/config/config.go" > @@ -400,16 +398,6 @@ (define-public docker > (substitute* "pkg/archive/archive.go" > (("string\\{\"xz") > (string-append "string{\"" (assoc-ref inputs "xz") "/bin/xz"))) > - ;; TODO: Remove when Docker proper uses v1.14.x to build > - (substitute* "registry/resumable/resumablerequestreader_test.go" > - (("I%27m%20not%20an%20url" all) > - (string-append "\"" all "\""))) > - ;; TODO: Remove when Docker proper uses v1.14.x to build > - (substitute* "vendor/gotest.tools/x/subtest/context.go" > - (("func \\(tc \\*testcase\\) Cleanup\\(" all) > - (string-append all "func()")) > - (("tc\\.Cleanup\\(" all) > - (string-append all "nil"))) > > (let ((source-files (filter (lambda (name) > (not (string-contains name "test"))) > @@ -446,6 +434,7 @@ (define-public docker > ("blkid" "util-linux" "sbin/blkid") > ("unpigz" "pigz" "bin/unpigz") > ("iptables" "iptables" "sbin/iptables") > + ("ip6tables" "iptables" "sbin/ip6tables") > ("iptables-legacy" "iptables" "sbin/iptables") > ("ip" "iproute2" "sbin/ip")) > > @@ -494,10 +483,10 @@ (define-public docker > "exec.Command") > ;; Search for ZFS in PATH. > (("\\<LookPath\\(\"zfs\"\\)") "LooxPath(\"zfs\")") > + (("\\<LookPath\\(\"buildkit-qemu-\"") "LooxPath(\"buildkit-qemu-\"") I forgot, I wanted to add a comment to clarify the qemu change here. IIUC, docker can do qemu-based emulation, but we don't support it yet in Guix, I believe we'd need to add the following packages: - https://github.com/moby/buildkit: Seems to be a "next-gen" generic image builder backend. - https://github.com/docker/buildx: To have a `docker buildx' command, to link docker with the buildkit backend. Here's a new 2.5 patch that adds the following note: ;; Do not fail when buildkit-qemu-<target> isn't found. ;; FIXME: We might need to package buildkit and docker's ;; buildx plugin, to support qemu-based docker containers.
[signature.asc (application/pgp-signature, inline)]
[0006-gnu-docker-Update-to-20.10.14.patch (text/x-patch, inline)]
From 7c9a1ac422d802234099b7c57e067dbe217ac386 Mon Sep 17 00:00:00 2001 From: Pierre Langlois <pierre.langlois <at> gmx.com> Date: Sat, 25 Dec 2021 02:08:39 +0000 Subject: [PATCH v2.5 6/7] gnu: docker: Update to 20.10.14. * gnu/packages/docker.scm (%docker-version): Update to 20.10.14. (docker-libnetwork): Update commit according to vendor.conf. (docker)[origin]: Remove docker-fix-tests.patch. [arguments]: Adapt 'patch-paths phase, substitute "ip6tables" and buildkit-qemu. Remove trailing #t. [native-inputs]: Replace go-1.14 by go. (docker-cli)[arguments]: Set GO_LINKMODE to "dynamic". Remove trailing #t. * gnu/packages/networking.scm (go-sctp): Update commit according to docker-libnetwork's vendor.conf. * gnu/packages/patches/docker-fix-tests.patch: Delete. * gnu/local.mk (dist_patch_DATA): Remove patch. --- gnu/local.mk | 1 - gnu/packages/docker.scm | 72 +++++++++------------ gnu/packages/networking.scm | 6 +- gnu/packages/patches/docker-fix-tests.patch | 28 -------- 4 files changed, 32 insertions(+), 75 deletions(-) delete mode 100644 gnu/packages/patches/docker-fix-tests.patch diff --git a/gnu/local.mk b/gnu/local.mk index a704161abc..d5b3d4bba3 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1007,7 +1007,6 @@ dist_patch_DATA = \ %D%/packages/patches/docbook-xsl-support-old-url.patch \ %D%/packages/patches/doc++-include-directives.patch \ %D%/packages/patches/doc++-segfault-fix.patch \ - %D%/packages/patches/docker-fix-tests.patch \ %D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch \ %D%/packages/patches/dstat-fix-crash-when-specifying-delay.patch \ %D%/packages/patches/dstat-skip-devices-without-io.patch \ diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm index 0d721ead38..82c017157d 100644 --- a/gnu/packages/docker.scm +++ b/gnu/packages/docker.scm @@ -54,7 +54,7 @@ (define-module (gnu packages docker) ;; Note - when changing Docker versions it is important to update the versions ;; of several associated packages (docker-libnetwork and go-sctp). -(define %docker-version "19.03.15") +(define %docker-version "20.10.14") (define-public python-docker (package @@ -252,13 +252,12 @@ (define-public containerd ;;; anyway, as it needs many dependencies that aren't being satisfied. (define docker-libnetwork ;; There are no recent release for libnetwork, so choose the last commit of - ;; the branch that Docker uses, as can be seen in the Docker source file - ;; 'hack/dockerfile/install/proxy.installer'. NOTE - It is important that - ;; this version is kept in sync with the version of Docker being used. - ;; This commit is the "bump_19.03" branch, as mentioned in Docker's vendor.conf. - (let ((commit "55e924b8a84231a065879156c0de95aefc5f5435") + ;; the branch that Docker uses, as can be seen in the 'vendor.conf' Docker + ;; source file. NOTE - It is important that this version is kept in sync + ;; with the version of Docker being used. + (let ((commit "339b972b464ee3d401b5788b2af9e31d09d6b7da") (version (version-major+minor %docker-version)) - (revision "1")) + (revision "2")) (package (name "docker-libnetwork") (version (git-version version revision commit)) @@ -271,7 +270,7 @@ (define docker-libnetwork (file-name (git-file-name name version)) (sha256 (base32 - "19syb3scwiykn44gqfaqrgqv8a0df4ps0ykf3za9xkjc5cyi99mp")) + "0wx2hdwx56cbxiaky9kw2bi1prdfgzwr776lq1k0slw8kvn0cn32")) ;; Delete bundled ("vendored") free software source code. (modules '((guix build utils))) (snippet '(begin @@ -324,9 +323,7 @@ (define-public docker (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0419iha9zmwlhzhnbfxlsa13vgd04yifnsr8qqnj2ks5dxrcajl8")) - (patches - (search-patches "docker-fix-tests.patch")))) + (base32 "18nid42p1n20mg7spz0knh4izkk8qgjz9xi6v54czvy7aaj336i3")))) (build-system gnu-build-system) (arguments `(#:modules @@ -369,9 +366,10 @@ (define-public docker (("DefaultRuntimeBinary = .*") (string-append "DefaultRuntimeBinary = \"" (assoc-ref inputs "runc") - "/sbin/runc\"\n")) - (("DefaultRuntimeName = .*") - (string-append "DefaultRuntimeName = \"" + "/sbin/runc\"\n"))) + (substitute* "daemon/runtime_unix.go" + (("defaultRuntimeName = .*") + (string-append "defaultRuntimeName = \"" (assoc-ref inputs "runc") "/sbin/runc\"\n"))) (substitute* "daemon/config/config.go" @@ -400,16 +398,6 @@ (define-public docker (substitute* "pkg/archive/archive.go" (("string\\{\"xz") (string-append "string{\"" (assoc-ref inputs "xz") "/bin/xz"))) - ;; TODO: Remove when Docker proper uses v1.14.x to build - (substitute* "registry/resumable/resumablerequestreader_test.go" - (("I%27m%20not%20an%20url" all) - (string-append "\"" all "\""))) - ;; TODO: Remove when Docker proper uses v1.14.x to build - (substitute* "vendor/gotest.tools/x/subtest/context.go" - (("func \\(tc \\*testcase\\) Cleanup\\(" all) - (string-append all "func()")) - (("tc\\.Cleanup\\(" all) - (string-append all "nil"))) (let ((source-files (filter (lambda (name) (not (string-contains name "test"))) @@ -446,6 +434,7 @@ (define-public docker ("blkid" "util-linux" "sbin/blkid") ("unpigz" "pigz" "bin/unpigz") ("iptables" "iptables" "sbin/iptables") + ("ip6tables" "iptables" "sbin/ip6tables") ("iptables-legacy" "iptables" "sbin/iptables") ("ip" "iproute2" "sbin/ip")) @@ -494,10 +483,13 @@ (define-public docker "exec.Command") ;; Search for ZFS in PATH. (("\\<LookPath\\(\"zfs\"\\)") "LooxPath(\"zfs\")") + ;; Do not fail when buildkit-qemu-<target> isn't found. + ;; FIXME: We might need to package buildkit and docker's + ;; buildx plugin, to support qemu-based docker containers. + (("\\<LookPath\\(\"buildkit-qemu-\"") "LooxPath(\"buildkit-qemu-\"") ;; Fail on other unsubstituted LookPaths. (("\\<LookPath\\(\"") "Guix_doesnt_want_LookPath\\(\"") - (("\\<LooxPath") "LookPath"))) - #t)) + (("\\<LooxPath") "LookPath"))))) (add-after 'patch-paths 'delete-failing-tests (lambda _ ;; Needs internet access. @@ -522,8 +514,7 @@ (define-public docker ;; This file uses /var. (delete-file "daemon/oci_linux_test.go") ;; Signal tests fail in bizarre ways - (delete-file "pkg/signal/signal_linux_test.go") - #t)) + (delete-file "pkg/signal/signal_linux_test.go"))) (replace 'configure (lambda _ (setenv "DOCKER_BUILDTAGS" "seccomp") @@ -536,8 +527,7 @@ (define-public docker ;; information, and the DWARF symbol table. (setenv "LDFLAGS" "-s -w") ;; Make build faster - (setenv "GOCACHE" "/tmp") - #t)) + (setenv "GOCACHE" "/tmp"))) (add-before 'build 'setup-go-environment (assoc-ref go:%standard-phases 'setup-go-environment)) (replace 'build @@ -559,8 +549,7 @@ (define-public docker "/.gopath/src/github.com/docker/docker")) (with-directory-excursion ".gopath/src/github.com/docker/docker" (invoke "hack/test/unit")) - (setenv "PWD" #f) - #t)) + (setenv "PWD" #f))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -568,8 +557,7 @@ (define-public docker (install-file "bundles/dynbinary-daemon/dockerd" out-bin) (install-file (string-append "bundles/dynbinary-daemon/dockerd-" (getenv "VERSION")) - out-bin) - #t))) + out-bin)))) (add-after 'install 'remove-go-references (assoc-ref go:%standard-phases 'remove-go-references))))) (inputs @@ -594,7 +582,7 @@ (define-public docker ("xz" ,xz))) (native-inputs (list eudev ; TODO: Should be propagated by lvm2 (.pc -> .pc) - go-1.14 gotestsum pkg-config)) + go gotestsum pkg-config)) (synopsis "Docker container component library, and daemon") (description "This package provides a framework to assemble specialized container systems. It includes components for orchestration, image @@ -615,7 +603,7 @@ (define-public docker-cli (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "1asapjj8brvbkd5irgdq82fx1ihrc14qaq30jxvjwflfm5yb7lv0")))) + (base32 "1nv6mzq9i9psgfbzx7hfx1qb6fjp649qg8y392z8z2kqbjl20g3q")))) (build-system go-build-system) (arguments `(#:import-path "github.com/docker/cli" @@ -635,11 +623,11 @@ (define-public docker-cli ;; Make build reproducible. (setenv "BUILDTIME" "1970-01-01 00:00:01.000000000+00:00") (symlink "src/github.com/docker/cli/scripts" "./scripts") - (symlink "src/github.com/docker/cli/docker.Makefile" "./docker.Makefile") - #t)) + (symlink "src/github.com/docker/cli/docker.Makefile" "./docker.Makefile"))) (replace 'build (lambda _ - (invoke "./scripts/build/dynbinary"))) + (setenv "GO_LINKMODE" "dynamic") + (invoke "./scripts/build/binary"))) (replace 'check (lambda* (#:key make-flags tests? #:allow-other-keys) (setenv "PATH" (string-append (getcwd) "/build:" (getenv "PATH"))) @@ -648,8 +636,7 @@ (define-public docker-cli (with-directory-excursion "src/github.com/docker/cli" ;; TODO: Run test-e2e as well? (apply invoke "make" "-f" "docker.Makefile" "test-unit" - (or make-flags '()))) - #t))) + (or make-flags '())))))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -662,8 +649,7 @@ (define-public docker-cli (string-append etc "/fish/completions")) (install-file "zsh/_docker" (string-append etc "/zsh/site-functions"))) - (install-file "build/docker" out-bin) - #t)))))) + (install-file "build/docker" out-bin))))))) (native-inputs (list go libltdl pkg-config)) (synopsis "Command line interface to Docker") diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index b45f2f79f2..54116e4f4c 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -1691,8 +1691,8 @@ (define-public go-netns (define-public go-sctp ;; docker-libnetwork-cmd-proxy requires this exact commit. ;; This commit is mentioned in docker-libnetwork-cmd-proxy's vendor.conf. - (let ((commit "6e2cb1366111dcf547c13531e3a263a067715847") - (revision "2")) + (let ((commit "f2269e66cdee387bd321445d5d300893449805be") + (revision "3")) (package (name "go-sctp") (version (git-version "0.0.0" revision commit)) @@ -1704,7 +1704,7 @@ (define-public go-sctp (file-name (git-file-name name version)) (sha256 (base32 - "1ba90fmpdwxa1ba4hrsjhi3gfy3pwmz7x8amw1p5dc9p5a7nnqrb")))) + "04463rnn9y9psp11ac5di6wrwxlhymw5h9hfhhhnxqwla90ikp0g")))) (build-system go-build-system) (arguments `(#:tests? #f ; Test suite is flakey. diff --git a/gnu/packages/patches/docker-fix-tests.patch b/gnu/packages/patches/docker-fix-tests.patch deleted file mode 100644 index 3e3e318e25..0000000000 --- a/gnu/packages/patches/docker-fix-tests.patch +++ /dev/null @@ -1,28 +0,0 @@ -Author: Danny Milosavljevic <dannym <at> scratchpost.org> -The socket name ended up too long inside the container. -Use a shorter one. ---- a/pkg/authorization/authz_unix_test.go 2019-01-10 01:55:02.997985947 +0100 -+++ b/pkg/authorization/authz_unix_test.go 2019-01-10 02:03:21.177439757 +0100 -@@ -24,7 +24,7 @@ - ) - - const ( -- pluginAddress = "authz-test-plugin.sock" -+ pluginAddress = "/tmp/authz-test-plugin.sock" - ) - - func TestAuthZRequestPluginError(t *testing.T) { -@@ -263,12 +263,7 @@ - - // createTestPlugin creates a new sample authorization plugin - func createTestPlugin(t *testing.T) *authorizationPlugin { -- pwd, err := os.Getwd() -- if err != nil { -- t.Fatal(err) -- } -- -- client, err := plugins.NewClient("unix:///"+path.Join(pwd, pluginAddress), &tlsconfig.Options{InsecureSkipVerify: true}) -+ client, err := plugins.NewClient("unix:///"+path.Join("/", pluginAddress), &tlsconfig.Options{InsecureSkipVerify: true}) - if err != nil { - t.Fatalf("Failed to create client %v", err) - } -- 2.34.0
[0007-gnu-docker-Switch-to-gexp-and-new-input-style.patch (text/x-patch, inline)]
From 4089db85b366e3f8fd394d254807ddd4b4631c3c Mon Sep 17 00:00:00 2001 From: Pierre Langlois <pierre.langlois <at> gmx.com> Date: Fri, 1 Apr 2022 01:34:52 +0100 Subject: [PATCH v2.5 7/7] gnu: docker: Switch to gexp and new input style. * gnu/packages/docker.scm (docker)[arguments]: Rewrite as gexps. Switch to using search-input-file. [inputs]: Use new style inputs. --- gnu/packages/docker.scm | 483 ++++++++++++++++++++-------------------- 1 file changed, 241 insertions(+), 242 deletions(-) diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm index 82c017157d..edec4d3b27 100644 --- a/gnu/packages/docker.scm +++ b/gnu/packages/docker.scm @@ -326,260 +326,259 @@ (define-public docker (base32 "18nid42p1n20mg7spz0knh4izkk8qgjz9xi6v54czvy7aaj336i3")))) (build-system gnu-build-system) (arguments - `(#:modules - ((guix build gnu-build-system) + (list + #:modules + '((guix build gnu-build-system) ((guix build go-build-system) #:prefix go:) (guix build union) (guix build utils)) - #:imported-modules - (,@%gnu-build-system-modules + #:imported-modules + `(,@%gnu-build-system-modules (guix build union) (guix build go-build-system)) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-paths - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "builder/builder-next/executor_unix.go" - (("CommandCandidates:.*runc.*") - (string-append "CommandCandidates: []string{\"" - (assoc-ref inputs "runc") - "/sbin/runc\"},\n"))) - (substitute* "vendor/github.com/containerd/go-runc/runc.go" - (("DefaultCommand = .*") - (string-append "DefaultCommand = \"" - (assoc-ref inputs "runc") - "/sbin/runc\"\n"))) - (substitute* "vendor/github.com/containerd/containerd/runtime/v1/linux/runtime.go" - (("defaultRuntime[ \t]*=.*") - (string-append "defaultRuntime = \"" - (assoc-ref inputs "runc") - "/sbin/runc\"\n")) - (("defaultShim[ \t]*=.*") - (string-append "defaultShim = \"" - (assoc-ref inputs "containerd") - "/bin/containerd-shim\"\n"))) - (substitute* "daemon/daemon_unix.go" - (("DefaultShimBinary = .*") - (string-append "DefaultShimBinary = \"" - (assoc-ref inputs "containerd") - "/bin/containerd-shim\"\n")) - (("DefaultRuntimeBinary = .*") - (string-append "DefaultRuntimeBinary = \"" - (assoc-ref inputs "runc") - "/sbin/runc\"\n"))) - (substitute* "daemon/runtime_unix.go" - (("defaultRuntimeName = .*") - (string-append "defaultRuntimeName = \"" - (assoc-ref inputs "runc") - "/sbin/runc\"\n"))) - (substitute* "daemon/config/config.go" - (("StockRuntimeName = .*") - (string-append "StockRuntimeName = \"" - (assoc-ref inputs "runc") - "/sbin/runc\"\n")) - (("DefaultInitBinary = .*") - (string-append "DefaultInitBinary = \"" - (assoc-ref inputs "tini") - "/bin/tini-static\"\n"))) - (substitute* "daemon/config/config_common_unix_test.go" - (("expectedInitPath: \"docker-init\"") - (string-append "expectedInitPath: \"" - (assoc-ref inputs "tini") - "/bin/tini-static\""))) - (substitute* "vendor/github.com/moby/buildkit/executor/runcexecutor/executor.go" - (("var defaultCommandCandidates = .*") - (string-append "var defaultCommandCandidates = []string{\"" - (assoc-ref inputs "runc") "/sbin/runc\"}"))) - (substitute* "vendor/github.com/docker/libnetwork/portmapper/proxy.go" - (("var userlandProxyCommandName = .*") - (string-append "var userlandProxyCommandName = \"" - (assoc-ref inputs "docker-proxy") - "/bin/proxy\"\n"))) - (substitute* "pkg/archive/archive.go" - (("string\\{\"xz") - (string-append "string{\"" (assoc-ref inputs "xz") "/bin/xz"))) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'patch-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "builder/builder-next/executor_unix.go" + (("CommandCandidates:.*runc.*") + (string-append "CommandCandidates: []string{\"" + (search-input-file inputs "/sbin/runc") + "\"},\n"))) + (substitute* "vendor/github.com/containerd/go-runc/runc.go" + (("DefaultCommand = .*") + (string-append "DefaultCommand = \"" + (search-input-file inputs "/sbin/runc") + "\"\n"))) + (substitute* "vendor/github.com/containerd/containerd/runtime/v1/linux/runtime.go" + (("defaultRuntime[ \t]*=.*") + (string-append "defaultRuntime = \"" + (search-input-file inputs "/sbin/runc") + "\"\n")) + (("defaultShim[ \t]*=.*") + (string-append "defaultShim = \"" + (search-input-file inputs "/bin/containerd-shim") + "\"\n"))) + (substitute* "daemon/daemon_unix.go" + (("DefaultShimBinary = .*") + (string-append "DefaultShimBinary = \"" + (search-input-file inputs "/bin/containerd-shim") + "\"\n")) + (("DefaultRuntimeBinary = .*") + (string-append "DefaultRuntimeBinary = \"" + (search-input-file inputs "/sbin/runc") + "\"\n"))) + (substitute* "daemon/runtime_unix.go" + (("defaultRuntimeName = .*") + (string-append "defaultRuntimeName = \"" + (search-input-file inputs "/sbin/runc") + "\"\n"))) + (substitute* "daemon/config/config.go" + (("StockRuntimeName = .*") + (string-append "StockRuntimeName = \"" + (search-input-file inputs "/sbin/runc") + "\"\n")) + (("DefaultInitBinary = .*") + (string-append "DefaultInitBinary = \"" + (search-input-file inputs "/bin/tini-static") + "\"\n"))) + (substitute* "daemon/config/config_common_unix_test.go" + (("expectedInitPath: \"docker-init\"") + (string-append "expectedInitPath: \"" + (search-input-file inputs "/bin/tini-static") + "\""))) + (substitute* "vendor/github.com/moby/buildkit/executor/runcexecutor/executor.go" + (("var defaultCommandCandidates = .*") + (string-append "var defaultCommandCandidates = []string{\"" + (search-input-file inputs "/sbin/runc") "\"}"))) + (substitute* "vendor/github.com/docker/libnetwork/portmapper/proxy.go" + (("var userlandProxyCommandName = .*") + (string-append "var userlandProxyCommandName = \"" + (search-input-file inputs "/bin/proxy") + "\"\n"))) + (substitute* "pkg/archive/archive.go" + (("string\\{\"xz") + (string-append "string{\"" (search-input-file inputs "/bin/xz")))) - (let ((source-files (filter (lambda (name) - (not (string-contains name "test"))) - (find-files "." "\\.go$")))) - (let-syntax ((substitute-LookPath* - (syntax-rules () - ((_ (source-text package relative-path) ...) - (substitute* source-files - (((string-append "\\<exec\\.LookPath\\(\"" - source-text - "\")")) - (string-append "\"" - (assoc-ref inputs package) - "/" relative-path - "\", error(nil)")) ...)))) - (substitute-Command* - (syntax-rules () - ((_ (source-text package relative-path) ...) - (substitute* source-files - (((string-append "\\<(re)?exec\\.Command\\(\"" - source-text - "\"") _ re?) - (string-append (if re? re? "") - "exec.Command(\"" - (assoc-ref inputs package) - "/" relative-path - "\"")) ...))))) - (substitute-LookPath* - ("containerd" "containerd" "bin/containerd") - ("ps" "procps" "bin/ps") - ("mkfs.xfs" "xfsprogs" "sbin/mkfs.xfs") - ("lvmdiskscan" "lvm2" "sbin/lvmdiskscan") - ("pvdisplay" "lvm2" "sbin/pvdisplay") - ("blkid" "util-linux" "sbin/blkid") - ("unpigz" "pigz" "bin/unpigz") - ("iptables" "iptables" "sbin/iptables") - ("ip6tables" "iptables" "sbin/ip6tables") - ("iptables-legacy" "iptables" "sbin/iptables") - ("ip" "iproute2" "sbin/ip")) + (let ((source-files (filter (lambda (name) + (not (string-contains name "test"))) + (find-files "." "\\.go$")))) + (let-syntax ((substitute-LookPath* + (syntax-rules () + ((_ (source-text path) ...) + (substitute* source-files + (((string-append "\\<exec\\.LookPath\\(\"" + source-text + "\")")) + (string-append "\"" + (search-input-file inputs path) + "\", error(nil)")) ...)))) + (substitute-Command* + (syntax-rules () + ((_ (source-text path) ...) + (substitute* source-files + (((string-append "\\<(re)?exec\\.Command\\(\"" + source-text + "\"") _ re?) + (string-append (if re? re? "") + "exec.Command(\"" + (search-input-file inputs path) + "\"")) ...))))) + (substitute-LookPath* + ("containerd" "/bin/containerd") + ("ps" "/bin/ps") + ("mkfs.xfs" "/sbin/mkfs.xfs") + ("lvmdiskscan" "/sbin/lvmdiskscan") + ("pvdisplay" "/sbin/pvdisplay") + ("blkid" "/sbin/blkid") + ("unpigz" "/bin/unpigz") + ("iptables" "/sbin/iptables") + ("ip6tables" "/sbin/ip6tables") + ("iptables-legacy" "/sbin/iptables") + ("ip" "/sbin/ip")) - (substitute-Command* - ("modprobe" "kmod" "bin/modprobe") - ("pvcreate" "lvm2" "sbin/pvcreate") - ("vgcreate" "lvm2" "sbin/vgcreate") - ("lvcreate" "lvm2" "sbin/lvcreate") - ("lvconvert" "lvm2" "sbin/lvconvert") - ("lvchange" "lvm2" "sbin/lvchange") - ("mkfs.xfs" "xfsprogs" "sbin/mkfs.xfs") - ("xfs_growfs" "xfsprogs" "sbin/xfs_growfs") - ("mkfs.ext4" "e2fsprogs" "sbin/mkfs.ext4") - ("tune2fs" "e2fsprogs" "sbin/tune2fs") - ("blkid" "util-linux" "sbin/blkid") - ("resize2fs" "e2fsprogs" "sbin/resize2fs") - ("ps" "procps" "bin/ps") - ("losetup" "util-linux" "sbin/losetup") - ("uname" "coreutils" "bin/uname") - ("dbus-launch" "dbus" "bin/dbus-launch") - ("git" "git" "bin/git"))) - ;; docker-mountfrom ?? - ;; docker - ;; docker-untar ?? - ;; docker-applyLayer ?? - ;; /usr/bin/uname - ;; grep - ;; apparmor_parser + (substitute-Command* + ("modprobe" "/bin/modprobe") + ("pvcreate" "/sbin/pvcreate") + ("vgcreate" "/sbin/vgcreate") + ("lvcreate" "/sbin/lvcreate") + ("lvconvert" "/sbin/lvconvert") + ("lvchange" "/sbin/lvchange") + ("mkfs.xfs" "/sbin/mkfs.xfs") + ("xfs_growfs" "/sbin/xfs_growfs") + ("mkfs.ext4" "/sbin/mkfs.ext4") + ("tune2fs" "/sbin/tune2fs") + ("blkid" "/sbin/blkid") + ("resize2fs" "/sbin/resize2fs") + ("ps" "/bin/ps") + ("losetup" "/sbin/losetup") + ("uname" "/bin/uname") + ("dbus-launch" "/bin/dbus-launch") + ("git" "/bin/git"))) + ;; docker-mountfrom ?? + ;; docker + ;; docker-untar ?? + ;; docker-applyLayer ?? + ;; /usr/bin/uname + ;; grep + ;; apparmor_parser - ;; Make compilation fail when, in future versions, Docker - ;; invokes other programs we don't know about and thus don't - ;; substitute. - (substitute* source-files - ;; Search for Java in PATH. - (("\\<exec\\.Command\\(\"java\"") - "xxec.Command(\"java\"") - ;; Search for AUFS in PATH (mainline Linux doesn't support it). - (("\\<exec\\.Command\\(\"auplink\"") - "xxec.Command(\"auplink\"") - ;; Fail on other unsubstituted commands. - (("\\<exec\\.Command\\(\"([a-zA-Z0-9][a-zA-Z0-9_-]*)\"" - _ executable) - (string-append "exec.Guix_doesnt_want_Command(\"" - executable "\"")) - (("\\<xxec\\.Command") - "exec.Command") - ;; Search for ZFS in PATH. - (("\\<LookPath\\(\"zfs\"\\)") "LooxPath(\"zfs\")") + ;; Make compilation fail when, in future versions, Docker + ;; invokes other programs we don't know about and thus don't + ;; substitute. + (substitute* source-files + ;; Search for Java in PATH. + (("\\<exec\\.Command\\(\"java\"") + "xxec.Command(\"java\"") + ;; Search for AUFS in PATH (mainline Linux doesn't support it). + (("\\<exec\\.Command\\(\"auplink\"") + "xxec.Command(\"auplink\"") + ;; Fail on other unsubstituted commands. + (("\\<exec\\.Command\\(\"([a-zA-Z0-9][a-zA-Z0-9_-]*)\"" + _ executable) + (string-append "exec.Guix_doesnt_want_Command(\"" + executable "\"")) + (("\\<xxec\\.Command") + "exec.Command") + ;; Search for ZFS in PATH. + (("\\<LookPath\\(\"zfs\"\\)") "LooxPath(\"zfs\")") ;; Do not fail when buildkit-qemu-<target> isn't found. ;; FIXME: We might need to package buildkit and docker's ;; buildx plugin, to support qemu-based docker containers. - (("\\<LookPath\\(\"buildkit-qemu-\"") "LooxPath(\"buildkit-qemu-\"") - ;; Fail on other unsubstituted LookPaths. - (("\\<LookPath\\(\"") "Guix_doesnt_want_LookPath\\(\"") - (("\\<LooxPath") "LookPath"))))) - (add-after 'patch-paths 'delete-failing-tests - (lambda _ - ;; Needs internet access. - (delete-file "builder/remotecontext/git/gitutils_test.go") - ;; Permission denied. - (delete-file "daemon/graphdriver/devmapper/devmapper_test.go") - ;; Operation not permitted (idtools.MkdirAllAndChown). - (delete-file "daemon/graphdriver/vfs/vfs_test.go") - ;; Timeouts after 5 min. - (delete-file "plugin/manager_linux_test.go") - ;; Operation not permitted. - (delete-file "daemon/graphdriver/aufs/aufs_test.go") - (delete-file "daemon/graphdriver/btrfs/btrfs_test.go") - (delete-file "daemon/graphdriver/overlay/overlay_test.go") - (delete-file "daemon/graphdriver/overlay2/overlay_test.go") - (delete-file "pkg/chrootarchive/archive_unix_test.go") - (delete-file "daemon/container_unix_test.go") - ;; This file uses cgroups and /proc. - (delete-file "pkg/sysinfo/sysinfo_linux_test.go") - ;; This file uses cgroups. - (delete-file "runconfig/config_test.go") - ;; This file uses /var. - (delete-file "daemon/oci_linux_test.go") - ;; Signal tests fail in bizarre ways - (delete-file "pkg/signal/signal_linux_test.go"))) - (replace 'configure - (lambda _ - (setenv "DOCKER_BUILDTAGS" "seccomp") - (setenv "DOCKER_GITCOMMIT" (string-append "v" ,%docker-version)) - (setenv "VERSION" (string-append ,%docker-version "-ce")) - ;; Automatically use bundled dependencies. - ;; TODO: Unbundle - see file "vendor.conf". - (setenv "AUTO_GOPATH" "1") - ;; Respectively, strip the symbol table and debug - ;; information, and the DWARF symbol table. - (setenv "LDFLAGS" "-s -w") - ;; Make build faster - (setenv "GOCACHE" "/tmp"))) - (add-before 'build 'setup-go-environment - (assoc-ref go:%standard-phases 'setup-go-environment)) - (replace 'build - (lambda _ - ;; Our LD doesn't like the statically linked relocatable things - ;; that go produces, so install the dynamic version of - ;; dockerd instead. - (invoke "hack/make.sh" "dynbinary"))) - (replace 'check - (lambda _ - ;; The build process generated a file because the environment - ;; variable "AUTO_GOPATH" was set. Use it. - (setenv "GOPATH" (string-append (getcwd) "/.gopath")) - ;; ".gopath/src/github.com/docker/docker" is a link to the current - ;; directory and chdir would canonicalize to that. - ;; But go needs to have the uncanonicalized directory name, so - ;; store that. - (setenv "PWD" (string-append (getcwd) - "/.gopath/src/github.com/docker/docker")) - (with-directory-excursion ".gopath/src/github.com/docker/docker" - (invoke "hack/test/unit")) - (setenv "PWD" #f))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (out-bin (string-append out "/bin"))) - (install-file "bundles/dynbinary-daemon/dockerd" out-bin) - (install-file (string-append "bundles/dynbinary-daemon/dockerd-" - (getenv "VERSION")) - out-bin)))) - (add-after 'install 'remove-go-references - (assoc-ref go:%standard-phases 'remove-go-references))))) + (("\\<LookPath\\(\"buildkit-qemu-\"") "LooxPath(\"buildkit-qemu-\"") + ;; Fail on other unsubstituted LookPaths. + (("\\<LookPath\\(\"") "Guix_doesnt_want_LookPath\\(\"") + (("\\<LooxPath") "LookPath"))))) + (add-after 'patch-paths 'delete-failing-tests + (lambda _ + ;; Needs internet access. + (delete-file "builder/remotecontext/git/gitutils_test.go") + ;; Permission denied. + (delete-file "daemon/graphdriver/devmapper/devmapper_test.go") + ;; Operation not permitted (idtools.MkdirAllAndChown). + (delete-file "daemon/graphdriver/vfs/vfs_test.go") + ;; Timeouts after 5 min. + (delete-file "plugin/manager_linux_test.go") + ;; Operation not permitted. + (delete-file "daemon/graphdriver/aufs/aufs_test.go") + (delete-file "daemon/graphdriver/btrfs/btrfs_test.go") + (delete-file "daemon/graphdriver/overlay/overlay_test.go") + (delete-file "daemon/graphdriver/overlay2/overlay_test.go") + (delete-file "pkg/chrootarchive/archive_unix_test.go") + (delete-file "daemon/container_unix_test.go") + ;; This file uses cgroups and /proc. + (delete-file "pkg/sysinfo/sysinfo_linux_test.go") + ;; This file uses cgroups. + (delete-file "runconfig/config_test.go") + ;; This file uses /var. + (delete-file "daemon/oci_linux_test.go") + ;; Signal tests fail in bizarre ways + (delete-file "pkg/signal/signal_linux_test.go"))) + (replace 'configure + (lambda _ + (setenv "DOCKER_BUILDTAGS" "seccomp") + (setenv "DOCKER_GITCOMMIT" (string-append "v" #$%docker-version)) + (setenv "VERSION" (string-append #$%docker-version "-ce")) + ;; Automatically use bundled dependencies. + ;; TODO: Unbundle - see file "vendor.conf". + (setenv "AUTO_GOPATH" "1") + ;; Respectively, strip the symbol table and debug + ;; information, and the DWARF symbol table. + (setenv "LDFLAGS" "-s -w") + ;; Make build faster + (setenv "GOCACHE" "/tmp"))) + (add-before 'build 'setup-go-environment + (assoc-ref go:%standard-phases 'setup-go-environment)) + (replace 'build + (lambda _ + ;; Our LD doesn't like the statically linked relocatable things + ;; that go produces, so install the dynamic version of + ;; dockerd instead. + (invoke "hack/make.sh" "dynbinary"))) + (replace 'check + (lambda _ + ;; The build process generated a file because the environment + ;; variable "AUTO_GOPATH" was set. Use it. + (setenv "GOPATH" (string-append (getcwd) "/.gopath")) + ;; ".gopath/src/github.com/docker/docker" is a link to the current + ;; directory and chdir would canonicalize to that. + ;; But go needs to have the uncanonicalized directory name, so + ;; store that. + (setenv "PWD" (string-append (getcwd) + "/.gopath/src/github.com/docker/docker")) + (with-directory-excursion ".gopath/src/github.com/docker/docker" + (invoke "hack/test/unit")) + (setenv "PWD" #f))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (out-bin (string-append out "/bin"))) + (install-file "bundles/dynbinary-daemon/dockerd" out-bin) + (install-file (string-append "bundles/dynbinary-daemon/dockerd-" + (getenv "VERSION")) + out-bin)))) + (add-after 'install 'remove-go-references + (assoc-ref go:%standard-phases 'remove-go-references))))) (inputs - `(("btrfs-progs" ,btrfs-progs) - ("containerd" ,containerd) ; for containerd-shim - ("coreutils" ,coreutils) - ("dbus" ,dbus) - ("docker-proxy" ,docker-libnetwork-cmd-proxy) - ("e2fsprogs" ,e2fsprogs) - ("git" ,git) - ("iproute2" ,iproute) - ("iptables" ,iptables) - ("kmod" ,kmod) - ("libseccomp" ,libseccomp) - ("pigz" ,pigz) - ("procps" ,procps) - ("runc" ,runc) - ("util-linux" ,util-linux) - ("lvm2" ,lvm2) - ("tini" ,tini) - ("xfsprogs" ,xfsprogs) - ("xz" ,xz))) + (list btrfs-progs + containerd ; for containerd-shim + coreutils + dbus + docker-libnetwork-cmd-proxy + e2fsprogs + git + iproute + iptables + kmod + libseccomp + pigz + procps + runc + util-linux + lvm2 + tini + xfsprogs + xz)) (native-inputs (list eudev ; TODO: Should be propagated by lvm2 (.pc -> .pc) go gotestsum pkg-config)) -- 2.34.0
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.