This version field exposes the (already present) version information of a boot parameters file.
* gnu/system.scm (%boot-parameters-version): New variable. (<boot-parameters>)[version]: New field. (read-boot-parameters): Use it. (operating-system-boot-parameters-file): Likewise. * tests/boot-parameters.scm (test-read-boot-parameters): Use %boot-parameters-version as the default version value in the template. --- gnu/system.scm | 18 ++++++++++++++---- tests/boot-parameters.scm | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index cc925de16f..c29a44111b 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2020 Danny Milosavljevic <dan...@scratchpost.org> ;;; Copyright © 2020, 2021 Brice Waegeneire <br...@waegenei.re> ;;; Copyright © 2020 Florian Pelz <pelzflor...@pelzflorian.de> -;;; Copyright © 2020 Maxim Cournoyer <maxim.courno...@gmail.com> +;;; Copyright © 2020, 2022 Maxim Cournoyer <maxim.courno...@gmail.com> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <jan...@gnu.org> ;;; Copyright © 2020 Efraim Flashner <efr...@flashner.co.il> ;;; Copyright © 2021 Maxime Devos <maximede...@telenet.be> @@ -161,6 +161,8 @@ (define-module (gnu system) boot-parameters-kernel-arguments boot-parameters-initrd boot-parameters-multiboot-modules + boot-parameters-version + %boot-parameters-version read-boot-parameters read-boot-parameters-file boot-parameters->menu-entry @@ -295,6 +297,8 @@ (define (operating-system-kernel-arguments os root-device) ;;; Boot parameters ;;; +(define %boot-parameters-version 0) + (define-record-type* <boot-parameters> boot-parameters make-boot-parameters boot-parameters? (label boot-parameters-label) @@ -322,7 +326,9 @@ (define-record-type* <boot-parameters> (kernel boot-parameters-kernel) (kernel-arguments boot-parameters-kernel-arguments) (initrd boot-parameters-initrd) - (multiboot-modules boot-parameters-multiboot-modules)) + (multiboot-modules boot-parameters-multiboot-modules) + (version boot-parameters-version ;positive integer + (default %boot-parameters-version))) (define (ensure-not-/dev device) "If DEVICE starts with a slash, return #f. This is meant to filter out @@ -359,12 +365,16 @@ (define uuid-sexp->uuid (warning (G_ "unrecognized uuid ~a at '~a'~%") x (port-filename port)) #f))) + (define (version? n) + (and (exact-integer? n) (not (negative? n)))) + (match (read port) - (('boot-parameters ('version 0) + (('boot-parameters ('version (? version? version)) ('label label) ('root-device root) ('kernel kernel) rest ...) (boot-parameters + (version version) (label label) (root-device (device-sexp->device root)) @@ -1500,7 +1510,7 @@ (define* (operating-system-boot-parameters-file os system-kernel-arguments?))) (scheme-file "parameters" #~(boot-parameters - (version 0) + (version #$(boot-parameters-version params)) (label #$(boot-parameters-label params)) (root-device #$(device->sexp diff --git a/tests/boot-parameters.scm b/tests/boot-parameters.scm index b2799d0596..d4b680df2e 100644 --- a/tests/boot-parameters.scm +++ b/tests/boot-parameters.scm @@ -101,7 +101,7 @@ (define (quote-uuid uuid) ;; Call read-boot-parameters with the desired string as input. (define* (test-read-boot-parameters #:key - (version 0) + (version %boot-parameters-version) (bootloader-name 'grub) (bootloader-menu-entries '()) (label %default-label) -- 2.34.0