about summary refs log tree commit diff
path: root/pkgs/build-support
diff options
context:
space:
mode:
authorFrederik Rietdijk <freddyrietdijk@fridh.nl>2019-03-01 09:06:20 +0100
committerFrederik Rietdijk <freddyrietdijk@fridh.nl>2019-03-01 09:06:20 +0100
commit2fcb11a2442b27834db87b2f62511037c31b5e36 (patch)
treee9d38370aac7632cd35207180dc7c87d2bb6171d /pkgs/build-support
parent456ff62ff820bbb2debd4568a775d88e61fd8bd1 (diff)
parentfc4a8f63c4e46652d484b127162641be36481363 (diff)
downloadnixlib-2fcb11a2442b27834db87b2f62511037c31b5e36.tar
nixlib-2fcb11a2442b27834db87b2f62511037c31b5e36.tar.gz
nixlib-2fcb11a2442b27834db87b2f62511037c31b5e36.tar.bz2
nixlib-2fcb11a2442b27834db87b2f62511037c31b5e36.tar.lz
nixlib-2fcb11a2442b27834db87b2f62511037c31b5e36.tar.xz
nixlib-2fcb11a2442b27834db87b2f62511037c31b5e36.tar.zst
nixlib-2fcb11a2442b27834db87b2f62511037c31b5e36.zip
Merge staging-next into master
Diffstat (limited to 'pkgs/build-support')
-rw-r--r--pkgs/build-support/build-fhs-userenv/env.nix1
-rwxr-xr-xpkgs/build-support/buildenv/builder.pl12
-rw-r--r--pkgs/build-support/buildenv/default.nix12
-rw-r--r--pkgs/build-support/substitute-files/substitute-all-files.nix1
-rw-r--r--pkgs/build-support/substitute/substitute-all.nix1
5 files changed, 25 insertions, 2 deletions
diff --git a/pkgs/build-support/build-fhs-userenv/env.nix b/pkgs/build-support/build-fhs-userenv/env.nix
index 23568f51b23e..c0f741b62886 100644
--- a/pkgs/build-support/build-fhs-userenv/env.nix
+++ b/pkgs/build-support/build-fhs-userenv/env.nix
@@ -196,4 +196,5 @@ in stdenv.mkDerivation {
     ${if isMultiBuild then extraBuildCommandsMulti else ""}
   '';
   preferLocalBuild = true;
+  allowSubstitutes = false;
 }
diff --git a/pkgs/build-support/buildenv/builder.pl b/pkgs/build-support/buildenv/builder.pl
index 678f5a3fe9e6..b699d762d29c 100755
--- a/pkgs/build-support/buildenv/builder.pl
+++ b/pkgs/build-support/buildenv/builder.pl
@@ -26,6 +26,13 @@ sub isInPathsToLink {
     return 0;
 }
 
+# Similar to `lib.isStorePath`
+sub isStorePath {
+    my $path = shift;
+    my $storePath = "@storeDir@";
+
+    return substr($path, 0, 1) eq "/" && dirname($path) eq $storePath;
+}
 
 # For each activated package, determine what symlinks to create.
 
@@ -84,6 +91,11 @@ sub checkCollision {
 sub findFiles {
     my ($relName, $target, $baseName, $ignoreCollisions, $checkCollisionContents, $priority) = @_;
 
+    # The store path must not be a file
+    if (-f $target && isStorePath $target) {
+        die "The store path $target is a file and can't be merged into an environment using pkgs.buildEnv!";
+    }
+
     # Urgh, hacky...
     return if
         $relName eq "/propagated-build-inputs" ||
diff --git a/pkgs/build-support/buildenv/default.nix b/pkgs/build-support/buildenv/default.nix
index 41a1e67ef428..7f2427777f92 100644
--- a/pkgs/build-support/buildenv/default.nix
+++ b/pkgs/build-support/buildenv/default.nix
@@ -2,7 +2,7 @@
 # a fork of the buildEnv in the Nix distribution.  Most changes should
 # eventually be merged back into the Nix distribution.
 
-{ buildPackages, runCommand, lib }:
+{ buildPackages, runCommand, lib, substituteAll }:
 
 lib.makeOverridable
 ({ name
@@ -43,6 +43,13 @@ lib.makeOverridable
 , meta ? {}
 }:
 
+let
+  builder = substituteAll {
+    src = ./builder.pl;
+    inherit (builtins) storeDir;
+  };
+in
+
 runCommand name
   rec {
     inherit manifest ignoreCollisions checkCollisionContents passthru
@@ -63,10 +70,11 @@ runCommand name
       priority = drv.meta.priority or 5;
     }) paths);
     preferLocalBuild = true;
+    allowSubstitutes = false;
     # XXX: The size is somewhat arbitrary
     passAsFile = if builtins.stringLength pkgs >= 128*1024 then [ "pkgs" ] else null;
   }
   ''
-    ${buildPackages.perl}/bin/perl -w ${./builder.pl}
+    ${buildPackages.perl}/bin/perl -w ${builder}
     eval "$postBuild"
   '')
diff --git a/pkgs/build-support/substitute-files/substitute-all-files.nix b/pkgs/build-support/substitute-files/substitute-all-files.nix
index aa600a76650c..66feb695c418 100644
--- a/pkgs/build-support/substitute-files/substitute-all-files.nix
+++ b/pkgs/build-support/substitute-files/substitute-all-files.nix
@@ -22,4 +22,5 @@ stdenv.mkDerivation ({
     eval "$postInstall"
   '';
   preferLocalBuild = true;
+  allowSubstitutes = false;
 } // args)
diff --git a/pkgs/build-support/substitute/substitute-all.nix b/pkgs/build-support/substitute/substitute-all.nix
index 7fd46f95f998..57b160bbe901 100644
--- a/pkgs/build-support/substitute/substitute-all.nix
+++ b/pkgs/build-support/substitute/substitute-all.nix
@@ -8,4 +8,5 @@ stdenvNoCC.mkDerivation ({
   builder = ./substitute-all.sh;
   inherit (args) src;
   preferLocalBuild = true;
+  allowSubstitutes = false;
 } // args)