forked from lix-project/lix
Merge pull request #8805 from tweag/fix-add-to-store-existing
[V2] Fix misread of source if path is already valid
This commit is contained in:
commit
d00fe5f225
|
@ -1196,6 +1196,15 @@ void LocalStore::addToStore(const ValidPathInfo & info, Source & source,
|
||||||
if (checkSigs && pathInfoIsUntrusted(info))
|
if (checkSigs && pathInfoIsUntrusted(info))
|
||||||
throw Error("cannot add path '%s' because it lacks a signature by a trusted key", printStorePath(info.path));
|
throw Error("cannot add path '%s' because it lacks a signature by a trusted key", printStorePath(info.path));
|
||||||
|
|
||||||
|
/* In case we are not interested in reading the NAR: discard it. */
|
||||||
|
bool narRead = false;
|
||||||
|
Finally cleanup = [&]() {
|
||||||
|
if (!narRead) {
|
||||||
|
ParseSink sink;
|
||||||
|
parseDump(sink, source);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
addTempRoot(info.path);
|
addTempRoot(info.path);
|
||||||
|
|
||||||
if (repair || !isValidPath(info.path)) {
|
if (repair || !isValidPath(info.path)) {
|
||||||
|
@ -1220,6 +1229,7 @@ void LocalStore::addToStore(const ValidPathInfo & info, Source & source,
|
||||||
|
|
||||||
TeeSource wrapperSource { source, hashSink };
|
TeeSource wrapperSource { source, hashSink };
|
||||||
|
|
||||||
|
narRead = true;
|
||||||
restorePath(realPath, wrapperSource);
|
restorePath(realPath, wrapperSource);
|
||||||
|
|
||||||
auto hashResult = hashSink.finish();
|
auto hashResult = hashSink.finish();
|
||||||
|
|
|
@ -90,6 +90,7 @@ nix_tests = \
|
||||||
zstd.sh \
|
zstd.sh \
|
||||||
compression-levels.sh \
|
compression-levels.sh \
|
||||||
nix-copy-ssh.sh \
|
nix-copy-ssh.sh \
|
||||||
|
nix-copy-ssh-ng.sh \
|
||||||
post-hook.sh \
|
post-hook.sh \
|
||||||
function-trace.sh \
|
function-trace.sh \
|
||||||
flakes/config.sh \
|
flakes/config.sh \
|
||||||
|
|
18
tests/nix-copy-ssh-ng.sh
Normal file
18
tests/nix-copy-ssh-ng.sh
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
source common.sh
|
||||||
|
|
||||||
|
clearStore
|
||||||
|
clearCache
|
||||||
|
|
||||||
|
remoteRoot=$TEST_ROOT/store2
|
||||||
|
chmod -R u+w "$remoteRoot" || true
|
||||||
|
rm -rf "$remoteRoot"
|
||||||
|
|
||||||
|
outPath=$(nix-build --no-out-link dependencies.nix)
|
||||||
|
|
||||||
|
nix store ping --store "ssh-ng://localhost?store=$NIX_STORE_DIR&remote-store=$remoteRoot%3fstore=$NIX_STORE_DIR%26real=$remoteRoot$NIX_STORE_DIR"
|
||||||
|
|
||||||
|
# Regression test for https://github.com/NixOS/nix/issues/6253
|
||||||
|
nix copy --to "ssh-ng://localhost?store=$NIX_STORE_DIR&remote-store=$remoteRoot%3fstore=$NIX_STORE_DIR%26real=$remoteRoot$NIX_STORE_DIR" $outPath --no-check-sigs &
|
||||||
|
nix copy --to "ssh-ng://localhost?store=$NIX_STORE_DIR&remote-store=$remoteRoot%3fstore=$NIX_STORE_DIR%26real=$remoteRoot$NIX_STORE_DIR" $outPath --no-check-sigs
|
||||||
|
|
||||||
|
[ -f $remoteRoot$outPath/foobar ]
|
Loading…
Reference in a new issue