diff options
author | Mathieu Othacehe <othacehe@gnu.org> | 2020-06-22 17:40:10 +0200 |
---|---|---|
committer | Mathieu Othacehe <othacehe@gnu.org> | 2020-06-22 17:49:19 +0200 |
commit | 7f75a7ec08975eb6d6e01db61bd6b91f447f655e (patch) | |
tree | 49bc72e041adcc440be172358a23968ad1d19633 /gnu/system | |
parent | cf14e67963147d5ecccb820203e601080f856f74 (diff) | |
download | guix-7f75a7ec08975eb6d6e01db61bd6b91f447f655e.tar.gz |
system: image: Remove "image-root" when building raw disk-images.
The "image-root" derivation output is used as a temporary directory that is passed to mke2fs and mkdosfs later on. By merging the creation of this directory and the production of partition images, we can get rid of the derivation. As mke2fs and mkdosfs are not able to override file permissions, call those commands with fakeroot. This way, all the image files will be owned by root, even if image generation is done in an unprivilegded context. * gnu/system/image.scm (system-disk-image): Merge "image-root" and "iso9660-image" derivations so that we spare an extra derivation. Also add "fakeroot" and its runtime dependencies to the inputs. * gnu/build/image.scm (make-ext-image, make-vfat-image): Make sure that mke2fs and mkdosfs are respectively called by fakeroot.
Diffstat (limited to 'gnu/system')
-rw-r--r-- | gnu/system/image.scm | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/gnu/system/image.scm b/gnu/system/image.scm index 9f210d9f0f..43217ddf86 100644 --- a/gnu/system/image.scm +++ b/gnu/system/image.scm @@ -255,18 +255,24 @@ used in the image." (graph (match inputs (((names . _) ...) names))) - (root-builder + (type (partition-file-system partition)) + (image-builder (with-imported-modules* - (let* ((initializer #$(partition-initializer partition))) + (let ((initializer #$(partition-initializer partition)) + (inputs '#+(list e2fsprogs fakeroot dosfstools mtools + sed coreutils)) + (image-root "tmp-root")) (sql-schema #$schema) + (set-path-environment-variable "PATH" '("bin" "sbin") inputs) + ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be ;; decoded. (setenv "GUIX_LOCPATH" #+(file-append glibc-utf8-locales "/lib/locale")) (setlocale LC_ALL "en_US.utf8") - (initializer #$output + (initializer image-root #:references-graphs '#$graph #:deduplicate? #f #:system-directory #$os @@ -277,19 +283,12 @@ used in the image." #+(bootloader-installer bootloader) #:bootcfg #$bootcfg #:bootcfg-location - #$(bootloader-configuration-file bootloader))))) - (image-root - (computed-file "partition-image-root" root-builder - #:options `(#:references-graphs ,inputs))) - (type (partition-file-system partition)) - (image-builder - (with-imported-modules* - (let ((inputs '#+(list e2fsprogs dosfstools mtools))) - (set-path-environment-variable "PATH" '("bin" "sbin") inputs) + #$(bootloader-configuration-file bootloader)) (make-partition-image #$(partition->gexp partition) #$output - #$image-root))))) - (computed-file "partition.img" image-builder))) + image-root))))) + (computed-file "partition.img" image-builder + #:options `(#:references-graphs ,inputs)))) (define (partition->config partition) ;; Return the genimage partition configuration for PARTITION. |