summary refs log tree commit diff
diff options
context:
space:
mode:
authorregnat <rg@regnat.ovh>2021-04-26 17:21:17 +0200
committerregnat <rg@regnat.ovh>2021-04-28 10:25:49 +0200
commit14f66d60a789da5cc48d0602b390a267f016143d (patch)
treef7edeac77c0d8c7d344df394dcda07f8835be9eb
parent559c5792ef1d0ef413e0abd5ddd07409989ceb1c (diff)
downloadnixpkgs-14f66d60a789da5cc48d0602b390a267f016143d.tar
nixpkgs-14f66d60a789da5cc48d0602b390a267f016143d.tar.gz
nixpkgs-14f66d60a789da5cc48d0602b390a267f016143d.tar.bz2
nixpkgs-14f66d60a789da5cc48d0602b390a267f016143d.tar.lz
nixpkgs-14f66d60a789da5cc48d0602b390a267f016143d.tar.xz
nixpkgs-14f66d60a789da5cc48d0602b390a267f016143d.tar.zst
nixpkgs-14f66d60a789da5cc48d0602b390a267f016143d.zip
Make the bootsrap respect the contentAddressedByDefault setting
Patch every `derivation` call in the bootsrap process to add it a
conditional `__contentAddressed` parameter.

That way, passing `contentAddressedByDefault` means that the entire
build closure of a system can be content addressed
-rw-r--r--pkgs/stdenv/darwin/default.nix8
-rw-r--r--pkgs/stdenv/freebsd/default.nix8
-rw-r--r--pkgs/stdenv/generic/default.nix5
-rw-r--r--pkgs/stdenv/linux/bootstrap-tools-musl/default.nix6
-rw-r--r--pkgs/stdenv/linux/bootstrap-tools/default.nix6
-rw-r--r--pkgs/stdenv/linux/default.nix11
6 files changed, 33 insertions, 11 deletions
diff --git a/pkgs/stdenv/darwin/default.nix b/pkgs/stdenv/darwin/default.nix
index a7b91a82a9d..d50b60b0ba1 100644
--- a/pkgs/stdenv/darwin/default.nix
+++ b/pkgs/stdenv/darwin/default.nix
@@ -44,7 +44,7 @@ in rec {
     stripAllFlags=" " # the Darwin "strip" command doesn't know "-s"
   '';
 
-  bootstrapTools = derivation {
+  bootstrapTools = derivation ({
     inherit system;
 
     name    = "bootstrap-tools";
@@ -54,7 +54,11 @@ in rec {
     inherit (bootstrapFiles) mkdir bzip2 cpio tarball;
 
     __impureHostDeps = commonImpureHostDeps;
-  };
+  } // lib.optionalAttrs (config.contentAddressedByDefault or false) {
+    __contentAddressed = true;
+    outputHashAlgo = "sha256";
+    outputHashMode = "recursive";
+  });
 
   stageFun = step: last: {shell             ? "${bootstrapTools}/bin/bash",
                           overrides         ? (self: super: {}),
diff --git a/pkgs/stdenv/freebsd/default.nix b/pkgs/stdenv/freebsd/default.nix
index 9a890532b79..ddcdc6a66e0 100644
--- a/pkgs/stdenv/freebsd/default.nix
+++ b/pkgs/stdenv/freebsd/default.nix
@@ -170,7 +170,7 @@ in
   ({}: {
     __raw = true;
 
-    bootstrapTools = derivation {
+    bootstrapTools = derivation ({
       inherit system;
       inherit make bash coreutils findutils
         diffutils grep patch gawk cpio sed
@@ -182,7 +182,11 @@ in
       buildInputs = [ make ];
       mkdir = "/bin/mkdir";
       ln = "/bin/ln";
-    };
+    } // lib.optionalAttrs (config.contentAddressedByDefault or false) {
+      __contentAddressed = true;
+      outputHashAlgo = "sha256";
+      outputHashMode = "recursive";
+    });
   })
 
   ({ bootstrapTools, ... }: rec {
diff --git a/pkgs/stdenv/generic/default.nix b/pkgs/stdenv/generic/default.nix
index c3582b16677..516d2d3c177 100644
--- a/pkgs/stdenv/generic/default.nix
+++ b/pkgs/stdenv/generic/default.nix
@@ -84,6 +84,11 @@ let
       allowedRequisites = allowedRequisites
         ++ defaultNativeBuildInputs ++ defaultBuildInputs;
     }
+    // lib.optionalAttrs (config.contentAddressedByDefault or false) {
+      __contentAddressed = true;
+      outputHashAlgo = "sha256";
+      outputHashMode = "recursive";
+    }
     // {
       inherit name;
 
diff --git a/pkgs/stdenv/linux/bootstrap-tools-musl/default.nix b/pkgs/stdenv/linux/bootstrap-tools-musl/default.nix
index 6118585d545..d690f402672 100644
--- a/pkgs/stdenv/linux/bootstrap-tools-musl/default.nix
+++ b/pkgs/stdenv/linux/bootstrap-tools-musl/default.nix
@@ -1,6 +1,6 @@
-{ system, bootstrapFiles }:
+{ system, bootstrapFiles, extraAttrs }:
 
-derivation {
+derivation ({
   name = "bootstrap-tools";
 
   builder = bootstrapFiles.busybox;
@@ -15,4 +15,4 @@ derivation {
   langC = true;
   langCC = true;
   isGNU = true;
-}
+} // extraAttrs)
diff --git a/pkgs/stdenv/linux/bootstrap-tools/default.nix b/pkgs/stdenv/linux/bootstrap-tools/default.nix
index 6118585d545..d690f402672 100644
--- a/pkgs/stdenv/linux/bootstrap-tools/default.nix
+++ b/pkgs/stdenv/linux/bootstrap-tools/default.nix
@@ -1,6 +1,6 @@
-{ system, bootstrapFiles }:
+{ system, bootstrapFiles, extraAttrs }:
 
-derivation {
+derivation ({
   name = "bootstrap-tools";
 
   builder = bootstrapFiles.busybox;
@@ -15,4 +15,4 @@ derivation {
   langC = true;
   langCC = true;
   isGNU = true;
-}
+} // extraAttrs)
diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix
index f753af49926..6d6d0384a7f 100644
--- a/pkgs/stdenv/linux/default.nix
+++ b/pkgs/stdenv/linux/default.nix
@@ -61,7 +61,16 @@ let
 
 
   # Download and unpack the bootstrap tools (coreutils, GCC, Glibc, ...).
-  bootstrapTools = import (if localSystem.libc == "musl" then ./bootstrap-tools-musl else ./bootstrap-tools) { inherit system bootstrapFiles; };
+  bootstrapTools = import (if localSystem.libc == "musl" then ./bootstrap-tools-musl else ./bootstrap-tools) {
+    inherit system bootstrapFiles;
+    extraAttrs = lib.optionalAttrs
+      (config.contentAddressedByDefault or false)
+      {
+        __contentAddressed = true;
+        outputHashAlgo = "sha256";
+        outputHashMode = "recursive";
+      };
+  };
 
   getLibc = stage: stage.${localSystem.libc};