about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPol Dellaiera <pol.dellaiera@protonmail.com>2024-06-19 14:23:10 +0200
committerGitHub <noreply@github.com>2024-06-19 14:23:10 +0200
commit0bfc853219b4aab5e1b46fdea3e529f5b2a3b86d (patch)
treef3211be813931c510519b96fac2ee2cb9d5c94f6
parentbf5269942f70a81b0a7f4a4688655059c3ca30c7 (diff)
parent28f442f860a4fc0dc9349f43507ddb9938491ccd (diff)
Merge pull request #318922 from Gerg-L/docker2
docker: migrate to buildGoModule
-rw-r--r--pkgs/applications/virtualization/docker/default.nix37
1 files changed, 15 insertions, 22 deletions
diff --git a/pkgs/applications/virtualization/docker/default.nix b/pkgs/applications/virtualization/docker/default.nix
index aa040938ee7e0..3d096c3389f9d 100644
--- a/pkgs/applications/virtualization/docker/default.nix
+++ b/pkgs/applications/virtualization/docker/default.nix
@@ -10,7 +10,7 @@ rec {
       , tiniRev, tiniHash
       , buildxSupport ? true, composeSupport ? true, sbomSupport ? false
       # package dependencies
-      , stdenv, fetchFromGitHub, fetchpatch, buildGoPackage
+      , stdenv, fetchFromGitHub, fetchpatch, buildGoModule
       , makeWrapper, installShellFiles, pkg-config, glibc
       , go-md2man, go, containerd, runc, tini, libtool
       , sqlite, iproute2, docker-buildx, docker-compose, docker-sbom
@@ -23,7 +23,7 @@ rec {
       , withSeccomp ? stdenv.isLinux, libseccomp
     }:
   let
-    docker-runc = runc.overrideAttrs (oldAttrs: {
+    docker-runc = runc.overrideAttrs {
       pname = "docker-runc";
       inherit version;
 
@@ -36,7 +36,7 @@ rec {
 
       # docker/runc already include these patches / are not applicable
       patches = [];
-    });
+    };
 
     docker-containerd = containerd.overrideAttrs (oldAttrs: {
       pname = "docker-containerd";
@@ -53,7 +53,7 @@ rec {
         ++ lib.optionals withSeccomp [ libseccomp ];
     });
 
-    docker-tini = tini.overrideAttrs (oldAttrs: {
+    docker-tini = tini.overrideAttrs {
       pname = "docker-init";
       inherit version;
 
@@ -70,7 +70,7 @@ rec {
       buildInputs = [ glibc glibc.static ];
 
       env.NIX_CFLAGS_COMPILE = "-DMINIMAL=ON";
-    });
+    };
 
     moby-src = fetchFromGitHub {
       owner = "moby";
@@ -79,13 +79,13 @@ rec {
       hash = mobyHash;
     };
 
-    moby = buildGoPackage (lib.optionalAttrs stdenv.isLinux rec {
+    moby = buildGoModule (lib.optionalAttrs stdenv.isLinux rec {
       pname = "moby";
       inherit version;
 
       src = moby-src;
 
-      goPackagePath = "github.com/docker/docker";
+      vendorHash = null;
 
       nativeBuildInputs = [ makeWrapper pkg-config go-md2man go libtool installShellFiles ];
       buildInputs = [ sqlite ]
@@ -126,16 +126,13 @@ rec {
       buildPhase = ''
         export GOCACHE="$TMPDIR/go-cache"
         # build engine
-        cd ./go/src/${goPackagePath}
         export AUTO_GOPATH=1
         export DOCKER_GITCOMMIT="${cliRev}"
         export VERSION="${version}"
         ./hack/make.sh dynbinary
-        cd -
       '';
 
       installPhase = ''
-        cd ./go/src/${goPackagePath}
         install -Dm755 ./bundles/dynbinary-daemon/dockerd $out/libexec/docker/dockerd
         install -Dm755 ./bundles/dynbinary-daemon/docker-proxy $out/libexec/docker/docker-proxy
 
@@ -149,7 +146,7 @@ rec {
 
         # systemd
         install -Dm644 ./contrib/init/systemd/docker.service $out/etc/systemd/system/docker.service
-        substituteInPlace $out/etc/systemd/system/docker.service --replace /usr/bin/dockerd $out/bin/dockerd
+        substituteInPlace $out/etc/systemd/system/docker.service --replace-fail /usr/bin/dockerd $out/bin/dockerd
         install -Dm644 ./contrib/init/systemd/docker.socket $out/etc/systemd/system/docker.socket
 
         # rootless Docker
@@ -169,7 +166,7 @@ rec {
       ++ lib.optional sbomSupport docker-sbom;
     pluginsRef = symlinkJoin { name = "docker-plugins"; paths = plugins; };
   in
-  buildGoPackage (lib.optionalAttrs (!clientOnly) {
+  buildGoModule (lib.optionalAttrs (!clientOnly) {
     # allow overrides of docker components
     # TODO: move packages out of the let...in into top-level to allow proper overrides
     inherit docker-runc docker-containerd docker-tini moby;
@@ -184,7 +181,7 @@ rec {
       hash = cliHash;
     };
 
-    goPackagePath = "github.com/docker/cli";
+    vendorHash = null;
 
     nativeBuildInputs = [
       makeWrapper pkg-config go-md2man go libtool installShellFiles
@@ -197,9 +194,9 @@ rec {
 
     postPatch = ''
       patchShebangs man scripts/build/
-      substituteInPlace ./scripts/build/.variables --replace "set -eu" ""
+      substituteInPlace ./scripts/build/.variables --replace-fail "set -eu" ""
     '' + lib.optionalString (plugins != []) ''
-      substituteInPlace ./cli-plugins/manager/manager_unix.go --replace /usr/libexec/docker/cli-plugins \
+      substituteInPlace ./cli-plugins/manager/manager_unix.go --replace-fail /usr/libexec/docker/cli-plugins \
           "${pluginsRef}/libexec/docker/cli-plugins"
     '';
 
@@ -207,7 +204,6 @@ rec {
     buildPhase = ''
       export GOCACHE="$TMPDIR/go-cache"
 
-      cd ./go/src/${goPackagePath}
       # Mimic AUTO_GOPATH
       mkdir -p .gopath/src/github.com/docker/
       ln -sf $PWD .gopath/src/github.com/docker/cli
@@ -215,17 +211,14 @@ rec {
       export GITCOMMIT="${cliRev}"
       export VERSION="${version}"
       export BUILDTIME="1970-01-01T00:00:00Z"
-      source ./scripts/build/.variables
-      export CGO_ENABLED=1
-      go build -tags pkcs11 --ldflags "$GO_LDFLAGS" github.com/docker/cli/cmd/docker
-      cd -
+      make dynbinary
+
     '';
 
     outputs = ["out"] ++ lib.optional (lib.versionOlder version "23") "man";
 
     installPhase = ''
-      cd ./go/src/${goPackagePath}
-      install -Dm755 ./docker $out/libexec/docker/docker
+      install -Dm755 ./build/docker $out/libexec/docker/docker
 
       makeWrapper $out/libexec/docker/docker $out/bin/docker \
         --prefix PATH : "$out/libexec/docker:$extraPath"