diff options
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/docker/default.nix | 21 | ||||
-rw-r--r-- | pkgs/build-support/docker/examples.nix | 9 | ||||
-rw-r--r-- | pkgs/build-support/fetchzip/default.nix | 11 |
3 files changed, 28 insertions, 13 deletions
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index bc79f9ff12fd..0cee1dd2916f 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -40,7 +40,7 @@ rec { , imageDigest , sha256 , os ? "linux" - , arch ? "x86_64" + , arch ? "amd64" # This used to set a tag to the pulled image , finalImageTag ? "latest" , name ? fixName "docker-image-${imageName}-${finalImageTag}.tar" @@ -450,11 +450,18 @@ rec { baseName = baseNameOf name; # Create a JSON blob of the configuration. Set the date to unix zero. - baseJson = writeText "${baseName}-config.json" (builtins.toJSON { - inherit created config; - architecture = "amd64"; - os = "linux"; - }); + baseJson = let + pure = writeText "${baseName}-config.json" (builtins.toJSON { + inherit created config; + architecture = "amd64"; + os = "linux"; + }); + impure = runCommand "${baseName}-config.json" + { buildInputs = [ jq ]; } + '' + jq ".created = \"$(TZ=utc date --iso-8601="seconds")\"" ${pure} > $out + ''; + in if created == "now" then impure else pure; layer = if runAsRoot == null @@ -577,7 +584,7 @@ rec { currentID=$layerID while [[ -n "$currentID" ]]; do layerChecksum=$(sha256sum image/$currentID/layer.tar | cut -d ' ' -f1) - imageJson=$(echo "$imageJson" | jq ".history |= [{\"created\": \"${created}\"}] + .") + imageJson=$(echo "$imageJson" | jq ".history |= [{\"created\": \"$(jq -r .created ${baseJson})\"}] + .") imageJson=$(echo "$imageJson" | jq ".rootfs.diff_ids |= [\"sha256:$layerChecksum\"] + .") manifestJson=$(echo "$manifestJson" | jq ".[0].Layers |= [\"$currentID/layer.tar\"] + .") diff --git a/pkgs/build-support/docker/examples.nix b/pkgs/build-support/docker/examples.nix index ec2667310cdd..822e0dbb31f2 100644 --- a/pkgs/build-support/docker/examples.nix +++ b/pkgs/build-support/docker/examples.nix @@ -141,4 +141,13 @@ rec { runAsRoot = ''echo "(runAsRoot)" > runAsRoot''; extraCommands = ''echo "(extraCommand)" > extraCommands''; }; + + # 9. Ensure that setting created to now results in a date which + # isn't the epoch + 1 + unstableDate = pkgs.dockerTools.buildImage { + name = "unstable-date"; + tag = "latest"; + contents = [ pkgs.coreutils ]; + created = "now"; + }; } diff --git a/pkgs/build-support/fetchzip/default.nix b/pkgs/build-support/fetchzip/default.nix index 4a5381d71f20..f1b9b9290d4c 100644 --- a/pkgs/build-support/fetchzip/default.nix +++ b/pkgs/build-support/fetchzip/default.nix @@ -14,7 +14,7 @@ , name ? "source" , ... } @ args: -lib.overrideDerivation (fetchurl ({ +(fetchurl ({ inherit name; recursiveHash = true; @@ -23,8 +23,6 @@ lib.overrideDerivation (fetchurl ({ postFetch = '' - export PATH=${unzip}/bin:$PATH - unpackDir="$TMPDIR/unpack" mkdir "$unpackDir" cd "$unpackDir" @@ -48,6 +46,7 @@ lib.overrideDerivation (fetchurl ({ mv "$unpackDir" "$out" '') #*/ + extraPostFetch; -} // removeAttrs args [ "stripRoot" "extraPostFetch" ])) -# Hackety-hack: we actually need unzip hooks, too -(x: {nativeBuildInputs = x.nativeBuildInputs++ [unzip];}) +} // removeAttrs args [ "stripRoot" "extraPostFetch" ])).overrideAttrs (x: { + # Hackety-hack: we actually need unzip hooks, too + nativeBuildInputs = x.nativeBuildInputs ++ [ unzip ]; +}) |