From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp0.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms13.migadu.com with LMTPS id 2MjpH2q8smaQKwAAqHPOHw:P1 (envelope-from ) for ; Wed, 07 Aug 2024 00:14:34 +0000 Received: from aspmx1.migadu.com ([2001:41d0:303:e16b::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp0.migadu.com with LMTPS id 2MjpH2q8smaQKwAAqHPOHw (envelope-from ) for ; Wed, 07 Aug 2024 02:14:34 +0200 X-Envelope-To: larch@yhetil.org Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=tbVaCnpN; dkim=fail ("headers rsa verify failed") header.d=lunabee.space header.s=purelymail3 header.b=mjxvt1j9; dkim=fail ("headers rsa verify failed") header.d=purelymail.com header.s=purelymail3 header.b=pTm4sshs; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gnu.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1722989674; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=84/2yjYQnU7+z8GmMgD4MuSxb3CRyFMyRCZ/dLM81BQ=; b=rgzTQceV60v0FnO3w/p/dusJ6vqv/gVq47ZO7Q4QB3wMvojQSbEWTuwOkmcHXg9kNCbKtN jKlvwP7dg9dzr+2QzKD9A6tC0blQv8yyxf2xAdOMvQg4xxjn2R2yVGuiuJQoCYrRrknfNB QNSECwNmtEC8zPKrVEEwLdDjqIFtdxkt7bEoxxPc95L8wl4SOvPWsSMSTXVyHSHnmZ1C4i Pz554Umc8Z7ZhOcnPdm9eV1nAJcF7BIMfNrHs+SpKqYB7Vxf3sPZQuF9JApzzyQbxe7/1K 6byHv8yOLHr1PFCoqhZKdn8ux2/eImw6bFom/XbgcqYUo7aZOL/c4dnZ6ogoSA== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=debbugs.gnu.org header.s=debbugs-gnu-org header.b=tbVaCnpN; dkim=fail ("headers rsa verify failed") header.d=lunabee.space header.s=purelymail3 header.b=mjxvt1j9; dkim=fail ("headers rsa verify failed") header.d=purelymail.com header.s=purelymail3 header.b=pTm4sshs; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org"; dmarc=pass (policy=none) header.from=gnu.org ARC-Seal: i=1; s=key1; d=yhetil.org; t=1722989674; a=rsa-sha256; cv=none; b=D/s0Rh99nNm7ke1vZcZ/hutPzUZequCG6hWD124vBRN2/O91eIKUCZ+BzhtJ+5c8+ZD7Ed XFXzmqCR0mX9qv6AQwkEKx5sGkZD+cDX1Y5YdFPXs4DLdbGQXs+tV933OPGt1PEZZ4qxw6 z5mqI4XRr/mRh/ADBjIrY6MAO6VntY5WXhRpPAyjijcj576tYv1nH8mgiELq+ADuCBT4MT GEipZalba5NIGXZynZrccLOPnR500XgYq7XYTy7js4ersbb438M5L+8qQJGcPe4/8ws8yA p9vG6fBRewcF15iQP1t9tfWG4ly8A6FISryzQ5Bx5ov7P1iG382rWtiHh14Cog== Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 526CB563B0 for ; Wed, 7 Aug 2024 02:14:34 +0200 (CEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sbUJL-0004oJ-QB; Tue, 06 Aug 2024 20:13:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sbUJE-0004IU-7E for guix-patches@gnu.org; Tue, 06 Aug 2024 20:13:44 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1sbUJA-00025B-7v; Tue, 06 Aug 2024 20:13:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=84/2yjYQnU7+z8GmMgD4MuSxb3CRyFMyRCZ/dLM81BQ=; b=tbVaCnpNFwgmZgZKgfz16dzvhAgN70SrP1yRDoKH7mM+bFQoQf0awu2O7nBOKEM/7pGa4AEFaQZFsYeLEYUuVspD6FPcMisrQvaZRVMlKjmAiU3nkgEmdDcs8FmRXcQz03dWdS/yKZR23FrIKGo3K/pf9wn6q7u2kokpA9wj+h4zySPb/5OAmHc0tJJbK/zpHraSMqlFGPpMzSf5p1OPUUojtsT4VYp97PRMMdnSHU9DZVBBnS4tTd+SLHWSkIwG1AOjWnt+NPIccI97Rch0RftR7uqHdBfaB8WHF3KnIvk92yd6kmDUif7VtBlHVHbwitB9eC4aOI2xldXybxgX6g==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1sbUJW-0006xD-UL; Tue, 06 Aug 2024 20:14:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#72457] [PATCH v5 01/15] guix: scripts: Rewrite reinstall-bootloader to use provenance data. Resent-From: Lilah Tascheter Original-Sender: "Debbugs-submit" Resent-CC: guix@cbaines.net, dev@jpoiret.xyz, ludo@gnu.org, othacehe@gnu.org, zimon.toutoune@gmail.com, me@tobias.gr, guix-patches@gnu.org Resent-Date: Wed, 07 Aug 2024 00:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 72457 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 72457@debbugs.gnu.org Cc: Lilah Tascheter , Sergey Trofimov , Christopher Baines , Josselin Poiret , Ludovic Court??s , Mathieu Othacehe , Simon Tournier , Tobias Geerinckx-Rice X-Debbugs-Original-Xcc: Christopher Baines , Josselin Poiret , Ludovic Court??s , Mathieu Othacehe , Simon Tournier , Tobias Geerinckx-Rice Received: via spool by 72457-submit@debbugs.gnu.org id=B72457.172298962826611 (code B ref 72457); Wed, 07 Aug 2024 00:14:02 +0000 Received: (at 72457) by debbugs.gnu.org; 7 Aug 2024 00:13:48 +0000 Received: from localhost ([127.0.0.1]:33229 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbUJH-0006v6-Lv for submit@debbugs.gnu.org; Tue, 06 Aug 2024 20:13:48 -0400 Received: from sendmail.purelymail.com ([34.202.193.197]:33130) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1sbUJF-0006uX-An for 72457@debbugs.gnu.org; Tue, 06 Aug 2024 20:13:46 -0400 DKIM-Signature: a=rsa-sha256; b=mjxvt1j9z3HHyKKTupAKB2oaPV0akVKSdQSqkEC2Yz0VcElpq/S9IF073Jz3eUlZuL+6LF5fZhLvQSGFoc5bSPgk5rd6HVejQRVmEMMXnuADbigE8jbTj/6cM5nrwkm0W6mBzN3FX/phHyxanvdAvDXK2yweH4gPdE16PQ/GiWt4Neq7dMgE3zMnCUK0dHYs8t/XN4kHxYsU7KkhP6yV2pG7ehHYvm3WHS8HyGXUrkpE+Ri9whuyyUCsyZpP4BK7Yw1FiMUSjKKOabni/k73JDKLMbyT0OYl3e25IXTrbuClWz6uBXOlpBwHwaWdI2r2MtHGd/HkBYWAI5AkdYyLxw==; s=purelymail3; d=lunabee.space; v=1; bh=NGAX//6gbaSkVGZaNWtJqH+fpDh0lE7iNJYijsJRixk=; h=Received:From:To:Subject:Date; DKIM-Signature: a=rsa-sha256; b=pTm4sshsTlmAlKkQxyvjxFgXXbxAp/Y8Ea/TWdDHqEOaxd5jn6AsZyYjBPSLN08WxHO8xihKgk/wlYjBfQkMuFu/K1MhmzMAOdRdr+wPoGwiLZfnvP5vj1PSkbWeZ1Ms3z4oKaTfjnAq/SYHHULOeEhfP81xCoh7hvYolZLxZGCs5fxZnJR7Lw1/gB1TJCh1MdkteZQANlAwOO5LQzZu9SyD9HDs4ujfVX0Gmk9568y4qYt6VP40SYk3JOgx0lJqVu8YYTi3gCAMwV8lCMwkQ7gQzpHmfFz0vYV51IJ0rljXB6p4DEfLr2WnUmtEdEOiO7/BY7COLjjE29MXGJ/Xww==; s=purelymail3; d=purelymail.com; v=1; bh=NGAX//6gbaSkVGZaNWtJqH+fpDh0lE7iNJYijsJRixk=; h=Feedback-ID:Received:From:To:Subject:Date; Feedback-ID: 8937:2070:null:purelymail X-Pm-Original-To: 72457@debbugs.gnu.org Received: by smtp.purelymail.com (Purelymail SMTP) with ESMTPSA id -1661201426; (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Wed, 07 Aug 2024 00:13:06 +0000 (UTC) Date: Tue, 6 Aug 2024 19:11:14 -0500 Message-ID: <6d8a2015a9e54642e3ecf0f7d1d95300496cbbde.1722989488.git.lilah@lunabee.space> In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-MIME-Autoconverted: from 8bit to quoted-printable by Purelymail Content-Type: text/plain; charset=UTF-8 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Lilah Tascheter via Guix-patches Reply-To: Lilah Tascheter Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: guix-patches-bounces+larch=yhetil.org@gnu.org X-Migadu-Country: US X-Migadu-Flow: FLOW_IN X-Migadu-Queue-Id: 526CB563B0 X-Migadu-Scanner: mx13.migadu.com X-Migadu-Spam-Score: -5.44 X-Spam-Score: -5.44 X-TUID: /MQySma+Uoer The current implementation is broken anyway. Multiple bootloaders share a name (including both versions of extlinux) and bootloader-configuration data is significant to bootloader installation. It shouldn't be just faked. Rely on the provenance service instead, which while not always present, should be for the vast majority of systems. * guix/scripts/system.scm (reinstall-bootloader): Rename to... (install-bootloader-from-provenance): ...this, and rewrite to extract bootloader-configuration data from system provenance. (switch-to-system-generation, process-command): Use install-bootloader-from-provenance. Change-Id: I5713a43ad4f9f32a129d980db06d70de16b03f27 --- guix/scripts/system.scm | 75 ++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 50 deletions(-) diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 0f7d864e06..bb7b5d37bf 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -88,6 +88,7 @@ (define-module (guix scripts system) #:use-module (srfi srfi-37) #:use-module (ice-9 format) #:use-module (ice-9 match) + #:use-module (ice-9 receive) #:use-module (rnrs bytevectors) #:export (guix-system read-operating-system @@ -377,60 +378,33 @@ (define (switch-to-system-generation store spec) (activate (string-append generation "/activate"))) (if number (begin - (reinstall-bootloader store number) + (install-bootloader-from-provenance store number) (switch-to-generation* %system-profile number) (unless-file-not-found (primitive-load activate))) (leave (G_ "cannot switch to system generation '~a'~%") spec)))) =20 -(define* (system-bootloader-name #:optional (system %system-profile)) - "Return the bootloader name stored in SYSTEM's \"parameters\" file." - (let ((params (unless-file-not-found - (read-boot-parameters-file system)))) - (boot-parameters-bootloader-name params))) - -(define (reinstall-bootloader store number) - "Re-install bootloader for existing system profile generation NUMBER. -STORE is an open connection to the store." +(define (install-bootloader-from-provenance store number) + "Re-install an old bootloader using provenance data for system profile +generation NUMBER with store STORE." (let* ((generation (generation-file-name %system-profile number)) - ;; Detect the bootloader used in %system-profile. - (bootloader (lookup-bootloader-by-name (system-bootloader-name))) - - ;; Use the detected bootloader with default configuration. - ;; It will be enough to allow the system to boot. - (bootloader-config (bootloader-configuration - (bootloader bootloader))) - - ;; Make the specified system generation the default entry. - (chosen-alternative (generation->boot-alternative - %system-profile number)) - (params (boot-alternative-parameters chosen-alternative)) - (locale (boot-parameters-locale params)) - (store-crypto-devices (boot-parameters-store-crypto-devices param= s)) - (store-directory-prefix - (boot-parameters-store-directory-prefix params)) - (old-generations - (delv number (reverse (generation-numbers %system-profile)))) - (previous-boot-alternatives (profile->boot-alternatives - %system-profile old-generations)) - (entries (list (boot-parameters->menu-entry params))) - (old-entries (map boot-parameters->menu-entry - (map boot-alternative-parameters - previous-boot-alternatives)))) - (run-with-store store - (mlet* %store-monad - ((bootcfg (lower-object - ((bootloader-configuration-file-generator bootloader) - bootloader-config entries - #:locale locale - #:store-crypto-devices store-crypto-devices - #:store-directory-prefix store-directory-prefix - #:old-entries old-entries))) - (drvs -> (list bootcfg))) - (mbegin %store-monad - (built-derivations drvs) - ;; Only install bootloader configuration file. - (install-bootloader local-eval bootloader-config bootcfg - #:run-installer? #f)))))) + (os (receive (_ os) (system-provenance generation) + (and=3D> os read-operating-system))) + (bootloader-config (operating-system-bootloader os)) + (bootloader (bootloader-configuration-bootloader bootloader-confi= g)) + (numbers (delv number (reverse (generation-numbers %system-profil= e)))) + (old (profile->boot-alternatives %system-profile numbers))) + (if os + (run-with-store store + (mlet* %store-monad + ((bootcfg (lower-object (operating-system-bootcfg os old))) + (drvs -> (list bootcfg))) + (mbegin %store-monad + (built-derivations drvs) + ;; Only install bootloader configuration file. + (install-bootloader local-eval bootloader-config bootcfg + #:run-installer? #f)))) + (leave (G_ "cannot rollback to provenanceless generation '~a'~%") + number)))) =20 =0C ;;; @@ -1416,7 +1390,8 @@ (define (process-command command args opts) (x (leave (G_ "wrong number of arguments~%")))))) (with-store* store (delete-matching-generations store %system-profile pattern) - (reinstall-bootloader store (generation-number %system-profile)))= )) + (install-bootloader-from-provenance store + (generation-number %system-profile))))) ((switch-generation) (let ((pattern (match args ((pattern) pattern) --=20 2.45.2