summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2019-08-07 22:26:55 +0200
committerRicardo Wurmus <rekado@elephly.net>2019-08-07 22:26:55 +0200
commit9bd1333e587c92fb3f0c12e080cb89e41713df01 (patch)
treef053e0174c052df046ef2ad320bcc5cdc8c76b01 /guix
parent378d94e51b00c30b19a39154278d01f1f3c4dbc1 (diff)
parent55e238f2ab24ce347047ebc7fd7c5eba62dac69d (diff)
downloadguix-patches-9bd1333e587c92fb3f0c12e080cb89e41713df01.tar
guix-patches-9bd1333e587c92fb3f0c12e080cb89e41713df01.tar.gz
Merge remote-tracking branch 'origin/master' into wip-texlive
Diffstat (limited to 'guix')
-rw-r--r--guix/scripts/deploy.scm6
-rw-r--r--guix/scripts/system/reconfigure.scm20
2 files changed, 20 insertions, 6 deletions
diff --git a/guix/scripts/deploy.scm b/guix/scripts/deploy.scm
index 52bba3f3bf..ebc99e52cc 100644
--- a/guix/scripts/deploy.scm
+++ b/guix/scripts/deploy.scm
@@ -19,6 +19,7 @@
(define-module (guix scripts deploy)
#:use-module (gnu machine)
+ #:use-module (guix discovery)
#:use-module (guix scripts)
#:use-module (guix scripts build)
#:use-module (guix store)
@@ -74,7 +75,10 @@ Perform the deployment specified by FILE.\n"))
(define (load-source-file file)
"Load FILE as a user module."
- (let ((module (make-user-module '((gnu) (gnu machine) (gnu machine ssh)))))
+ (let* ((guix-path (dirname (search-path %load-path "guix.scm")))
+ (environment-modules (scheme-modules* guix-path "gnu/machine"))
+ (module (make-user-module (append '((gnu) (gnu machine))
+ environment-modules))))
(load* file module)))
(define (guix-deploy . args)
diff --git a/guix/scripts/system/reconfigure.scm b/guix/scripts/system/reconfigure.scm
index dee0c24bd2..579b7fffbe 100644
--- a/guix/scripts/system/reconfigure.scm
+++ b/guix/scripts/system/reconfigure.scm
@@ -195,21 +195,31 @@ BOOTLOADER-PACKAGE."
(srfi srfi-34)
(srfi srfi-35))
(let* ((gc-root (string-append #$target %gc-roots-directory "/bootcfg"))
- (temp-gc-root (string-append gc-root ".new")))
- (switch-symlinks temp-gc-root gc-root)
- (install-boot-config #$bootcfg #$bootcfg-file #$target)
+ (new-gc-root (string-append gc-root ".new")))
+ ;; #$bootcfg has dependencies.
+ ;; The bootloader magically loads the configuration from
+ ;; (string-append #$target #$bootcfg-file) (for example
+ ;; "/boot/grub/grub.cfg").
+ ;; If we didn't do something special, the garbage collector
+ ;; would remove the dependencies of #$bootcfg.
+ ;; Register #$bootcfg as a GC root.
;; Preserve the previous activation's garbage collector root
;; until the bootloader installer has run, so that a failure in
;; the bootloader's installer script doesn't leave the user with
;; a broken installation.
+ (switch-symlinks new-gc-root #$bootcfg)
+ (install-boot-config #$bootcfg #$bootcfg-file #$target)
(when #$installer
(catch #t
(lambda ()
(#$installer #$bootloader-package #$device #$target))
(lambda args
- (delete-file temp-gc-root)
+ (delete-file new-gc-root)
(apply throw args))))
- (rename-file temp-gc-root gc-root)))))))
+ ;; We are sure that the installation of the bootloader
+ ;; succeeded, so we can replace the old GC root by the new
+ ;; GC root now.
+ (rename-file new-gc-root gc-root)))))))
(define* (install-bootloader eval configuration bootcfg
#:key