diff options
author | Maximilian Bosch <maximilian@mbosch.me> | 2019-02-07 03:20:07 +0100 |
---|---|---|
committer | Frederik Rietdijk <freddyrietdijk@fridh.nl> | 2019-02-19 07:56:44 +0100 |
commit | 1cab56e01a284d8fb29ae6b07616732f5bd3079b (patch) | |
tree | 877c136094e21664141b045732299e657887a353 /pkgs/build-support/buildenv | |
parent | b1bbd94bb680dbcb1c7b55128d129d5cdd3f81c3 (diff) | |
download | nixpkgs-1cab56e01a284d8fb29ae6b07616732f5bd3079b.tar nixpkgs-1cab56e01a284d8fb29ae6b07616732f5bd3079b.tar.gz nixpkgs-1cab56e01a284d8fb29ae6b07616732f5bd3079b.tar.bz2 nixpkgs-1cab56e01a284d8fb29ae6b07616732f5bd3079b.tar.lz nixpkgs-1cab56e01a284d8fb29ae6b07616732f5bd3079b.tar.xz nixpkgs-1cab56e01a284d8fb29ae6b07616732f5bd3079b.tar.zst nixpkgs-1cab56e01a284d8fb29ae6b07616732f5bd3079b.zip |
buildEnv: break with a proper error if one path is actually a file
I noticed by creating `buildEnv` where I accidentally put a derivation from `pkgs.writeText` into `paths` and got a broken build with the following misleading error message: ``` Use of uninitialized value $stat1 in numeric ne (!=) at /nix/store/9g4wc31j7a2xp22xpgwr0qssfxahxdzl-builder.pl line 74. Use of uninitialized value $stat1 in bitwise and (&) at /nix/store/9g4wc31j7a2xp22xpgwr0qssfxahxdzl-builder.pl line 75. different permissions in `' and `/nix/store/0vy5ss91laxvwkyvrbld5hv27i88qk5w-noise': 0000 <-> 0444 at /nix/store/9g4wc31j7a2xp22xpgwr0qssfxahxdzl-builder.pl line 75. ``` It can be reproduced with an expression like this: ``` nix { pkgs ? import <nixpkgs> { } }: let file = pkgs.writeText "test" '' content ''; in pkgs.buildEnv { name = "test-env"; paths = [ /* ... */ file ]; } ```
Diffstat (limited to 'pkgs/build-support/buildenv')
-rwxr-xr-x | pkgs/build-support/buildenv/builder.pl | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/pkgs/build-support/buildenv/builder.pl b/pkgs/build-support/buildenv/builder.pl index 678f5a3fe9e..1f77edf86cb 100755 --- a/pkgs/build-support/buildenv/builder.pl +++ b/pkgs/build-support/buildenv/builder.pl @@ -84,6 +84,10 @@ sub checkCollision { sub findFiles { my ($relName, $target, $baseName, $ignoreCollisions, $checkCollisionContents, $priority) = @_; + if (-f $target) { + die "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" || |