summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2017-05-09 10:42:43 +0200
committerLudovic Courtès <ludo@gnu.org>2017-05-09 12:58:42 +0200
commitaa1c3a0000793873ef31f33f8aa90f5ae1ab8b8d (patch)
treee9720cbf8701b2bd16e6d0091f7dc976c234c3e0
parent59898500dda7901d5e467754f2522f883fbf68ba (diff)
downloadguix-aa1c3a0000793873ef31f33f8aa90f5ae1ab8b8d.tar.gz
maint: update-guix-package: Protect the checkout from GC.
* build-aux/update-guix-package.scm (main): Define 'root', and call
'add-indirect-root' to protect SOURCE from GC.
-rw-r--r--build-aux/update-guix-package.scm17
1 files changed, 13 insertions, 4 deletions
diff --git a/build-aux/update-guix-package.scm b/build-aux/update-guix-package.scm
index d45c183914..9598872dfd 100644
--- a/build-aux/update-guix-package.scm
+++ b/build-aux/update-guix-package.scm
@@ -124,10 +124,19 @@ COMMIT."
          ;; on a private branch.
          (reload-module
           (resolve-module '(gnu packages package-management)))
-         (pk source
-             (add-to-store store
-                           (origin-file-name (package-source guix))
-                           #t "sha256" source)))))
+
+         (let* ((source (add-to-store store
+                                      (origin-file-name (package-source guix))
+                                      #t "sha256" source))
+                (root   (store-path-package-name source)))
+
+           ;; Add an indirect GC root for SOURCE in the current directory.
+           (false-if-exception (delete-file root))
+           (symlink source root)
+           (add-indirect-root store root)
+
+           (format #t "source code for commit ~a: ~a (GC root: ~a)~%"
+                   commit source root)))))
     ((commit)
      ;; Automatically deduce the version and revision numbers.
      (main commit #f))))