From: "Miguel Ángel Arruga Vivas" <rosen644835@gmail.com>
To: 44196@debbugs.gnu.org
Subject: bug#44196: [PATCH 2/3] system: Add store-directory-prefix to boot-parameters.
Date: Sat, 24 Oct 2020 20:02:16 +0200 [thread overview]
Message-ID: <87y2jvfqon.fsf@gmail.com> (raw)
In-Reply-To: <878sbvh5j4.fsf@gmail.com> ("Miguel Ángel Arruga Vivas"'s message of "Sat, 24 Oct 2020 19:56:15 +0200")
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: 0002-system-add-store-directory-prefix.patch --]
[-- Type: text/x-patch, Size: 10170 bytes --]
From 527a9271122f7b83f31dc0b910c6704af81bde66 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Miguel=20=C3=81ngel=20Arruga=20Vivas?=
<rosen644835@gmail.com>
Date: Sat, 24 Oct 2020 18:15:53 +0200
Subject: [PATCH 2/2] system: Add store-directory-prefix to boot-parameters.
* gnu/machine/ssh.scm (roll-back-managed-host): Use
boot-parameters-store-directory-prefix.
* gnu/system.scm (define-module): Export
boot-parameters-store-directory-prefix.
(<boot-parameters>)[store-directory-prefix]: New field.
[boot-parameters-store-directory-prefix]: New accessor.
(read-boot-parameters): Read directory-prefix from store field.
(operating-system-boot-parameters-file): Add directory-prefix to
store field.
* guix/scripts/system.scm (reinstall-bootloader): Use
boot-parameters-store-directory-prefix.
* test/boot-parameters.scm (%default-btrfs-subvolume,
%default-store-directory-prefix): New variables.
(%grub-boot-parameters): Use %default-store-directory-prefix.
(%default-operating-system): Use %default-btrfs-subvolume.
(test-boot-parameters): Add directory-prefix.
(test optional fields): Add test for directory-prefix.
(test os store-directory-prefix): New test.
---
gnu/machine/ssh.scm | 3 +++
gnu/system.scm | 19 ++++++++++++++++++-
guix/scripts/system.scm | 3 +++
tests/boot-parameters.scm | 23 ++++++++++++++++++++---
4 files changed, 44 insertions(+), 4 deletions(-)
diff --git a/gnu/machine/ssh.scm b/gnu/machine/ssh.scm
index 5020bd362f..a3a12fb54b 100644
--- a/gnu/machine/ssh.scm
+++ b/gnu/machine/ssh.scm
@@ -482,6 +482,8 @@ an environment type of 'managed-host."
(list (second boot-parameters))))
(locale -> (boot-parameters-locale
(second boot-parameters)))
+ (store-dir -> (boot-parameters-store-directory-prefix
+ (second boot-parameters)))
(old-entries -> (map boot-parameters->menu-entry
(drop boot-parameters 2)))
(bootloader -> (operating-system-bootloader
@@ -492,6 +494,7 @@ an environment type of 'managed-host."
bootloader))
bootloader entries
#:locale locale
+ #:store-directory-prefix store-dir
#:old-entries old-entries)))
(remote-result (machine-remote-eval machine remote-exp)))
(when (eqv? 'error remote-result)
diff --git a/gnu/system.scm b/gnu/system.scm
index a3122eaa65..30a5c418d0 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -148,6 +148,7 @@
boot-parameters-bootloader-name
boot-parameters-bootloader-menu-entries
boot-parameters-store-device
+ boot-parameters-store-directory-prefix
boot-parameters-store-mount-point
boot-parameters-locale
boot-parameters-kernel
@@ -299,6 +300,7 @@ directly by the user."
boot-parameters-bootloader-menu-entries)
(store-device boot-parameters-store-device)
(store-mount-point boot-parameters-store-mount-point)
+ (store-directory-prefix boot-parameters-store-directory-prefix)
(locale boot-parameters-locale)
(kernel boot-parameters-kernel)
(kernel-arguments boot-parameters-kernel-arguments)
@@ -394,6 +396,17 @@ file system labels."
(_ ;the old format
root-device))))
+ (store-directory-prefix
+ (match (assq 'store rest)
+ (('store . store-data)
+ (match (assq 'directory-prefix store-data)
+ (('directory-prefix prefix) prefix)
+ ;; No directory-prefix found.
+ (_ #f)))
+ (_
+ ;; No store found, old format.
+ #f)))
+
(store-mount-point
(match (assq 'store rest)
(('store ('device _) ('mount-point mount-point) _ ...)
@@ -1294,6 +1307,7 @@ such as '--root' and '--load' to <boot-parameters>."
(let* ((initrd (and (not (operating-system-hurd os))
(operating-system-initrd-file os)))
(store (operating-system-store-file-system os))
+ (file-systems (operating-system-file-systems os))
(locale (operating-system-locale os))
(bootloader (bootloader-configuration-bootloader
(operating-system-bootloader os)))
@@ -1315,6 +1329,7 @@ such as '--root' and '--load' to <boot-parameters>."
(bootloader-configuration-menu-entries (operating-system-bootloader os)))
(locale locale)
(store-device (ensure-not-/dev (file-system-device store)))
+ (store-directory-prefix (btrfs-store-subvolume-file-name file-systems))
(store-mount-point (file-system-mount-point store)))))
(define (device->sexp device)
@@ -1371,7 +1386,9 @@ being stored into the \"parameters\" file)."
(device
#$(device->sexp (boot-parameters-store-device params)))
(mount-point #$(boot-parameters-store-mount-point
- params))))
+ params))
+ (directory-prefix
+ #$(boot-parameters-store-directory-prefix params))))
#:set-load-path? #f)))
(define-gexp-compiler (operating-system-compiler (os <operating-system>)
diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm
index 9ed5c26483..ad998156c2 100644
--- a/guix/scripts/system.scm
+++ b/guix/scripts/system.scm
@@ -385,6 +385,8 @@ STORE is an open connection to the store."
(params (first (profile-boot-parameters %system-profile
(list number))))
(locale (boot-parameters-locale params))
+ (store-directory-prefix
+ (boot-parameters-store-directory-prefix params))
(old-generations
(delv number (reverse (generation-numbers %system-profile))))
(old-params (profile-boot-parameters
@@ -398,6 +400,7 @@ STORE is an open connection to the store."
((bootloader-configuration-file-generator bootloader)
bootloader-config entries
#:locale locale
+ #:store-directory-prefix store-directory-prefix
#:old-entries old-entries)))
(drvs -> (list bootcfg)))
(mbegin %store-monad
diff --git a/tests/boot-parameters.scm b/tests/boot-parameters.scm
index d7e579bc89..a00b227551 100644
--- a/tests/boot-parameters.scm
+++ b/tests/boot-parameters.scm
@@ -46,6 +46,9 @@
(define %default-initrd (string-append %default-initrd-path "/initrd.cpio.gz"))
(define %default-root-device (uuid "abcdef12-3456-7890-abcd-ef1234567890"))
(define %default-store-device (uuid "01234567-89ab-cdef-0123-456789abcdef"))
+(define %default-btrfs-subvolume "testfs")
+(define %default-store-directory-prefix
+ (string-append "/" %default-btrfs-subvolume))
(define %default-store-mount-point (%store-prefix))
(define %default-multiboot-modules '())
(define %default-locale "es_ES.utf8")
@@ -63,6 +66,7 @@
(multiboot-modules %default-multiboot-modules)
(locale %default-locale)
(store-device %default-store-device)
+ (store-directory-prefix %default-store-directory-prefix)
(store-mount-point %default-store-mount-point)))
(define %default-operating-system
@@ -81,7 +85,10 @@
(file-system
(device %default-store-device)
(mount-point %default-store-mount-point)
- (type "btrfs"))
+ (type "btrfs")
+ (options
+ (string-append "subvol="
+ %default-btrfs-subvolume)))
%base-file-systems))))
(define (quote-uuid uuid)
@@ -103,6 +110,7 @@
(with-store #t)
(store-device
(quote-uuid %default-store-device))
+ (store-directory-prefix %default-store-directory-prefix)
(store-mount-point %default-store-mount-point))
(define (generate-boot-parameters)
(define (sexp-or-nothing fmt val)
@@ -117,10 +125,12 @@
(sexp-or-nothing " (kernel-arguments ~S)" kernel-arguments)
(sexp-or-nothing " (initrd ~S)" initrd)
(if with-store
- (format #false " (store~a~a)"
+ (format #false " (store~a~a~a)"
(sexp-or-nothing " (device ~S)" store-device)
(sexp-or-nothing " (mount-point ~S)"
- store-mount-point))
+ store-mount-point)
+ (sexp-or-nothing " (directory-prefix ~S)"
+ store-directory-prefix))
"")
(sexp-or-nothing " (locale ~S)" locale)
(sexp-or-nothing " (bootloader-name ~a)" bootloader-name)
@@ -149,6 +159,7 @@
(test-read-boot-parameters #:store-device #false)
(test-read-boot-parameters #:store-device 'false)
(test-read-boot-parameters #:store-mount-point #false)
+ (test-read-boot-parameters #:store-directory-prefix #false)
(test-read-boot-parameters #:multiboot-modules #false)
(test-read-boot-parameters #:locale #false)
(test-read-boot-parameters #:bootloader-name #false
@@ -253,4 +264,10 @@
(operating-system-boot-parameters %default-operating-system
%default-root-device)))
+(test-equal "from os, store-directory-prefix"
+ %default-store-directory-prefix
+ (boot-parameters-store-directory-prefix
+ (operating-system-boot-parameters %default-operating-system
+ %default-root-device)))
+
(test-end "boot-parameters")
--
2.28.0
next prev parent reply other threads:[~2020-10-24 18:04 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-24 17:56 bug#44196: Problems with /gnu/store in a different btrfs subvolume Miguel Ángel Arruga Vivas
2020-10-24 18:01 ` bug#44196: [PATCH 1/3] system: Fix grub keymap with store in " Miguel Ángel Arruga Vivas
2020-10-30 19:36 ` Danny Milosavljevic
2020-10-30 21:38 ` Miguel Ángel Arruga Vivas
2020-10-24 18:02 ` Miguel Ángel Arruga Vivas [this message]
2020-10-31 21:39 ` bug#44196: [PATCH 2/3] system: Add store-directory-prefix to boot-parameters Ludovic Courtès
2020-10-31 23:02 ` Miguel Ángel Arruga Vivas
2020-11-01 0:01 ` Miguel Ángel Arruga Vivas
2020-11-01 1:44 ` Miguel Ángel Arruga Vivas
2020-11-02 16:06 ` Ludovic Courtès
2020-11-02 18:52 ` Miguel Ángel Arruga Vivas
2020-11-03 9:26 ` Ludovic Courtès
2020-10-24 21:13 ` bug#44196: [PATCH 3/3] gnu: grub: Add output locale Miguel Ángel Arruga Vivas
2020-10-25 10:04 ` bug#44196: [PATCH 3/3 v2] gnu: grub: Add locale output Miguel Ángel Arruga Vivas
2020-10-26 22:04 ` bug#44196: [PATCH 3/3 v3] system: Do not depend on locale folder generated by grub-install Miguel Ángel Arruga Vivas
2020-10-28 21:34 ` bug#44196: [PATCH v4 3/4] system: Do not depend on locale folder generated by Miguel Ángel Arruga Vivas
2020-10-30 18:13 ` bug#44196: [PATCH v5 " Miguel Ángel Arruga Vivas
2020-10-30 21:45 ` bug#44196: [PATCH v6 " Miguel Ángel Arruga Vivas
2020-10-31 21:44 ` Ludovic Courtès
2020-11-01 0:36 ` Miguel Ángel Arruga Vivas
2020-10-26 22:29 ` bug#44196: [PATCH 4/3] system: Fix dependency for grub.cfg generation Miguel Ángel Arruga Vivas
2020-10-30 19:35 ` Danny Milosavljevic
2020-10-30 21:38 ` Miguel Ángel Arruga Vivas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87y2jvfqon.fsf@gmail.com \
--to=rosen644835@gmail.com \
--cc=44196@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).