nix-super/src/libstore
Eelco Dolstra 2df9cbeb47 Provide random access to cached NARs
E.g.

  $ time nix cat-store --store https://cache.nixos.org?local-nar-cache=/tmp/nars \
    /nix/store/b0w2hafndl09h64fhb86kw6bmhbmnpm1-blender-2.79/share/icons/hicolor/scalable/apps/blender.svg > /dev/null
  real    0m4.139s

  $ time nix cat-store --store https://cache.nixos.org?local-nar-cache=/tmp/nars \
    /nix/store/b0w2hafndl09h64fhb86kw6bmhbmnpm1-blender-2.79/share/icons/hicolor/scalable/apps/blender.svg > /dev/null
  real    0m0.024s

(Before, the second call took ~0.220s.)

This will use a NAR listing in
/tmp/nars/b0w2hafndl09h64fhb86kw6bmhbmnpm1.ls containing all metadata,
including the offsets of regular files inside the NAR. Thus, we don't
need to read the entire NAR. (We do read the entire listing, but
that's generally pretty small. We could use a SQLite DB by borrowing
some more code from nixos-channel-scripts/file-cache.hh.)

This is primarily useful when Hydra is serving files from an S3 binary
cache, in particular when you have giant NARs. E.g. we had some 12 GiB
NARs, so accessing individuals files was pretty slow.
2017-12-07 01:07:07 +01:00
..
binary-cache-store.cc Provide random access to cached NARs 2017-12-07 01:07:07 +01:00
binary-cache-store.hh nix sign-paths: Support binary caches 2017-11-14 18:44:05 +01:00
build.cc Show log tail when a remote build fails 2017-11-28 15:36:28 +01:00
builtins.cc Don't remove Content-Encoding in fetchurl / nix-prefetch-url 2017-09-18 11:07:28 +02:00
builtins.hh Support netrc in <nix/fetchurl.nix> 2017-02-16 15:51:50 +01:00
crypto.cc binary-cache-public-keys -> trusted-public-keys 2017-11-20 17:32:34 +01:00
crypto.hh Revert "Get rid of unicode quotes (#1140)" 2016-11-26 00:38:01 +01:00
derivations.cc Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
derivations.hh Replace a few bool flags with enums 2017-07-03 11:38:08 +02:00
download.cc Add a "profile" option to S3BinaryCacheStore 2017-11-15 14:18:20 +01:00
download.hh Don't remove Content-Encoding in fetchurl / nix-prefetch-url 2017-09-18 11:07:28 +02:00
export-import.cc Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
fs-accessor.hh nix ls-{nar,store}: Return offset of files in the NAR if known 2017-12-07 01:07:07 +01:00
gc.cc Show the pid of temporary roots 2017-09-14 15:02:52 +02:00
globals.cc Propagate flags like --sandbox to the daemon properly 2017-11-21 18:50:56 +01:00
globals.hh signed-binary-caches -> require-sigs 2017-11-20 17:44:07 +01:00
http-binary-cache-store.cc Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
legacy-ssh-store.cc LegacySSHStore: Include signatures etc. 2017-09-08 16:55:27 +02:00
local-binary-cache-store.cc Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
local-fs-store.cc Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
local-store.cc Add automatic garbage collection 2017-09-05 20:43:42 +02:00
local-store.hh signed-binary-caches -> require-sigs 2017-11-20 17:44:07 +01:00
local.mk Shift Darwin sandbox to separate installed files 2017-10-17 19:15:51 -04:00
machines.cc Allow shorter syntax for chroot stores 2017-10-24 15:32:38 +02:00
machines.hh Replace $NIX_REMOTE_SYSTEMS with an option "builder-files" 2017-05-02 15:46:09 +02:00
misc.cc Call queryMissing() prior to building 2017-08-31 16:05:07 +02:00
nar-accessor.cc Provide random access to cached NARs 2017-12-07 01:07:07 +01:00
nar-accessor.hh Provide random access to cached NARs 2017-12-07 01:07:07 +01:00
nar-info-disk-cache.cc Support base-64 hashes 2017-07-04 15:07:41 +02:00
nar-info-disk-cache.hh HttpBinaryCacheStore: Fix caching of WantMassQuery 2016-06-01 16:24:17 +02:00
nar-info.cc Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
nar-info.hh Make the store directory a member variable of Store 2016-06-01 16:24:17 +02:00
nix-store.pc.in Install some pkgconfig files 2014-09-18 12:00:40 +02:00
optimise-store.cc Give activities a verbosity level again 2017-08-28 19:13:24 +02:00
pathlocks.cc Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
pathlocks.hh openLockFile: Return an AutoCloseFD 2017-01-26 20:40:33 +01:00
profiles.cc Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
profiles.hh Allow setting the state directory as a store parameter 2016-06-02 16:02:48 +02:00
references.cc Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
references.hh Use "#pragma once" to prevent repeated header file inclusion 2012-07-18 14:59:03 -04:00
remote-fs-accessor.cc Provide random access to cached NARs 2017-12-07 01:07:07 +01:00
remote-fs-accessor.hh Provide random access to cached NARs 2017-12-07 01:07:07 +01:00
remote-store.cc Remove the remote-builds option 2017-10-24 11:00:16 +02:00
remote-store.hh RemoteStore: Add option to drop old connections from the pool 2017-09-14 18:10:38 +02:00
s3-binary-cache-store.cc Add a "profile" option to S3BinaryCacheStore 2017-11-15 14:18:20 +01:00
s3-binary-cache-store.hh Fix getS3Stats() 2016-10-06 17:00:52 +02:00
s3.hh Add a "profile" option to S3BinaryCacheStore 2017-11-15 14:18:20 +01:00
sandbox-defaults.sb Remove extraneous comment 2017-11-08 16:17:32 +01: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 LegacySSHStore: Include signatures etc. 2017-09-08 16:55:27 +02:00
sqlite.cc Replace Unicode quotes in user-facing strings by ASCII 2017-07-30 12:32:45 +01:00
sqlite.hh Improve SQLite busy handling 2017-02-28 13:59:11 +01:00
ssh-store.cc ssh-store: fix length when writing nar 2017-12-06 11:41:08 +01:00
ssh.cc Disallow SSH host names starting with a dash 2017-08-16 20:55:58 +02:00
ssh.hh Disallow SSH host names starting with a dash 2017-08-16 20:55:58 +02:00
store-api.cc nix path-info: Show URL of NARs in binary caches 2017-11-24 18:08:50 +01:00
store-api.hh Turn $NIX_REMOTE into a configuration option 2017-10-23 20:50:28 +02:00
worker-protocol.hh Don't send progress messages to older clients 2017-08-28 18:54:23 +02:00