Register flake-registry.json as a GC root again

This commit is contained in:
Eelco Dolstra 2020-03-19 11:45:34 +01:00
parent 1c127e6a82
commit 8aa354fdfd
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
2 changed files with 7 additions and 4 deletions

View file

@ -127,10 +127,12 @@ static std::shared_ptr<Registry> getGlobalRegistry(ref<Store> store)
static auto reg = [&]() {
auto path = settings.flakeRegistry;
if (!hasPrefix(path, "/"))
// FIXME: register as GC root.
// FIXME: if download fails, use previous version if available.
path = store->toRealPath(downloadFile(store, path, "flake-registry.json", false).storePath);
if (!hasPrefix(path, "/")) {
auto storePath = downloadFile(store, path, "flake-registry.json", false).storePath;
if (auto store2 = store.dynamic_pointer_cast<LocalFSStore>())
store2->addPermRoot(storePath, getCacheDir() + "/nix/flake-registry.json", true);
path = store->toRealPath(storePath);
}
return Registry::read(path, Registry::Global);
}();

View file

@ -269,6 +269,7 @@ nix build -o $TEST_ROOT/result $flake3Dir#sth 2>&1 | grep 'unsupported edition'
# Test whether registry caching works.
nix flake list --flake-registry file://$registry | grep -q flake3
mv $registry $registry.tmp
nix-store --gc
nix flake list --flake-registry file://$registry --refresh | grep -q flake3
mv $registry.tmp $registry