mirror of
https://github.com/NixOS/nix
synced 2025-07-08 06:53:54 +02:00
Register flake source trees as GC roots
This ensures that flakes don't get garbage-collected, which is important to get nix-channel-like behaviour. For example, running $ nix build hydra: will create a GC root ~/.cache/nix/flake-closures/hydra -> /nix/store/xarfiqcwa4w8r4qpz1a769xxs8c3phgn-flake-closure where the contents/references of the linked file in the store are the flake source trees used by the 'hydra' flake: /nix/store/n6d5f5lkpfjbmkyby0nlg8y1wbkmbc7i-source /nix/store/vbkg4zy1qd29fnhflsv9k2j9jnbqd5m2-source /nix/store/z46xni7d47s5wk694359mq9ay353ar94-source Note that this in itself is not enough to allow offline use; the fetcher for the flakeref (e.g. fetchGit or downloadCached) must not fail if it cannot fetch the latest version of the file, so long as it knows a cached version. Issue #2868.
This commit is contained in:
parent
6b77bfc28d
commit
90fe1dfd2f
3 changed files with 63 additions and 3 deletions
|
@ -5,7 +5,10 @@ if [[ -z $(type -p git) ]]; then
|
|||
exit 99
|
||||
fi
|
||||
|
||||
export _NIX_FORCE_HTTP=1
|
||||
|
||||
clearStore
|
||||
rm -rf $TEST_HOME/.cache
|
||||
|
||||
registry=$TEST_ROOT/registry.json
|
||||
|
||||
|
@ -14,7 +17,7 @@ flake2Dir=$TEST_ROOT/flake2
|
|||
flake3Dir=$TEST_ROOT/flake3
|
||||
|
||||
for repo in $flake1Dir $flake2Dir $flake3Dir; do
|
||||
rm -rf $repo
|
||||
rm -rf $repo $repo.tmp
|
||||
mkdir $repo
|
||||
git -C $repo init
|
||||
git -C $repo config user.email "foobar@example.com"
|
||||
|
@ -142,7 +145,7 @@ nix build -o $TEST_ROOT/result --flake-registry $registry flake2:bar
|
|||
|
||||
# Or without a registry.
|
||||
# FIXME: shouldn't need '--flake-registry /no-registry'?
|
||||
nix build -o $TEST_ROOT/result --flake-registry /no-registry file://$flake2Dir:bar
|
||||
nix build -o $TEST_ROOT/result --flake-registry /no-registry file://$flake2Dir:bar --tarball-ttl 0
|
||||
|
||||
# Test whether indirect dependencies work.
|
||||
nix build -o $TEST_ROOT/result --flake-registry $registry $flake3Dir:xyzzy
|
||||
|
@ -184,3 +187,15 @@ nix build -o $TEST_ROOT/result --flake-registry $registry $flake3Dir:sth 2>&1 |
|
|||
nix flake list --flake-registry file://$registry | grep -q flake3
|
||||
mv $registry $registry.tmp
|
||||
nix flake list --flake-registry file://$registry --tarball-ttl 0 | grep -q flake3
|
||||
mv $registry.tmp $registry
|
||||
|
||||
# Test whether flakes are registered as GC roots for offline use.
|
||||
rm -rf $TEST_HOME/.cache
|
||||
nix build -o $TEST_ROOT/result --flake-registry file://$registry file://$flake2Dir:bar
|
||||
mv $flake1Dir $flake1Dir.tmp
|
||||
mv $flake2Dir $flake2Dir.tmp
|
||||
nix-store --gc
|
||||
nix build -o $TEST_ROOT/result --flake-registry file://$registry file://$flake2Dir:bar
|
||||
nix build -o $TEST_ROOT/result --flake-registry file://$registry file://$flake2Dir:bar --tarball-ttl 0
|
||||
mv $flake1Dir.tmp $flake1Dir
|
||||
mv $flake2Dir.tmp $flake2Dir
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue