summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-01-06 15:09:31 +0100
committerLudovic Courtès <ludo@gnu.org>2020-01-06 16:31:54 +0100
commit9961cde3835743643e562e0034a73356b1d1eb0f (patch)
treee74a97682bae89119e6f866309ce4a919d89ac06
parent3a695c01d7ee18f30f22df53f3c44dfac04017f1 (diff)
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.scm33
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)