guix/guix
Ludovic Courtès 0c10902609
grafts: Cache the derivation/graft mapping for the whole session.
Partly fixes <https://bugs.gnu.org/41702>.
Reported by Lars-Dominik Braun <ldb@leibniz-psychology.org>.

Previously, 'graft-derivation' would start anew at every call.  When
creating a profile with lots of packages, it would potentially do the
same work multiple times.  The per-session cache addresses this.  It
increases the derivation-graft-cache hit rate from 77.9% to 80.1% on:

  GUIX_PROFILING="derivation-graft-cache" ./pre-inst-env \
    guix environment --ad-hoc libreoffice inkscape krita darktable -n

The effect is more visible on the pathological case below, where cache
hit rate goes from 75% to 87% and wall-clock time from 5.0s to 3.5s:

  GUIX_PROFILING="derivation-graft-cache" ./pre-inst-env \
    guix environment --ad-hoc r-learnr --search-paths

* guix/grafts.scm (%graft-cache): New variable.
(graft-derivation): Add calls to 'store-connection-cache' and
'set-store-connection-cache!'.
2021-06-08 09:25:50 +02:00
..
build build-system: asdf: Work around package-name->name+version bug. 2021-05-08 13:42:38 +02:00
build-system guix: Update to Bioconductor 3.13. 2021-06-05 09:12:39 +02:00
import guix: Update to Bioconductor 3.13. 2021-06-05 09:12:39 +02:00
scripts scripts: substitute: Cache connection when looking for narinfos. 2021-06-06 18:54:29 +02:00
store database: Validate #:nar-size and #:time when registering store items. 2021-01-31 21:49:58 +01:00
tests tests: do not hard code HTTP ports 2021-03-06 11:41:48 +01:00
android-repo-download.scm android-repo-download: Add guile-json extension. 2021-05-02 18:45:27 +02:00
avahi.scm avahi: Remove poll timeout when possible. 2020-12-20 10:40:57 +01:00
base16.scm
base32.scm
base64.scm
build-system.scm packages: Add 'package-with-c-toolchain'. 2020-10-12 18:23:47 +02:00
bzr-download.scm
cache.scm git: Periodically delete least-recently-used cached checkouts. 2021-01-13 16:26:58 +01:00
channels.scm channels: Add a #:system argument to channel-instances->manifest. 2021-05-12 08:34:07 +01:00
ci.scm guix: ci: Add spec support to latest-evaluations. 2021-05-26 15:29:32 +02:00
colors.scm
combinators.scm combinators: Fix typo. 2020-07-05 03:15:08 +05:30
config.scm.in build: Add '--with-channel-commit' and related configure flags. 2021-02-04 09:23:39 +01:00
cpio.scm linux-initrd: Add special-file->cpio-header*. 2020-11-22 11:03:31 +01:00
cve.scm cve: Gracefully handle bogus CVE entries. 2021-04-25 14:35:42 +02:00
cvs-download.scm cvs-download: Fix module exports 2021-05-05 16:56:43 +02:00
d3.v3.js graph: Install JavaScript files. 2021-01-04 23:54:16 +01:00
deprecation.scm
derivations.scm derivations: Avoid uses of 'write' in 'write-derivation'. 2020-08-28 23:29:07 +02:00
describe.scm describe: Gracefully handle profiles that lack provenance info. 2021-05-09 23:46:46 +02:00
diagnostics.scm diagnostics, ui: Adjust to 'read-error' and 'syntax-error' in Guile 3.0.6. 2021-05-09 23:45:36 +02:00
discovery.scm discovery: Fix typo. 2020-07-05 16:07:59 +05:30
docker.scm docker: Pass '--hard-dereference' to 'tar' to ensure reproducible builds. 2021-02-08 23:50:35 +01:00
download.scm lint: archival: Lookup content in Disarchive database. 2021-05-22 23:13:11 +02:00
elf.scm
ftp-client.scm ftp-client: Before 'PASV', try 'EPSV' first for IPv6. 2021-02-15 08:38:00 +08:00
gexp.scm gexp: 'gexp->script' uses #:guile also as the guile-for-build. 2021-03-29 16:47:23 +02:00
git-authenticate.scm channels: Consider the current channel commit as authentic. 2021-02-04 09:23:39 +01:00
git-download.scm git-download: Support submodules in 'git-predicate'. 2021-05-28 11:36:02 +02:00
git.scm git: Honor proxy settings when fetching submodules. 2021-04-14 22:51:38 +02:00
glob.scm guix: Add globstar support. 2020-12-09 22:25:17 +01:00
gnu-maintenance.scm gnu-maintenance: 'generic-html' computes the right source URL. 2021-06-03 13:04:20 +02:00
gnupg.scm
grafts.scm grafts: Cache the derivation/graft mapping for the whole session. 2021-06-08 09:25:50 +02:00
graph.js graph: Install JavaScript files. 2021-01-04 23:54:16 +01:00
graph.scm graph: Install JavaScript files. 2021-01-04 23:54:16 +01:00
hg-download.scm hg-download: Add helpers for defining packages. 2021-06-05 23:39:29 +02:00
http-client.scm http-client: Remove exception mishandling in 'http-multiple-get'. 2021-04-25 14:36:45 +02:00
i18n.scm
inferior.scm inferior: Support querying package replacements. 2021-05-15 12:14:47 +01:00
ipfs.scm Add (guix ipfs). 2021-04-12 18:42:22 +02:00
licenses.scm licenses: Add BSD-1-Clause license. 2021-06-03 21:53:05 +02:00
lint.scm lint: tests-true: Check if tests are enabled when cross-compiling. 2021-06-06 18:49:12 +02:00
man-db.scm Use "guile-zlib" and "guile-lzlib" instead of (guix config). 2020-08-24 13:35:24 +02:00
memoization.scm
modules.scm modules: Recognize #:re-export-and-replace. 2021-01-19 17:45:38 +01:00
monad-repl.scm
monads.scm maint: Require Guile >= 2.2.6. 2020-12-19 23:25:01 +01:00
nar.scm database: Remove #:deduplicate? from 'register-items'. 2020-12-15 17:32:11 +01:00
narinfo.scm substitute: Choose compression method based on past CPU usage. 2021-03-21 23:41:01 +01:00
openpgp.scm openpgp: Remove now unnecessary procedure. 2021-03-02 23:12:37 +01:00
packages.scm packages: 'package-with-patches' preserves package location. 2021-04-29 01:22:04 +02:00
pki.scm
profiles.scm profiles: 'check-for-collisions' filters out more non-collisions upfront. 2021-06-05 23:39:25 +02:00
profiling.scm
progress.scm progress: Add a download-size argument to progress-report-port. 2021-06-01 09:10:32 +02:00
quirks.scm quirks: Adjust patch to allow traveling back to Dec. 2018. 2020-07-24 18:56:25 +02:00
records.scm
remote.scm Use 'formatted-message' instead of '&message' where appropriate. 2020-07-25 19:11:37 +02:00
repl.scm repl: Fix exception handling for interpreted code. 2021-01-21 00:14:38 +01:00
scripts.scm guix: scripts: Fix corner cases of hint for option typo. 2021-02-24 23:50:13 +01:00
search-paths.scm
self.scm etc: Add "bordeaux.guix.gnu.org.pub" public key file. 2021-06-07 11:31:17 +01:00
serialization.scm serialization: Micro-optimize string literal output in 'write-file-tree'. 2021-03-01 17:45:51 +01:00
sets.scm
ssh.scm ssh: Fix type that broke offloading. 2021-05-11 12:49:53 +02:00
status.scm status: Avoid abbreviation in messages. 2021-05-05 00:57:35 +02:00
store.scm store: 'references/cached' now uses a per-session cache. 2021-06-08 09:25:50 +02:00
substitutes.scm substitutes: Reduce negative TTLs. 2021-05-16 23:28:11 +02:00
svn-download.scm guix: Fix download-svn-to-store. 2020-09-14 14:24:29 +01:00
swh.scm maint: Require Guile 3.0. 2021-06-01 23:26:07 +02:00
tests.scm Revert "tests: Refer to '%derivation-cache' in the right module." 2021-03-06 11:41:48 +01:00
transformations.scm transformations: Add '--with-latest'. 2021-01-19 17:45:39 +01:00
ui.scm ui, lint: Simplify exception handling in Guile 3 style. 2021-06-01 23:26:07 +02:00
upstream.scm upstream: 'package-latest-release' tries all the matching updaters. 2021-04-06 23:59:46 +02:00
utils.scm utils: 'tarball-sans-extension' recognizes ".tgz". 2021-04-05 12:03:09 +02:00
workers.scm