From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43166) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1d1OD1-0007u1-OZ for guix-patches@gnu.org; Thu, 20 Apr 2017 22:22:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1d1OCy-00012Q-Vo for guix-patches@gnu.org; Thu, 20 Apr 2017 22:22:07 -0400 Received: from debbugs.gnu.org ([208.118.235.43]:33111) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1d1OCy-00012K-SK for guix-patches@gnu.org; Thu, 20 Apr 2017 22:22:04 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1d1OCy-0001Uo-MS for guix-patches@gnu.org; Thu, 20 Apr 2017 22:22:04 -0400 Subject: bug#26544: [PATCH v2 5/8] system: Introduce read-boot-parameters-file. Resent-Message-ID: From: Danny Milosavljevic Date: Fri, 21 Apr 2017 04:21:24 +0200 Message-Id: <20170421022127.20524-6-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.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 | 10 ++++------ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index 31764c830..cb166c755 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..378138c26 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -370,8 +370,7 @@ 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))) + (params (read-boot-parameters-file file))) params))) (let* ((systems (map (cut generation-file-name profile <>) numbers)) @@ -388,8 +387,7 @@ 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)) + (params (read-boot-parameters-file file)) (label (boot-parameters-label params)) (root (boot-parameters-root-device params)) (root-device (if (bytevector? root) @@ -449,7 +447,7 @@ 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 file))) (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 @@ -534,7 +532,7 @@ list of services." (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 param-file)) (label (boot-parameters-label params)) (root (boot-parameters-root-device params)) (root-device (if (bytevector? root)