[PATCH] gnu: qemu-minimal: Only build for the host's architecture.

DoneSubmitted by Efraim Flashner.
Details
3 participants
  • Efraim Flashner
  • Leo Famulari
  • Mathieu Othacehe
Owner
unassigned
Severity
normal
E
E
Efraim Flashner wrote on 4 May 12:25 +0200
(address . guix-patches@gnu.org)(name . Efraim Flashner)(address . efraim@flashner.co.il)
20200504102515.18650-1-efraim@flashner.co.il
* gnu/packages/virtualization.scm (qemu-minimal)[arguments]: Adjustconfigure-flags so that each architecture only builds for its nativearchitectures.[synopsis]: Adjust to clarify it's only for the host's architecture.---
I tested this with building grub and a vm-image and both seem to haveworked without any regressions.
--- gnu/packages/virtualization.scm | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-)
Toggle diff (63 lines)diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scmindex b9ac18820f..e5d678e685 100644--- a/gnu/packages/virtualization.scm+++ b/gnu/packages/virtualization.scm@@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org>-;;; Copyright © 2016, 2017, 2018. 2019 Efraim Flashner <efraim@flashner.co.il>+;;; Copyright © 2016, 2017, 2018. 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2017 Andy Patterson <ajpatter@uwaterloo.ca>@@ -99,7 +99,8 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils)- #:use-module (srfi srfi-1))+ #:use-module (srfi srfi-1)+ #:use-module (ice-9 match)) (define (qemu-patch commit file-name sha256) "Return an origin for COMMIT."@@ -274,15 +275,33 @@ server and embedded PowerPC, and S390 guests.") (supported-systems (delete "mips64el-linux" %supported-systems)))) (define-public qemu-minimal- ;; QEMU without GUI support.+ ;; QEMU without GUI support, only supporting the host's architecture (package (inherit qemu) (name "qemu-minimal")- (synopsis "Machine emulator and virtualizer (without GUI)")+ (synopsis+ "Machine emulator and virtualizer (without GUI) for the host architecture") (arguments (substitute-keyword-arguments (package-arguments qemu) ((#:configure-flags _ '(list))- ;; Restrict to the targets supported by Guix.- ''("--target-list=i386-softmmu,x86_64-softmmu,mips64el-softmmu,arm-softmmu,aarch64-softmmu"))))+ ;; Restrict to the host's architecture.+ `(,@(match (or (%current-system)+ (%current-target-system))+ ("x86-64-linux"+ ''("--target-list=i386-softmmu,x86_64-softmmu"))+ ("i686-linux"+ ''("--target-list=i386-softmmu"))+ ("mips64el-linux"+ ''("--target-list=mips64el-softmmu"))+ ("aarch64-linux"+ ''("--target-list=arm-softmmu,aarch64-softmmu"))+ ("armhf-linux"+ ''("--target-list=arm-softmmu"))+ ((or "powerpc64-linux" "powerpc64le-linux")+ ''("--target-list=ppc-softmmu,ppc64-softmmu"))+ ("powerpc-linux"+ ''("--target-list=ppc-softmmu"))+ (_ ; An empty list actually builds all the targets.+ ''())))))) ;; Remove dependencies on optional libraries, notably GUI libraries. (native-inputs (fold alist-delete (package-native-inputs qemu)-- 2.26.2
L
L
Leo Famulari wrote on 5 May 18:10 +0200
(name . Efraim Flashner)(address . efraim@flashner.co.il)(address . 41074@debbugs.gnu.org)
20200505161055.GA31092@jasmine.lan
On Mon, May 04, 2020 at 01:25:15PM +0300, Efraim Flashner wrote:
Toggle quote (5 lines)> * gnu/packages/virtualization.scm (qemu-minimal)[arguments]: Adjust> configure-flags so that each architecture only builds for its native> architectures.> [synopsis]: Adjust to clarify it's only for the host's architecture.
I admit I don't understand the impact or motivation of this change. Whatwill be different from what currently happens?
E
E
Efraim Flashner wrote on 6 May 09:16 +0200
(name . Leo Famulari)(address . leo@famulari.name)(address . 41074@debbugs.gnu.org)
20200506071603.GB2359@E5400
On Tue, May 05, 2020 at 12:10:55PM -0400, Leo Famulari wrote:
Toggle quote (9 lines)> On Mon, May 04, 2020 at 01:25:15PM +0300, Efraim Flashner wrote:> > * gnu/packages/virtualization.scm (qemu-minimal)[arguments]: Adjust> > configure-flags so that each architecture only builds for its native> > architectures.> > [synopsis]: Adjust to clarify it's only for the host's architecture.> > I admit I don't understand the impact or motivation of this change. What> will be different from what currently happens?
Currently every architecutre building qemu-minimal builds targets foreach of the architectures we support, x86_64, i686, mips64el, armhf,aarch64. With this change armhf only builds for armhf, x86_64 builds forx86_64 and i686, etc. Looking through the code with a 'git grepqemu-minimal', qemu-minimal is only used for tests for grub and systemtests and for (gnu system vm) and on core-updates a bit more similarplaces. Basically it's only used for running tests and creating VMs,which means it only needs to target the host architecture. Every otherplace where we provide support for other architectures, like the binfmtservice, uses full qemu by default.
Overall it doesn't save as much space as I'd hoped, each targetarchitecture only costs about 16MiB, but it does save a fair amount oftime building each target architecture. Currently qemu-minimal is303MiB, dropping the 3 architectures for x86_64 would drop it down to~258MiB. Some more work would need to be done to trim the share/qemufolder to only have the relevant bits. Currently there's about 200MiB ofedk2 stuff for arm/aarch64.
-- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנרGPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl6yZC8ACgkQQarn3Mo9g1E9YRAAixUQwn6heijFGdKN0vvFYTottPCAoAj6DBrgaNhBI/POa0syFq2YvUwHeDc0hXXVePFRjXCxaqtu8CeRwY5SNTNUA2TO/sOwRK3DFtnjfrLQM0ENgYRrKYjNzTfHSKJ1Y3RPUGL5QhQjMuPETocUM/fop6DityAFqsiDVcU2u2wepxc70+UQ7st8WXKtgQN2zRNRon58KWqRcUYDcpAxa/mMXmB73qd6g1V/uTztQJ+xB+UfxnW+ro/V2Jm2UEFCCK6+J8i3WG2YZWUu/L4HUcwe7dynFGxNAhpUaLSwEn3CbjWbjwWgl92WX7aTtPUEjdFrTlbVINm04nv3qA5svTUqhjhbnYSQTIFhy05NF3jFT+GMw+DS4IKXAy+f40PLt383p4p1285XacpcBFk2uAsywjkRMhzViRmBSTaDrMntkhDC4ykKehAZVqMeM3VZ9cfMZMRMiYqzLQV9WV1fd5nd5a3vqh01v7Q/KzoPS6XofSx3VkJLczXwMNr2p+GqljgxQZNJWZVezGbdnxGcFzGi0XFUtG6DHtk74czUnNBmx4+Ld2HMngTIR5Oxpt9XqsGoLaQgSttvhoHROEbM4HsPo/Ez3HNm3gu9oG7yubI8mIidr9f3LaBSQ+JjW7bKDSE8khT3ImhZdo7oI3nfhseFqbqCj3EsVTEhF28lyrI==wJ0G-----END PGP SIGNATURE-----

M
M
Mathieu Othacehe wrote on 8 May 12:01 +0200
(name . Efraim Flashner)(address . efraim@flashner.co.il)(address . 41074@debbugs.gnu.org)
87k11mbv9p.fsf@gmail.com
Hello Efraim,
Toggle quote (3 lines)> + `(,@(match (or (%current-system)> + (%current-target-system))
If cross-compiling for aarch64, %current-system will be #f and%current-target-system will be "aarch64-linux-gnu" which does not matchanything below.
I think "system->linux-architecture" could help you here. Otherwise,this seems fine.
Thanks,
Mathieu
E
E
Efraim Flashner wrote on 14 May 16:24 +0200
(name . Mathieu Othacehe)(address . m.othacehe@gmail.com)(address . 41074-done@debbugs.gnu.org)
20200514142436.GQ918@E5400
On Fri, May 08, 2020 at 12:01:22PM +0200, Mathieu Othacehe wrote:
Toggle quote (14 lines)> > Hello Efraim,> > > + `(,@(match (or (%current-system)> > + (%current-target-system))> > If cross-compiling for aarch64, %current-system will be #f and> %current-target-system will be "aarch64-linux-gnu" which does not match> anything below.> > I think "system->linux-architecture" could help you here. Otherwise,> this seems fine.>
Thanks for the tip. I integrated the system->linux-architecture codeinto qemu-minimal and it works nicely.
-- Efraim Flashner <efraim@flashner.co.il> אפרים פלשנרGPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----
iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAl69VKQACgkQQarn3Mo9g1H0exAAov7T5m2KfOx6tUABNc8+oksrn8c1LLYJCTHhQSTVX9R06AGSoE6Nt5fFrkTjhwmhYWFNnlfdJIovSYUQ3uJJSwDaMc1EtJtCuCefalqoCWH60a9kSCeqQV1LE0Yd8yQppYjWY8RDtpVYyBu9+b72vvmJIPH6vwf2EiGUcaji1iYJChiSlAX4DefkHoGHIBM9GaSMIRFylExxlumSnEcCSR/a8adAuk+K2CAQrmUwUzxLnVn3azgCVoRblj//+KzAf1Ahn5OU/xiPiUT05BUVywG0VnoorWR1Abvzd1NTzkGImcvxt4B3j0fg2YNOrBi/+f085MSslwHBZLcxlGnyMEL+VZS/olKb1X0FiNcJrCWbyAgL7BTnsJhiPlCZZesQf/CBMjqWLBUzXlZ5CtX5gY+vkhli83dX9DGrPlpPCSREo4lg3U6hZLt6ce0JiGk0WiCIycyiGc5UGYLdUksPblziUJbioMvv9pagWomRmb14iL+IRSXqufd9OAA/T6Q3xvyPZgyqYqQ3EmJ03PsR5VL56oIXUL607AU+RzJgmpx36BZHPClI/Ds9PVTeW6RuC9W/+Cd3pU2A/4a2FdLsZsflRUXuKvnnu6Xf3jGSqtB6pOsylV5cf/IsEikaUjqulDZlyrb4vrHefK71K6nKGrkAOTN46ohngttR0/RjRQc==KpOr-----END PGP SIGNATURE-----

Closed
?