From debbugs-submit-bounces@debbugs.gnu.org Mon Feb 28 17:51:29 2022 Received: (at 40998) by debbugs.gnu.org; 28 Feb 2022 22:51:29 +0000 Received: from localhost ([127.0.0.1]:34941 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nOorV-0008Be-2H for submit@debbugs.gnu.org; Mon, 28 Feb 2022 17:51:29 -0500 Received: from mail-qv1-f52.google.com ([209.85.219.52]:43987) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nOorP-0008BJ-Iy for 40998@debbugs.gnu.org; Mon, 28 Feb 2022 17:51:23 -0500 Received: by mail-qv1-f52.google.com with SMTP id c14so10356905qvk.10 for <40998@debbugs.gnu.org>; Mon, 28 Feb 2022 14:51:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=pgBgeKIJ80GUPqRsUuOcijxTXOHyh+Y5TGaICnL0Pwg=; b=Ta0SujBGF43hj4vE9j1EYhCXlIEE0DSnvr9HHhlgmq1OqUuSkfvrNl6jgMaR8YWbtj LgLAZrb/kILUnJDui1KQYVzLZhJeFItGn6Ps40gO2f0ToJIJczztwKIe1vfKFw6FXWA5 GSgrZ+DzmCTDhof9rNohlsMg6nxTBjDdnjxpgcfXS9aLFWiJR3vJ/uM2QYWoKAgiVxEc TSnNOKeb5mGJ00h1y2bpEYjtQ661UzaeAldeKXI+c1wMjbjBVplHD9Nf0RyLrj+lSjYf Hgmtx7yJSKOtd2BGzm2I+RSEss2jIopqCyhBgcXmgQO1bDDlsHHeSIyhMq4x3oEdAiB6 AWFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=pgBgeKIJ80GUPqRsUuOcijxTXOHyh+Y5TGaICnL0Pwg=; b=u/I3X2Q2sMm7GUeBJua1ZLwWYw9FBffuawPqECAJKcyg2IZNwdifByWY9CFYkhySAl lg1tTtPnG/EloUgEwnLDydJNKPKEIj8yUtvhk6qi3st8JTVH50vw8B99v10bYhT/wEQr bxhtR6afAl+7KbHoOWMI9gjlHdlFCGQg+sKUNzJcBuTXoD50ACgJ4PKbj+mieHrhgQes fTBkXA4ZIfB9bMEu1+C70wBsB/SYJdL+KQWv9m62OjYKVYiuO9IHDGfmM5Om6AbIeplB sR6rFQq0xxCj9UXfp4sKDYmDyPeuOWzArf99i7i4VTQ8pogqlWH0EZ3wE4Uf89bHLvlA YWCQ== X-Gm-Message-State: AOAM5320NreVEAaiWW6YtMcG9ViTvs12N1mFzhQ9rOO4W0Rs5CKyXq2E P9iZdOIZSsvSj/lxMuEzmH7hjD8RxLiroA== X-Google-Smtp-Source: ABdhPJxBG7UUn21zTUtPn5GNkyZMKeBxbS6FXaapms6vvztzWRJ5MptCoWU6u676v+JAHx/QLXSNfA== X-Received: by 2002:ac8:5d49:0:b0:2df:f50f:f4eb with SMTP id g9-20020ac85d49000000b002dff50ff4ebmr9880594qtx.202.1646088673833; Mon, 28 Feb 2022 14:51:13 -0800 (PST) Received: from localhost.localdomain (dsl-141-227.b2b2c.ca. [66.158.141.227]) by smtp.gmail.com with ESMTPSA id b17-20020ae9eb11000000b0064917bda713sm5562714qkg.85.2022.02.28.14.51.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Feb 2022 14:51:13 -0800 (PST) From: Maxim Cournoyer To: 40998@debbugs.gnu.org Subject: [PATCH 1/4] system: Add a version field to the record. Date: Mon, 28 Feb 2022 17:50:43 -0500 Message-Id: <20220228225047.11105-1-maxim.cournoyer@gmail.com> X-Mailer: git-send-email 2.34.0 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 40998 Cc: ludo@gnu.org, me@tobias.gr, Maxim Cournoyer X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This version field exposes the (already present) version information of a boot parameters file. * gnu/system.scm (%boot-parameters-version): New variable. ()[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 | 20 ++++++++++++++++---- tests/boot-parameters.scm | 2 +- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index cc925de16f..9ae158dea6 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2020 Danny Milosavljevic ;;; Copyright © 2020, 2021 Brice Waegeneire ;;; Copyright © 2020 Florian Pelz -;;; Copyright © 2020 Maxim Cournoyer +;;; Copyright © 2020, 2022 Maxim Cournoyer ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen ;;; Copyright © 2020 Efraim Flashner ;;; Copyright © 2021 Maxime Devos @@ -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 make-boot-parameters boot-parameters? (label boot-parameters-label) @@ -322,7 +326,9 @@ (define-record-type* (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,18 @@ (define uuid-sexp->uuid (warning (G_ "unrecognized uuid ~a at '~a'~%") x (port-filename port)) #f))) + ;; New versions are not backward-compatible, so only accept past and current + ;; versions, not future ones. + (define (version? n) + (member n (iota (1+ %boot-parameters-version)))) + (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 +1512,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