diff options
author | Brian McKenna <brian@brianmckenna.org> | 2016-04-15 21:46:42 +1000 |
---|---|---|
committer | Brian McKenna <brian@brianmckenna.org> | 2016-04-16 01:16:49 +1000 |
commit | 0167b61ef45c3cf8223d67893956144c65d811bf (patch) | |
tree | 52b5f8f9cca116515b92b8021b623fbe2c1335b0 /pkgs/build-support | |
parent | 8b3c4348abf6e5d64c989797f7cefc17ff3e3b44 (diff) | |
download | nixpkgs-0167b61ef45c3cf8223d67893956144c65d811bf.tar nixpkgs-0167b61ef45c3cf8223d67893956144c65d811bf.tar.gz nixpkgs-0167b61ef45c3cf8223d67893956144c65d811bf.tar.bz2 nixpkgs-0167b61ef45c3cf8223d67893956144c65d811bf.tar.lz nixpkgs-0167b61ef45c3cf8223d67893956144c65d811bf.tar.xz nixpkgs-0167b61ef45c3cf8223d67893956144c65d811bf.tar.zst nixpkgs-0167b61ef45c3cf8223d67893956144c65d811bf.zip |
dockerTools: only add "/nix" if it exists
The /nix path in 4d200538 of the layer tar didn't exist for some packages, such as cacert. This is because cacert just creates an /etc directory and doesn't depend on any other /nix paths. If we tried putting this directory in the tar and using overlayfs with it, we'd get "Invalid argument" when trying to remove the directory. We now check whether the closure is non-empty before telling tar to store the /nix directory. Fixes #14710.
Diffstat (limited to 'pkgs/build-support')
-rw-r--r-- | pkgs/build-support/docker/default.nix | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/pkgs/build-support/docker/default.nix b/pkgs/build-support/docker/default.nix index f874354b15e..5ead82dee8b 100644 --- a/pkgs/build-support/docker/default.nix +++ b/pkgs/build-support/docker/default.nix @@ -286,17 +286,20 @@ EOF cp ${layer}/* temp/ chmod ug+w temp/* - # FIXME: might not be /nix/store - echo '/nix' >> layerFiles - echo '/nix/store' >> layerFiles for dep in $(cat $layerClosure); do - find $dep >> layerFiles + find $dep -path "${layer}" -prune -o -print >> layerFiles done + if [ -s layerFiles ]; then + # FIXME: might not be /nix/store + echo '/nix' >> layerFiles + echo '/nix/store' >> layerFiles + fi + echo Adding layer tar -tf temp/layer.tar >> baseFiles sed 's/^\.//' -i baseFiles - comm <(sort -n baseFiles|uniq) <(sort -n layerFiles|uniq|grep -v ${layer}) -1 -3 > newFiles + comm <(sort -u baseFiles) <(sort -u layerFiles) -1 -3 > newFiles tar -rpf temp/layer.tar --mtime=0 --no-recursion --files-from newFiles 2>/dev/null || true echo Adding meta |