[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug#36477] [PATCH v2 60/61] system: vm: Support cross-compilation.
From: |
Mathieu Othacehe |
Subject: |
[bug#36477] [PATCH v2 60/61] system: vm: Support cross-compilation. |
Date: |
Wed, 21 Aug 2019 10:54:54 +0200 |
* gnu/system.scm (system-linux-image-file-name): Add support for cross-built
systems. Remove system argument that was ignored,
(operating-system-kernel-file): adapt by removing ignored os argument.
* gnu/system/vm.scm (expression->derivation-in-linux-vm): Add target argument,
move qemu from inputs list to a new native-inputs list and adapt
set-path-environment-variable call accordingly. Pass target to qemu-command
and gexp->derivation calls.
(iso9660-image): Move qemu from inputs to a new native-inputs list and adapt
set-path-environment-variable accordingly.
(qemu-image): Add target argument, move qemu from inputs list to a new
native-inputs list and adapt set-path-environment-variable call
accordingly. Pass target argument to expression->derivation-in-linux-vm call.
---
gnu/system.scm | 15 ++++++++-------
gnu/system/vm.scm | 25 ++++++++++++++++++-------
2 files changed, 26 insertions(+), 14 deletions(-)
diff --git a/gnu/system.scm b/gnu/system.scm
index 485896ba0a..85059119cc 100644
--- a/gnu/system.scm
+++ b/gnu/system.scm
@@ -439,20 +439,21 @@ from the initrd."
"Return the list of swap services for OS."
(map swap-service (operating-system-swap-devices os)))
-(define* (system-linux-image-file-name #:optional (system (%current-system)))
+(define* (system-linux-image-file-name)
"Return the basename of the kernel image file for SYSTEM."
;; FIXME: Evaluate the conditional based on the actual current system.
- (cond
- ((string-prefix? "arm" (%current-system)) "zImage")
- ((string-prefix? "mips" (%current-system)) "vmlinuz")
- ((string-prefix? "aarch64" (%current-system)) "Image")
- (else "bzImage")))
+ (let ((target (or (%current-target-system) (%current-system))))
+ (cond
+ ((string-prefix? "arm" target) "zImage")
+ ((string-prefix? "mips" target) "vmlinuz")
+ ((string-prefix? "aarch64" target) "Image")
+ (else "bzImage"))))
(define (operating-system-kernel-file os)
"Return an object representing the absolute file name of the kernel image of
OS."
(file-append (operating-system-kernel os)
- "/" (system-linux-image-file-name os)))
+ "/" (system-linux-image-file-name)))
(define* (operating-system-directory-base-entries os)
"Return the basic entries of the 'system' directory of OS for use as the
diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm
index 07cee2d4f5..759745c277 100644
--- a/gnu/system/vm.scm
+++ b/gnu/system/vm.scm
@@ -143,7 +143,7 @@
(define* (expression->derivation-in-linux-vm name exp
#:key
- (system (%current-system))
+ (system (%current-system)) target
(linux linux-libre)
initrd
(qemu qemu-minimal)
@@ -214,7 +214,8 @@ made available under the /xchg CIFS share."
(use-modules (guix build utils)
(gnu build vm))
- (let* ((inputs '#$(list qemu (canonical-package coreutils)))
+ (let* ((inputs '#$(list (canonical-package coreutils)))
+ (native-inputs '#+(list qemu))
(linux (string-append #$linux "/"
#$(system-linux-image-file-name)))
(initrd #$initrd)
@@ -222,16 +223,19 @@ made available under the /xchg CIFS share."
(graphs '#$(match references-graphs
(((graph-files . _) ...) graph-files)
(_ #f)))
+ (target #$(or (%current-target-system)
(%current-system)))
(size #$(if (eq? 'guess disk-image-size)
#~(+ (* 70 (expt 2 20)) ;ESP
(estimated-partition-size graphs))
disk-image-size)))
- (set-path-environment-variable "PATH" '("bin") inputs)
+ (set-path-environment-variable "PATH" '("bin")
+ (append inputs native-inputs))
(load-in-linux-vm loader
#:output #$output
#:linux linux #:initrd initrd
+ #:qemu (qemu-command target)
#:memory-size #$memory-size
#:make-disk-image? #$make-disk-image?
#:single-file-output? #$single-file-output?
@@ -248,6 +252,7 @@ made available under the /xchg CIFS share."
(gexp->derivation name builder
;; TODO: Require the "kvm" feature.
#:system system
+ #:target target
#:env-vars env-vars
#:guile-for-build guile-for-build
#:references-graphs references-graphs)))
@@ -299,9 +304,10 @@ INPUTS is a list of inputs (as for packages)."
(setlocale LC_ALL "en_US.utf8")
(let ((inputs
- '#$(append (list qemu parted e2fsprogs dosfstools xorriso)
+ '#$(append (list parted e2fsprogs dosfstools xorriso)
(map canonical-package
(list sed grep coreutils findutils gawk))))
+ (native-inputs '#+(list qemu))
(graphs '#$(match inputs
@@ -315,7 +321,8 @@ INPUTS is a list of inputs (as for packages)."
((name thing output) `(,thing ,output)))
inputs)))
- (set-path-environment-variable "PATH" '("bin" "sbin") inputs)
+ (set-path-environment-variable "PATH" '("bin" "sbin")
+ (append inputs native-inputs))
(make-iso9660-image #$xorriso
'#$grub-mkrescue-environment
#$(bootloader-package bootloader)
@@ -346,6 +353,7 @@ INPUTS is a list of inputs (as for packages)."
(define* (qemu-image #:key
(name "qemu-image")
(system (%current-system))
+ (target (%current-target-system))
(qemu qemu-minimal)
(disk-image-size 'guess)
(disk-image-format "qcow2")
@@ -404,9 +412,10 @@ system."
(setlocale LC_ALL "en_US.utf8")
(let ((inputs
- '#$(append (list qemu parted e2fsprogs dosfstools)
+ '#$(append (list util-linux parted e2fsprogs dosfstools)
(map canonical-package
(list sed grep coreutils findutils gawk))))
+ (native-inputs '#+(list qemu))
;; This variable is unused but allows us to add INPUTS-TO-COPY
;; as inputs.
@@ -416,7 +425,8 @@ system."
((name thing output) `(,thing ,output)))
inputs)))
- (set-path-environment-variable "PATH" '("bin" "sbin") inputs)
+ (set-path-environment-variable "PATH" '("bin" "sbin")
+ (append inputs native-inputs))
(let* ((graphs '#$(match inputs
(((names . _) ...)
@@ -483,6 +493,7 @@ system."
#:bootloader-installer
#$(bootloader-installer bootloader)))))))
#:system system
+ #:target target
#:make-disk-image? #t
#:disk-image-size disk-image-size
#:disk-image-format disk-image-format
--
2.17.1
- [bug#36477] [PATCH v2 52/61] gnu: mdadm: Fix cross-compilation., (continued)
- [bug#36477] [PATCH v2 52/61] gnu: mdadm: Fix cross-compilation., Mathieu Othacehe, 2019/08/21
- [bug#36477] [PATCH v2 54/61] linux-initrd: Use native gzip., Mathieu Othacehe, 2019/08/21
- [bug#36477] [PATCH v2 46/61] gnu: libnl: Fix cross-compilation., Mathieu Othacehe, 2019/08/21
- [bug#36477] [PATCH v2 45/61] gnu: texinfo-4: Fix cross compilation, Mathieu Othacehe, 2019/08/21
- [bug#36477] [PATCH v2 51/61] gnu: console-setup: Fix cross-compilation., Mathieu Othacehe, 2019/08/21
- [bug#36477] [PATCH v2 47/61] gnu: crda: Fix cross-compilation, Mathieu Othacehe, 2019/08/21
- [bug#36477] [PATCH v2 53/61] gnu: grub: Fix cross-compilation., Mathieu Othacehe, 2019/08/21
- [bug#36477] [PATCH v2 55/61] gnu: linux-libre: Enable built-in ext4 support., Mathieu Othacehe, 2019/08/21
- [bug#36477] [PATCH v2 58/61] utils: Use target-arm64? and target-arm? helpers., Mathieu Othacehe, 2019/08/21
- [bug#36477] [PATCH v2 56/61] gexp: Use cross extensions when cross-compiling., Mathieu Othacehe, 2019/08/21
- [bug#36477] [PATCH v2 60/61] system: vm: Support cross-compilation.,
Mathieu Othacehe <=
- [bug#36477] [PATCH v2 61/61] scripts: system: Add --target option., Mathieu Othacehe, 2019/08/21
- [bug#36477] [PATCH v2 59/61] system: vm: Add arm64 support., Mathieu Othacehe, 2019/08/21
- [bug#36477] [PATCH v2 57/61] gexp: Pass target to compiled-modules in lower-gexp., Mathieu Othacehe, 2019/08/21