buildEnv: improve file check to avoid false-positives
The original change in #55372 was supposed to fix the case where a store path which is a file should be placed into `buildEnv` which broke with a fairly misleading Perl error. Unfortunately this introduced a regression, `findFiles` can have targets that are files if the file isn't a store path. Rather than adding more obscure checks with probably further regressions, I figured that it's better to replicate the behavior of `lib.isStorePath` and explicitly check if the store path is a file and break in this case only. This should also fix recent staging issues.
This commit is contained in:
committed by
Frederik Rietdijk
parent
e2cd07b997
commit
9fcd3bffc2
@@ -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
|
||||
@@ -67,6 +74,6 @@ runCommand name
|
||||
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"
|
||||
'')
|
||||
|
||||
Reference in New Issue
Block a user