(address . guix-patches@gnu.org)
* gnu/image.scm (<system>): New field.
* gnu/system/image.scm (arm32-disk-image, arm64-disk-image): Set the system
field.
(system-image): Do not try to cross-compile if we are running on the
appropriate system.
* gnu/system/images/hurd.scm (hurd-disk-image): Set the system field.
---
gnu/image.scm | 3 +++
gnu/system/image.scm | 12 +++++++++++-
gnu/system/images/hurd.scm | 1 +
3 files changed, 15 insertions(+), 1 deletion(-)
Toggle diff (72 lines)
diff --git a/gnu/image.scm b/gnu/image.scm
index a60d83b175..a56710d540 100644
--- a/gnu/image.scm
+++ b/gnu/image.scm
@@ -33,6 +33,7 @@
image
image-name
image-format
+ image-system
image-target
image-size
image-operating-system
@@ -77,6 +78,8 @@
(name image-name ;symbol
(default #f))
(format image-format) ;symbol
+ (system image-system
+ (default #f))
(target image-target
(default #f))
(size image-size ;size in bytes as integer
diff --git a/gnu/system/image.scm b/gnu/system/image.scm
index 4972d9067b..f3d5734381 100644
--- a/gnu/system/image.scm
+++ b/gnu/system/image.scm
@@ -131,6 +131,7 @@
(define arm32-disk-image
(image
(format 'disk-image)
+ (system "armhf-linux")
(target "arm-linux-gnueabihf")
(partitions
(list (partition
@@ -143,6 +144,7 @@
(define arm64-disk-image
(image
(inherit arm32-disk-image)
+ (system "aarch64-linux")
(target "aarch64-linux-gnu")))
@@ -613,7 +615,15 @@ it can be used for bootloading."
"Return the derivation of IMAGE. It can be a raw disk-image or an ISO9660
image, depending on IMAGE format."
(define substitutable? (image-substitutable? image))
- (define target (image-target image))
+
+ ;; The image definition may provide the appropriate "system" architecture
+ ;; for the image. If we are already running on this system, the image can
+ ;; be built natively. If we are running on a different system, then we need
+ ;; to cross-compile, using the "target" provided by the image definition.
+ (define system (image-system image))
+ (define target (if (eq? system (%current-system))
+ #f
+ (image-target image)))
(with-parameters ((%current-target-system target))
(let* ((os (operating-system-for-image image))
diff --git a/gnu/system/images/hurd.scm b/gnu/system/images/hurd.scm
index 4417952c5d..6e7dbaa7a7 100644
--- a/gnu/system/images/hurd.scm
+++ b/gnu/system/images/hurd.scm
@@ -75,6 +75,7 @@
(define hurd-disk-image
(image
(format 'disk-image)
+ (system "i586-gnu")
(target "i586-pc-gnu")
(partitions
(list (partition
--
2.29.2