From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43176) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d1OD1-0007u4-Qr for guix-patches@gnu.org; Thu, 20 Apr 2017 22:22:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d1OD0-00013E-As for guix-patches@gnu.org; Thu, 20 Apr 2017 22:22:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:33114) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d1OD0-000138-6u for guix-patches@gnu.org; Thu, 20 Apr 2017 22:22:06 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1d1OD0-0001VA-1v for guix-patches@gnu.org; Thu, 20 Apr 2017 22:22:06 -0400 Subject: bug#26544: [PATCH v2 8/8] system: grub: Use boot-parameters instead of menu-entry where possible. Resent-Message-ID: From: Danny Milosavljevic Date: Fri, 21 Apr 2017 04:21:27 +0200 Message-Id: <20170421022127.20524-9-dannym@scratchpost.org> In-Reply-To: <20170421022127.20524-1-dannym@scratchpost.org> References: <20170421022127.20524-1-dannym@scratchpost.org> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+kyle=kyleam.com@gnu.org Sender: "Guix-patches" To: 26544@debbugs.gnu.org * gnu/system/grub.scm (boot-parameters->menu-entry): New variable. (grub-configuration-file): Use boot-parameters instead of menu-entry where possible. * guix/scripts/system.scm (profile-boot-parameters): Update docstring. (reinstall-grub): Use profile-boot-parameters. (perform-action): Use profile-boot-parameters. --- gnu/system/grub.scm | 14 ++++++++++++-- guix/scripts/system.scm | 22 +++++++++------------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm index cde4b9e23..d2fa984ec 100644 --- a/gnu/system/grub.scm +++ b/gnu/system/grub.scm @@ -267,6 +267,16 @@ code." (#f #~(format #f "search --file --set ~a" #$file))))) +(define (boot-parameters->menu-entry conf) + "Convert a instance to a corresponding ." + (menu-entry + (label (boot-parameters-label conf)) + (device (boot-parameters-store-device conf)) + (device-mount-point (boot-parameters-store-mount-point conf)) + (linux (boot-parameters-kernel conf)) + (linux-arguments (boot-parameters-kernel-arguments conf)) + (initrd (boot-parameters-initrd conf)))) + (define* (grub-configuration-file config entries #:key (system (%current-system)) @@ -276,7 +286,7 @@ code." object. OLD-ENTRIES is taken to be a list of menu entries corresponding to old generations of the system." (define all-entries - (append entries + (append (map boot-parameters->menu-entry entries) (grub-configuration-menu-entries config))) (define entry->gexp @@ -323,7 +333,7 @@ set timeout=~a~%" #$@(if (pair? old-entries) #~((format port " submenu \"GNU system, old configurations...\" {~%") - #$@(map entry->gexp old-entries) + #$@(map entry->gexp (map boot-parameters->menu-entry old-entries)) (format port "}~%")) #~())))) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 378138c26..dade5eb85 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -365,12 +365,11 @@ it atomically, and then run OS's activation script." (define* (profile-boot-parameters #:optional (profile %system-profile) (numbers (generation-numbers profile))) - "Return a list of 'menu-entry' for the generations of PROFILE specified by -NUMBERS, which is a list of generation numbers." + "Return a list of 'boot-parameters' for the generations of PROFILE specified +by NUMBERS, which is a list of generation numbers." (define (system->boot-parameters system number time) (unless-file-not-found - (let* ((file (string-append system "/parameters")) - (params (read-boot-parameters-file file))) + (let* ((params (read-boot-parameters-file system))) params))) (let* ((systems (map (cut generation-file-name profile <>) numbers)) @@ -386,8 +385,7 @@ NUMBERS, which is a list of generation numbers." NUMBERS, which is a list of generation numbers." (define (system->grub-entry system number time) (unless-file-not-found - (let* ((file (string-append system "/parameters")) - (params (read-boot-parameters-file file)) + (let* ((params (read-boot-parameters-file system)) (label (boot-parameters-label params)) (root (boot-parameters-root-device params)) (root-device (if (bytevector? root) @@ -445,18 +443,17 @@ generation as its default entry. STORE is an open connection to the store." "Re-install grub for existing system profile generation NUMBER. STORE is an open connection to the store." (let* ((generation (generation-file-name %system-profile number)) - (file (string-append generation "/parameters")) (params (unless-file-not-found - (read-boot-parameters-file file))) + (read-boot-parameters-file generation))) (root-device (boot-parameters-root-device params)) ;; We don't currently keep track of past menu entries' details. The ;; default values will allow the system to boot, even if they differ ;; from the actual past values for this generation's entry. (grub-config (grub-configuration (device root-device))) ;; Make the specified system generation the default entry. - (entries (profile-grub-entries %system-profile (list number))) + (entries (profile-boot-parameters %system-profile (list number))) (old-generations (delv number (generation-numbers %system-profile))) - (old-entries (profile-grub-entries %system-profile old-generations)) + (old-entries (profile-boot-parameters %system-profile old-generations)) (grub.cfg (run-with-store store (grub-configuration-file grub-config entries @@ -531,8 +528,7 @@ list of services." "Display a summary of system generation NUMBER in a human-readable format." (unless (zero? number) (let* ((generation (generation-file-name profile number)) - (param-file (string-append generation "/parameters")) - (params (read-boot-parameters-file param-file)) + (params (read-boot-parameters-file generation)) (label (boot-parameters-label params)) (root (boot-parameters-root-device params)) (root-device (if (bytevector? root) @@ -641,7 +637,7 @@ output when building a system derivation, such as a disk image." (operating-system-bootcfg os (if (eq? 'init action) '() - (profile-grub-entries))))) + (profile-boot-parameters))))) ;; For 'init' and 'reconfigure', always build GRUB.CFG, even if ;; --no-grub is passed, because GRUB.CFG because we then use it as a GC