lix/src/libstore
Théophane Hufschmitt 390269ed87 Simplify the handling of the hash modulo
Rather than having four different but very similar types of hashes, make
only one, with a tag indicating whether it corresponds to a regular of
deferred derivation.

This implies a slight logical change: The original Nix+multiple-outputs
model assumed only one hash-modulo per derivation. Adding
multiple-outputs CA derivations changed this as these have one
hash-modulo per output. This change is now treating each derivation as
having one hash modulo per output.
This obviously means that we internally loose the guaranty that
all the outputs of input-addressed derivations have the same hash
modulo. But it turns out that it doesn’t matter because there’s nothing
in the code taking advantage of that fact (and it probably shouldn’t
anyways).

The upside is that it is now much easier to work with these hashes, and
we can get rid of a lot of useless `std::visit{ overloaded`.

Co-authored-by: John Ericson <John.Ericson@Obsidian.Systems>
2022-03-29 18:17:35 +02:00
..
build Use wantOutput 2022-03-25 08:02:49 +01:00
builtins buildProfile(): Ignore manifest.{nix,json} 2022-03-22 10:48:02 +01:00
tests Add error reporting to machine spec paser 2021-10-17 12:45:56 +04:00
binary-cache-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
binary-cache-store.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
build-result.hh BuildResult: Remove unused drvPath field 2022-03-09 20:31:50 +01:00
builtins.hh buildenv: Eliminate global variables, other cleanup 2020-03-24 14:06:47 +01:00
ca-specific-schema.sql ca-specific-schema.sql: add index on RealisationsRefs(referrer) and (outputPath) 2021-11-10 08:32:05 +00:00
content-address.cc Fix use after free in content-address.cc 2021-11-23 16:15:34 +01:00
content-address.hh Add ContentAddressMethod and parse/render it 2020-09-17 20:21:04 +02:00
crypto.cc Make sodium a required dependency 2021-01-06 17:56:53 +01:00
crypto.hh crypto.cc: API cleanup and add generate() / to_string() methods 2021-01-06 17:04:46 +01:00
daemon.cc Generalize DerivationType in preparation for impure derivations 2022-03-18 14:59:56 +00:00
daemon.hh Add missing #pragma once 2020-10-06 10:40:07 +02:00
derivations.cc Simplify the handling of the hash modulo 2022-03-29 18:17:35 +02:00
derivations.hh Simplify the handling of the hash modulo 2022-03-29 18:17:35 +02:00
derived-path.cc Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
derived-path.hh nix profile install: Don't use queryDerivationOutputMap() 2022-03-28 14:23:39 +02:00
dummy-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
export-import.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
filetransfer.cc Fix segfault in headerCallback() 2022-03-03 11:11:16 +01:00
filetransfer.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
fs-accessor.hh Use the fs accessor for readInvalidDerivation 2020-12-15 20:10:46 +01:00
gc-store.hh Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
gc.cc gc: don't visit implicit referrers on garbage collection 2022-03-17 18:47:29 +00:00
globals.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
globals.hh Move some stuff from Settings to a new FetchSettings. 2022-03-01 01:39:25 +00:00
http-binary-cache-store.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
legacy-ssh-store.cc BuildResult: Use DerivedPath 2022-03-09 12:25:35 +01:00
local-binary-cache-store.cc BinaryCacheStore: Implement addBuildLog() 2022-01-18 16:14:01 +01:00
local-fs-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
local-fs-store.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
local-store.cc Simplify the handling of the hash modulo 2022-03-29 18:17:35 +02:00
local-store.hh Factor out a GcStore interface 2022-03-03 19:01:25 +00:00
local.mk Merge pull request #5175 from Pamplemousse/make 2021-08-30 12:44:29 +02:00
lock.cc Trim lock.cc 2020-10-11 16:44:19 +00:00
lock.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
log-store.hh Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
machines.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
machines.hh Remove std::string alias 2022-02-21 16:37:25 +01: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 fetchClosure: Allow a path to be rewritten to CA on the fly 2022-03-24 21:33:33 +01:00
misc.cc Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
names.cc return string_views from forceString* 2022-01-27 17:15:43 +01:00
names.hh Remove std::string alias 2022-02-21 16:37:25 +01:00
nar-accessor.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
nar-accessor.hh Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
nar-info-disk-cache.cc Simplify the realisations disk cache 2021-05-10 17:47:14 +02:00
nar-info-disk-cache.hh Add a realisations disk cache 2021-05-06 17:38:20 +02:00
nar-info.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
nar-info.hh Minimize the usage of Hash::dummy 2020-08-06 18:31:48 +00:00
nix-store.pc.in pkg-config files: Use c++17 2019-03-14 14:11:12 +01:00
optimise-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
parsed-derivations.cc Generalize DerivationType in preparation for impure derivations 2022-03-18 14:59:56 +00:00
parsed-derivations.hh Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
path-info.cc Low-latency closure copy 2021-07-26 13:31:09 +02:00
path-info.hh Low-latency closure copy 2021-07-26 13:31:09 +02:00
path-with-outputs.cc Factor out a GcStore interface 2022-03-03 19:01:25 +00:00
path-with-outputs.hh buildable.{cc,hh} -> derived-path.{cc,hh} 2021-04-05 10:33:28 -04:00
path.cc Move StorePathWithOutputs into its own header/file 2021-04-05 08:31:37 -04:00
path.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
pathlocks.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
pathlocks.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
profiles.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
profiles.hh Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
realisation.cc Fix the build with nlohmann/json 3.10.4+ 2022-01-19 14:37:54 +01:00
realisation.hh buildPaths(): Add an evalStore argument 2021-07-22 09:59:51 +02:00
references.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
references.hh Add a test for RefScanSink and clean up the code 2021-10-04 14:29:42 +02:00
remote-fs-accessor.cc Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
remote-fs-accessor.hh Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
remote-store.cc BuildResult: Use DerivedPath 2022-03-09 12:25:35 +01:00
remote-store.hh Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
repair-flag.hh Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
s3-binary-cache-store.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
s3-binary-cache-store.hh Overhaul store subclassing 2020-12-20 15:47:14 +00:00
s3.hh Get rid of std::shared_ptr<std::string> and ref<std::string> 2022-01-18 11:12:30 +01:00
sandbox-defaults.sb Set new rosetta 2 path in sandbox 2021-11-22 14:42:31 -06:00
sandbox-minimal.sb Always use the Darwin sandbox 2017-06-06 18:44:49 +02:00
sandbox-network.sb OS X sandbox: Improve builtin sandbox profile 2017-05-31 17:25:51 +02:00
schema.sql Mark content-addressed paths in the Nix database and in .narinfo 2016-08-10 18:05:35 +02:00
serve-protocol.hh nix-store --serve: pass on settings.keepFailed from SSH store 2021-08-31 13:11:46 +02:00
sqlite.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
sqlite.hh Merge remote-tracking branch 'origin/master' into flakes 2020-06-17 10:26:52 +02:00
ssh-store.cc Factor out a LogStore interface 2022-03-11 13:32:16 +00:00
ssh.cc Remove std::string alias (for real this time) 2022-02-25 16:13:02 +01:00
ssh.hh distributed builds: load remote builder host key from the machines file 2021-02-25 09:17:34 -05:00
store-api.cc Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
store-api.hh Clean up DerivationOutput, and headers 2022-03-17 22:35:53 +00:00
store-cast.hh Deduplicate the Store downcasting with a template 2022-03-11 13:32:33 +00:00
uds-remote-store.cc Non-blocking garbage collector 2021-10-13 12:12:44 +02:00
uds-remote-store.hh Shut down write side before draining the read side 2021-09-23 18:01:04 +02:00
worker-protocol.hh Add Store::buildPathsWithResults() 2022-03-08 19:56:34 +01:00