mirror of
https://github.com/NixOS/nix
synced 2025-07-07 22:33:57 +02:00
src/nix/prefetch: fix prefetch containing current directory instead of tarball
When --unpack was used the nix would add the current directory to the nix store instead of the content of unpacked. The reason for this is that std::distance already consumes the iterator. To fix this we re-instantiate the directory iterator in case the directory only contains a single entry.
This commit is contained in:
parent
8f280d72ff
commit
8cea1fbd97
2 changed files with 18 additions and 5 deletions
|
@ -54,6 +54,18 @@ test_tarball() {
|
|||
# with the content-addressing
|
||||
(! nix-instantiate --eval -E "fetchTree { type = \"tarball\"; url = file://$tarball; narHash = \"$hash\"; name = \"foo\"; }")
|
||||
|
||||
store_path=$(nix store prefetch-file --json "file://$tarball" | jq -r .storePath)
|
||||
if ! cmp -s "$store_path" "$tarball"; then
|
||||
echo "prefetched tarball differs from original: $store_path vs $tarball" >&2
|
||||
exit 1
|
||||
fi
|
||||
store_path2=$(nix store prefetch-file --json --unpack "file://$tarball" | jq -r .storePath)
|
||||
diff_output=$(diff -r "$store_path2" "$tarroot")
|
||||
if [ -n "$diff_output" ]; then
|
||||
echo "prefetched tarball differs from original: $store_path2 vs $tarroot" >&2
|
||||
echo "$diff_output"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_tarball '' cat
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue