diff options
author | Ludovic Courtès <ludo@gnu.org> | 2019-10-27 22:32:09 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-10-27 23:05:00 +0100 |
commit | 5166d027308f4cf694f5cff1c0670b6ff622c226 (patch) | |
tree | af20f5ccc6dea8147786f8065e03a471c3b0602b /gnu/packages/bootstrap.scm | |
parent | d727a9343d861cf775645df8be5bfefd43d6c6f0 (diff) | |
download | guix-5166d027308f4cf694f5cff1c0670b6ff622c226.tar guix-5166d027308f4cf694f5cff1c0670b6ff622c226.tar.gz |
gnu: bootstrap: 'bootstrap-origin' preserves eq?-ness when no changes are made.
This reduces the number of lookups in the 'add-data-to-store' cache from
2743 to 2705 (hit rate: 11% to 10%) when running
GUIX_PROFILING=add-data-to-store-cache guix build libreoffice -nd
The execution time of "guix build libreoffice -nd" goes from 1.80s to 1.78s.
* gnu/packages/bootstrap.scm (bootstrap-origin): Return SOURCE unchanged
when its has no patches and no snippet.
Diffstat (limited to 'gnu/packages/bootstrap.scm')
-rw-r--r-- | gnu/packages/bootstrap.scm | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index ee713db0cf..363c99c7c3 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -167,19 +167,22 @@ for system '~a'") ("patch" ,%bootstrap-coreutils&co))) (let ((orig-method (origin-method source))) - (origin (inherit source) - (method (cond ((eq? orig-method url-fetch) - (boot url-fetch)) - (else orig-method))) - (patch-guile %bootstrap-guile) - (patch-inputs %bootstrap-patch-inputs) - - ;; Patches can be origins as well, so process them. - (patches (map (match-lambda - ((? origin? patch) - (bootstrap-origin patch)) - (patch patch)) - (origin-patches source)))))) + (if (or (not (null? (origin-patches source))) + (origin-snippet source)) + (origin (inherit source) + (method (if (eq? orig-method url-fetch) + (boot url-fetch) + orig-method)) + (patch-guile %bootstrap-guile) + (patch-inputs %bootstrap-patch-inputs) + + ;; Patches can be origins as well, so process them. + (patches (map (match-lambda + ((? origin? patch) + (bootstrap-origin patch)) + (patch patch)) + (origin-patches source)))) + source))) (define* (package-from-tarball name source program-to-test description #:key snippet) |