system: Introduce read-boot-parameters-file.
* 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.
This commit is contained in:
		
							parent
							
								
									33f0aa8815
								
							
						
					
					
						commit
						9530e73b49
					
				
					 2 changed files with 25 additions and 11 deletions
				
			
		| 
						 | 
					@ -109,7 +109,7 @@
 | 
				
			||||||
            boot-parameters-kernel
 | 
					            boot-parameters-kernel
 | 
				
			||||||
            boot-parameters-kernel-arguments
 | 
					            boot-parameters-kernel-arguments
 | 
				
			||||||
            boot-parameters-initrd
 | 
					            boot-parameters-initrd
 | 
				
			||||||
            read-boot-parameters
 | 
					            read-boot-parameters-file
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            local-host-aliases
 | 
					            local-host-aliases
 | 
				
			||||||
            %setuid-programs
 | 
					            %setuid-programs
 | 
				
			||||||
| 
						 | 
					@ -907,4 +907,24 @@ being stored into the \"parameters\" file)."
 | 
				
			||||||
              system)
 | 
					              system)
 | 
				
			||||||
     #f)))
 | 
					     #f)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(define (read-boot-parameters-file system)
 | 
				
			||||||
 | 
					  "Read boot parameters from SYSTEM's (system or generation) \"parameters\"
 | 
				
			||||||
 | 
					file and returns the corresponding <boot-parameters> 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
 | 
					;;; system.scm ends here
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -369,9 +369,7 @@ it atomically, and then run OS's activation script."
 | 
				
			||||||
NUMBERS, which is a list of generation numbers."
 | 
					NUMBERS, which is a list of generation numbers."
 | 
				
			||||||
  (define (system->boot-parameters system number time)
 | 
					  (define (system->boot-parameters system number time)
 | 
				
			||||||
    (unless-file-not-found
 | 
					    (unless-file-not-found
 | 
				
			||||||
     (let* ((file             (string-append system "/parameters"))
 | 
					     (let* ((params           (read-boot-parameters-file system)))
 | 
				
			||||||
            (params           (call-with-input-file file
 | 
					 | 
				
			||||||
                                read-boot-parameters)))
 | 
					 | 
				
			||||||
       params)))
 | 
					       params)))
 | 
				
			||||||
  (let* ((systems (map (cut generation-file-name profile <>)
 | 
					  (let* ((systems (map (cut generation-file-name profile <>)
 | 
				
			||||||
                       numbers))
 | 
					                       numbers))
 | 
				
			||||||
| 
						 | 
					@ -387,9 +385,7 @@ NUMBERS, which is a list of generation numbers."
 | 
				
			||||||
NUMBERS, which is a list of generation numbers."
 | 
					NUMBERS, which is a list of generation numbers."
 | 
				
			||||||
  (define (system->grub-entry system number time)
 | 
					  (define (system->grub-entry system number time)
 | 
				
			||||||
    (unless-file-not-found
 | 
					    (unless-file-not-found
 | 
				
			||||||
     (let* ((file             (string-append system "/parameters"))
 | 
					     (let* ((params           (read-boot-parameters-file system))
 | 
				
			||||||
            (params           (call-with-input-file file
 | 
					 | 
				
			||||||
                                read-boot-parameters))
 | 
					 | 
				
			||||||
            (label            (boot-parameters-label params))
 | 
					            (label            (boot-parameters-label params))
 | 
				
			||||||
            (root             (boot-parameters-root-device params))
 | 
					            (root             (boot-parameters-root-device params))
 | 
				
			||||||
            (root-device      (if (bytevector? root)
 | 
					            (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
 | 
					  "Re-install grub for existing system profile generation NUMBER.  STORE is an
 | 
				
			||||||
open connection to the store."
 | 
					open connection to the store."
 | 
				
			||||||
  (let* ((generation (generation-file-name %system-profile number))
 | 
					  (let* ((generation (generation-file-name %system-profile number))
 | 
				
			||||||
         (file (string-append generation "/parameters"))
 | 
					 | 
				
			||||||
         (params (unless-file-not-found
 | 
					         (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))
 | 
					         (root-device (boot-parameters-root-device params))
 | 
				
			||||||
         ;; We don't currently keep track of past menu entries' details.  The
 | 
					         ;; We don't currently keep track of past menu entries' details.  The
 | 
				
			||||||
         ;; default values will allow the system to boot, even if they differ
 | 
					         ;; 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."
 | 
					  "Display a summary of system generation NUMBER in a human-readable format."
 | 
				
			||||||
  (unless (zero? number)
 | 
					  (unless (zero? number)
 | 
				
			||||||
    (let* ((generation  (generation-file-name profile number))
 | 
					    (let* ((generation  (generation-file-name profile number))
 | 
				
			||||||
           (param-file  (string-append generation "/parameters"))
 | 
					           (params      (read-boot-parameters-file generation))
 | 
				
			||||||
           (params      (call-with-input-file param-file read-boot-parameters))
 | 
					 | 
				
			||||||
           (label       (boot-parameters-label params))
 | 
					           (label       (boot-parameters-label params))
 | 
				
			||||||
           (root        (boot-parameters-root-device params))
 | 
					           (root        (boot-parameters-root-device params))
 | 
				
			||||||
           (root-device (if (bytevector? root)
 | 
					           (root-device (if (bytevector? root)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Reference in a new issue