From 9961cde3835743643e562e0034a73356b1d1eb0f Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Mon, 6 Jan 2020 15:09:31 +0100 Subject: gnu: guix: Ensure the bootstrap binary tarballs aren't GC'd. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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. --- gnu/packages/package-management.scm | 33 ++++++++++++++++++++++----------- 1 file 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 +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès ;;; Copyright © 2015, 2017 Ricardo Wurmus ;;; Copyright © 2017 Muriithi Frederick Muriuki ;;; Copyright © 2017, 2018 Oleg Pykhalov @@ -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) -- cgit v1.2.3