lix/src/libstore
John Ericson 24866b71c4 Introduce SingleDrvOutputs
In many cases we are dealing with a collection of realisations, they are
all outputs of the same derivation. In that case, we don't need
"derivation hashes modulos" to be part of our map key, because the
output names alone will be unique. Those hashes are still part of the
realisation proper, so we aren't loosing any information, we're just
"normalizing our schema" by narrowing the "primary key".

Besides making our data model a bit "tighter" this allows us to avoid a
double `for` loop in `DerivationGoal::waiteeDone`. The inner `for` loop
was previously just to select the output we cared about without knowing
its hash. Now we can just select the output by name directly.

Note that neither protocol is changed as part of this: we are still
transferring `DrvOutputs` over the wire for `BuildResult`s. I would only
consider revising this once #6223 is merged, and we can mention protocol
versions inside factored-out serialization logic. Until then it is
better not change anything because it would come a the cost of code
reuse.
2023-04-15 12:51:19 -04:00
..
build Introduce SingleDrvOutputs 2023-04-15 12:51:19 -04:00
builtins Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
tests Legacy vs non-legacy to_string/parse for DerivedPath 2023-04-14 20:45:11 -04:00
binary-cache-store.cc Merge pull request #7203 from graham33/feature/cpp20 2023-02-01 15:41:04 +01:00
binary-cache-store.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
build-result.hh Introduce SingleDrvOutputs 2023-04-15 12:51:19 -04:00
builtins.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
ca-specific-schema.sql ca: add sqlite index on RealisationsRefs(realisationReference) 2022-04-21 10:06:39 +02:00
content-address.cc Fix use after free in content-address.cc 2021-11-23 16:15:34 +01:00
content-address.hh Create Derivation::fromJSON 2023-04-07 08:34:58 -04:00
crypto.cc
crypto.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
daemon.cc Introduce SingleDrvOutputs 2023-04-15 12:51:19 -04:00
daemon.hh Add Store::isTrustedClient() 2023-04-06 19:59:57 -04:00
derivations.cc Liberate checkDerivationOutputs from LocalStore 2023-04-07 08:34:58 -04:00
derivations.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
derived-path.cc Legacy vs non-legacy to_string/parse for DerivedPath 2023-04-14 20:45:11 -04:00
derived-path.hh Legacy vs non-legacy to_string/parse for DerivedPath 2023-04-14 20:45:11 -04:00
dummy-store.cc Push getFSAccessor unsupported(...) down Store class hierarchy 2023-04-13 13:39:44 -04:00
dummy-store.md Support per-store Markdown documentation 2023-03-21 14:03:40 +01:00
export-import.cc Remove FormatOrString and remaining uses of format() 2023-03-02 15:57:54 +01:00
filetransfer.cc Allow open switch-enum in 5 places 2023-04-03 18:45:20 +02:00
filetransfer.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
fs-accessor.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
gc-store.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
gc.cc Make findRuntimeRoots() more resilient to disappearing processes 2023-03-09 16:44:51 +01:00
globals.cc Merge pull request #8062 from edolstra/ssl-cert-file 2023-03-27 15:37:15 +02:00
globals.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
http-binary-cache-store.cc Add Store::isTrustedClient() 2023-04-06 19:59:57 -04:00
http-binary-cache-store.md Support per-store Markdown documentation 2023-03-21 14:03:40 +01:00
legacy-ssh-store.cc Introduce SingleDrvOutputs 2023-04-15 12:51:19 -04:00
legacy-ssh-store.md Support per-store Markdown documentation 2023-03-21 14:03:40 +01:00
local-binary-cache-store.cc Add Store::isTrustedClient() 2023-04-06 19:59:57 -04:00
local-binary-cache-store.md Support per-store Markdown documentation 2023-03-21 14:03:40 +01:00
local-fs-store.cc getBuildLog: factor out resolving derivations 2022-12-15 15:58:54 -05:00
local-fs-store.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
local-store.cc Liberate checkDerivationOutputs from LocalStore 2023-04-07 08:34:58 -04:00
local-store.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
local-store.md Tweaks 2023-03-23 15:32:59 +01:00
local.mk Include macOS sandbox files in the Nix binary 2023-01-04 04:36:07 -08:00
lock.cc Move enabled experimental feature to libutil struct 2023-03-20 11:05:22 -04:00
lock.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
log-store.cc Move the getBuildLog implementation to its own implementation file 2023-01-13 11:05:44 +01:00
log-store.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
machines.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
machines.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
make-content-addressed.cc Add a test for fetchClosure and 'nix store make-content-addressed' 2022-03-24 21:33:33 +01:00
make-content-addressed.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
misc.cc Move enabled experimental feature to libutil struct 2023-03-20 11:05:22 -04:00
names.cc return string_views from forceString* 2022-01-27 17:15:43 +01:00
names.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
nar-accessor.cc Add explicit case statements where -Wswitch-enum would report them 2023-04-03 18:17:32 +02:00
nar-accessor.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
nar-info-disk-cache.cc NarInfoDiskCache: Keep BinaryCache.id stable and improve test 2023-02-07 23:34:36 +01:00
nar-info-disk-cache.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
nar-info.cc libstore/nar-info: drop unused system field 2022-06-23 14:25:10 -04:00
nar-info.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
nix-store.pc.in Fix building with GCC 9 2023-02-10 18:38:57 +01:00
optimise-store.cc Remove FormatOrString and remaining uses of format() 2023-03-02 15:57:54 +01:00
outputs-spec.cc Test store paths, with property tests 2023-01-23 07:05:50 -05:00
outputs-spec.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
parsed-derivations.cc Merge pull request #3600 from NixOS/auto-uid-allocation 2022-11-29 14:01:42 +01:00
parsed-derivations.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
path-info.cc Move ValidPathInfo defintions to path-info.cc 2023-01-13 15:39:19 -05:00
path-info.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
path-regex.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
path-with-outputs.cc Merge pull request #6815 from obsidiansystems/better-wanted-outputs 2023-01-13 16:03:12 +01:00
path-with-outputs.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
path.cc Test store paths, with property tests 2023-01-23 07:05:50 -05:00
path.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
pathlocks.cc Remove FormatOrString and remaining uses of format() 2023-03-02 15:57:54 +01:00
pathlocks.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
profiles.cc Factor out the generation of the profile/channel directory 2023-03-23 10:22:42 +01:00
profiles.hh Finish converting existing comments for internal API docs (#8146) 2023-04-07 13:55:28 +00:00
realisation.cc Fix the build with nlohmann/json 3.10.4+ 2022-01-19 14:37:54 +01:00
realisation.hh Introduce SingleDrvOutputs 2023-04-15 12:51:19 -04:00
references.cc Remove FormatOrString and remaining uses of format() 2023-03-02 15:57:54 +01:00
references.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
remote-fs-accessor.cc Replace src/libutil/json.cc with nlohmann json generation 2022-11-16 16:50:50 +01:00
remote-fs-accessor.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
remote-store.cc Introduce SingleDrvOutputs 2023-04-15 12:51:19 -04:00
remote-store.hh Make KeyedBuildResult, BuildResult like before, and fix bug another way 2023-04-15 11:01:31 -04:00
repair-flag.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
s3-binary-cache-store.cc Add Store::isTrustedClient() 2023-04-06 19:59:57 -04:00
s3-binary-cache-store.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
s3-binary-cache-store.md Support per-store Markdown documentation 2023-03-21 14:03:40 +01:00
s3.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
schema.sql schema.sql: add comment about hash being in base16 2022-06-01 14:59:57 +02:00
serve-protocol.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
sqlite.cc Move warning timing logic into handleSQLiteBusy. 2023-04-11 16:14:16 +01:00
sqlite.hh Move warning timing logic into handleSQLiteBusy. 2023-04-11 16:14:16 +01:00
ssh-store-config.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
ssh-store.cc Fix SSHStore 2023-03-23 09:35:35 +01:00
ssh-store.md Support per-store Markdown documentation 2023-03-21 14:03:40 +01:00
ssh.cc SSHMaster: pause logger to show password prompt 2023-03-22 09:45:08 +04:00
ssh.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
store-api.cc Move querySubstitutablePathInfos from LocalStore to Store 2023-04-02 20:32:01 -04:00
store-api.hh Make KeyedBuildResult, BuildResult like before, and fix bug another way 2023-04-15 11:01:31 -04:00
store-cast.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
uds-remote-store.cc Register LocalStore to ensure it's included in the manual 2023-03-23 15:23:13 +01:00
uds-remote-store.hh Ensure all headers have #pragma once and are in API docs 2023-03-31 23:19:44 -04:00
uds-remote-store.md Support per-store Markdown documentation 2023-03-21 14:03:40 +01:00
worker-protocol.hh Make KeyedBuildResult, BuildResult like before, and fix bug another way 2023-04-15 11:01:31 -04:00