From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:50494) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d1XSr-0000CU-ES for guix-patches@gnu.org; Fri, 21 Apr 2017 08:15:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d1XSq-0004VK-5u for guix-patches@gnu.org; Fri, 21 Apr 2017 08:15:05 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:33519) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d1XSq-0004VC-2e for guix-patches@gnu.org; Fri, 21 Apr 2017 08:15:04 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1d1XSp-00032X-Tj for guix-patches@gnu.org; Fri, 21 Apr 2017 08:15:03 -0400 Subject: bug#26544: [PATCH v3 4/9] system: Introduce read-boot-parameters-file. Resent-Message-ID: From: Danny Milosavljevic Date: Fri, 21 Apr 2017 14:14:37 +0200 Message-Id: <20170421121442.29972-5-dannym@scratchpost.org> In-Reply-To: <20170421121442.29972-1-dannym@scratchpost.org> References: <86h91ikw4m.fsf@gmail.com> <20170421121442.29972-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.scm (read-boot-parameters): Remove export. (read-boot-parameters-file): New variable. Export it. * guix/scripts/system.scm (profile-boot-parameters): Use read-boot-parameters-file. (profile-grub-entries): Use read-boot-parameters-file. (reinstall-grub): Use read-boot-parameters-file. (display-system-generation): Use read-boot-parameters-file. --- gnu/system.scm | 22 +++++++++++++++++++++- guix/scripts/system.scm | 14 ++++---------- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index a4f15f7f5..9921a9786 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -109,7 +109,7 @@ boot-parameters-kernel boot-parameters-kernel-arguments boot-parameters-initrd - read-boot-parameters + read-boot-parameters-file local-host-aliases %setuid-programs @@ -907,4 +907,24 @@ being stored into the \"parameters\" file)." system) #f))) +(define (read-boot-parameters-file system) + "Read boot parameters from SYSTEM's (system or generation) \"parameters\" +file and returns the corresponding object or #f if the +format is unrecognized. +The object has its kernel-arguments extended in order to make it bootable." + (let* ((file (string-append system "/parameters")) + (params (call-with-input-file file read-boot-parameters)) + (root (boot-parameters-root-device params)) + (root-device (if (bytevector? root) + (uuid->string root) + root)) + (kernel-arguments (boot-parameters-kernel-arguments params))) + (if params + (boot-parameters + (inherit params) + (kernel-arguments (bootable-kernel-arguments kernel-arguments + system + root-device))) + #f))) + ;;; system.scm ends here diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 8fabdb5c1..b278b6683 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -369,9 +369,7 @@ it atomically, and then run OS's activation script." 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 (call-with-input-file file - read-boot-parameters))) + (let* ((params (read-boot-parameters-file system))) params))) (let* ((systems (map (cut generation-file-name profile <>) numbers)) @@ -387,9 +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 (call-with-input-file file - read-boot-parameters)) + (let* ((params (read-boot-parameters-file system)) (label (boot-parameters-label params)) (root (boot-parameters-root-device params)) (root-device (if (bytevector? root) @@ -447,9 +443,8 @@ 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 - (call-with-input-file file read-boot-parameters))) + (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 @@ -533,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 (call-with-input-file param-file read-boot-parameters)) + (params (read-boot-parameters-file generation)) (label (boot-parameters-label params)) (root (boot-parameters-root-device params)) (root-device (if (bytevector? root)