diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-01-06 15:09:31 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-01-06 16:31:54 +0100 |
commit | 9961cde3835743643e562e0034a73356b1d1eb0f (patch) | |
tree | e74a97682bae89119e6f866309ce4a919d89ac06 | |
parent | 3a695c01d7ee18f30f22df53f3c44dfac04017f1 (diff) | |
download | guix-9961cde3835743643e562e0034a73356b1d1eb0f.tar.gz |
gnu: guix: Ensure the bootstrap binary tarballs aren't GC'd.
Previously, they could be GC'd by 'tests/guix-gc.sh' for instance, and thus lacking by the time 'tests/guix-daemon.sh' runs, thereby leading to a test failure. Reported by Gábor Boskovits. * gnu/packages/package-management.scm (guix)[arguments]: In 'copy-bootstrap-guile' phase, change 'intern' to register a GC root.
-rw-r--r-- | gnu/packages/package-management.scm | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 0e4f644f80..6becdb22a9 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Muriithi Frederick Muriuki <fredmanglis@gmail.com> ;;; Copyright © 2017, 2018 Oleg Pykhalov <go.wigust@gmail.com> @@ -176,16 +176,27 @@ ;; Copy the bootstrap guile tarball in the store used ;; by the test suite. (define (intern file recursive?) - (let ((base (strip-store-file-name file))) - ;; Note: don't use 'guix download' here because we - ;; need to set the 'recursive?' argument. - (invoke "./test-env" "guile" "-c" - (object->string - `(begin - (use-modules (guix)) - (with-store store - (add-to-store store ,base ,recursive? - "sha256" ,file))))))) + ;; Note: don't use 'guix download' here because we + ;; need to set the 'recursive?' argument. + (define base + (strip-store-file-name file)) + + (define code + `(begin + (use-modules (guix)) + (with-store store + (let* ((item (add-to-store store ,base + ,recursive? + "sha256" ,file)) + (root (string-append "/tmp/gc-root-" + (basename item)))) + ;; Register a root so that the GC tests + ;; don't delete those. + (symlink item root) + (add-indirect-root store root))))) + + (invoke "./test-env" "guile" "-c" + (object->string code))) (intern (assoc-ref inputs "boot-guile") #f) |