mirror of
https://github.com/NixOS/nix.git
synced 2025-11-09 03:56:01 +01:00
fixup: cached case
I couldn't come up with a test that failed before this, but my existing
test still passes so 🤷
This commit is contained in:
parent
bccdb95a86
commit
9c832a08b0
2 changed files with 5 additions and 5 deletions
|
|
@ -20,6 +20,7 @@ struct InputCache
|
||||||
{
|
{
|
||||||
Input lockedInput;
|
Input lockedInput;
|
||||||
ref<SourceAccessor> accessor;
|
ref<SourceAccessor> accessor;
|
||||||
|
Attrs extraAttrs;
|
||||||
};
|
};
|
||||||
|
|
||||||
virtual std::optional<CachedInput> lookup(const Input & originalInput) const = 0;
|
virtual std::optional<CachedInput> lookup(const Input & originalInput) const = 0;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ namespace nix::fetchers {
|
||||||
InputCache::CachedResult
|
InputCache::CachedResult
|
||||||
InputCache::getAccessor(ref<Store> store, const Input & originalInput, UseRegistries useRegistries)
|
InputCache::getAccessor(ref<Store> store, const Input & originalInput, UseRegistries useRegistries)
|
||||||
{
|
{
|
||||||
Attrs extraAttrs;
|
|
||||||
auto fetched = lookup(originalInput);
|
auto fetched = lookup(originalInput);
|
||||||
Input resolvedInput = originalInput;
|
Input resolvedInput = originalInput;
|
||||||
|
|
||||||
|
|
@ -18,13 +17,13 @@ InputCache::getAccessor(ref<Store> store, const Input & originalInput, UseRegist
|
||||||
fetched.emplace(CachedInput{.lockedInput = lockedInput, .accessor = accessor});
|
fetched.emplace(CachedInput{.lockedInput = lockedInput, .accessor = accessor});
|
||||||
} else {
|
} else {
|
||||||
if (useRegistries != UseRegistries::No) {
|
if (useRegistries != UseRegistries::No) {
|
||||||
auto [res, extraAttrs_] = lookupInRegistries(store, originalInput, useRegistries);
|
auto [res, extraAttrs] = lookupInRegistries(store, originalInput, useRegistries);
|
||||||
extraAttrs = extraAttrs_;
|
|
||||||
resolvedInput = std::move(res);
|
resolvedInput = std::move(res);
|
||||||
fetched = lookup(resolvedInput);
|
fetched = lookup(resolvedInput);
|
||||||
if (!fetched) {
|
if (!fetched) {
|
||||||
auto [accessor, lockedInput] = resolvedInput.getAccessor(store);
|
auto [accessor, lockedInput] = resolvedInput.getAccessor(store);
|
||||||
fetched.emplace(CachedInput{.lockedInput = lockedInput, .accessor = accessor});
|
fetched.emplace(
|
||||||
|
CachedInput{.lockedInput = lockedInput, .accessor = accessor, .extraAttrs = extraAttrs});
|
||||||
}
|
}
|
||||||
upsert(resolvedInput, *fetched);
|
upsert(resolvedInput, *fetched);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -38,7 +37,7 @@ InputCache::getAccessor(ref<Store> store, const Input & originalInput, UseRegist
|
||||||
|
|
||||||
debug("got tree '%s' from '%s'", fetched->accessor, fetched->lockedInput.to_string());
|
debug("got tree '%s' from '%s'", fetched->accessor, fetched->lockedInput.to_string());
|
||||||
|
|
||||||
return {fetched->accessor, resolvedInput, fetched->lockedInput, extraAttrs};
|
return {fetched->accessor, resolvedInput, fetched->lockedInput, fetched->extraAttrs};
|
||||||
}
|
}
|
||||||
|
|
||||||
struct InputCacheImpl : InputCache
|
struct InputCacheImpl : InputCache
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue