GNU bug report logs - #41074
[PATCH] gnu: qemu-minimal: Only build for the host's architecture.

Previous Next

Package: guix-patches;

Reported by: Efraim Flashner <efraim <at> flashner.co.il>

Date: Mon, 4 May 2020 10:27:01 UTC

Severity: normal

Tags: patch

Done: Efraim Flashner <efraim <at> flashner.co.il>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 41074 in the body.
You can then email your comments to 41074 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#41074; Package guix-patches. (Mon, 04 May 2020 10:27:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Efraim Flashner <efraim <at> flashner.co.il>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Mon, 04 May 2020 10:27:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Efraim Flashner <efraim <at> flashner.co.il>
To: guix-patches <at> gnu.org
Cc: Efraim Flashner <efraim <at> flashner.co.il>
Subject: [PATCH] gnu: qemu-minimal: Only build for the host's architecture.
Date: Mon,  4 May 2020 13:25:15 +0300
* 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 tested this with building grub and a vm-image and both seem to have
worked without any regressions.

---
 gnu/packages/virtualization.scm | 31 +++++++++++++++++++++++++------
 1 file changed, 25 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 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 <at> gnu.org>
 ;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver <mhw <at> netris.org>
-;;; Copyright © 2016, 2017, 2018. 2019 Efraim Flashner <efraim <at> flashner.co.il>
+;;; Copyright © 2016, 2017, 2018. 2019, 2020 Efraim Flashner <efraim <at> flashner.co.il>
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado <at> elephly.net>
 ;;; Copyright © 2017 Alex Vong <alexvong1995 <at> gmail.com>
 ;;; Copyright © 2017 Andy Patterson <ajpatter <at> 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





Information forwarded to guix-patches <at> gnu.org:
bug#41074; Package guix-patches. (Tue, 05 May 2020 16:12:02 GMT) Full text and rfc822 format available.

Message #8 received at 41074 <at> debbugs.gnu.org (full text, mbox):

From: Leo Famulari <leo <at> famulari.name>
To: Efraim Flashner <efraim <at> flashner.co.il>
Cc: 41074 <at> debbugs.gnu.org
Subject: Re: [bug#41074] [PATCH] gnu: qemu-minimal: Only build for the host's
 architecture.
Date: Tue, 5 May 2020 12:10:55 -0400
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?




Information forwarded to guix-patches <at> gnu.org:
bug#41074; Package guix-patches. (Wed, 06 May 2020 07:17:02 GMT) Full text and rfc822 format available.

Message #11 received at 41074 <at> debbugs.gnu.org (full text, mbox):

From: Efraim Flashner <efraim <at> flashner.co.il>
To: Leo Famulari <leo <at> famulari.name>
Cc: 41074 <at> debbugs.gnu.org
Subject: Re: [bug#41074] [PATCH] gnu: qemu-minimal: Only build for the host's
 architecture.
Date: Wed, 6 May 2020 10:16:03 +0300
[Message part 1 (text/plain, inline)]
On Tue, May 05, 2020 at 12:10:55PM -0400, Leo Famulari wrote:
> 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 for
each of the architectures we support, x86_64, i686, mips64el, armhf,
aarch64. With this change armhf only builds for armhf, x86_64 builds for
x86_64 and i686, etc. Looking through the code with a 'git grep
qemu-minimal', qemu-minimal is only used for tests for grub and system
tests and for (gnu system vm) and on core-updates a bit more similar
places. Basically it's only used for running tests and creating VMs,
which means it only needs to target the host architecture. Every other
place where we provide support for other architectures, like the binfmt
service, uses full qemu by default.

Overall it doesn't save as much space as I'd hoped, each target
architecture only costs about 16MiB, but it does save a fair amount of
time building each target architecture. Currently qemu-minimal is
303MiB, 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/qemu
folder to only have the relevant bits. Currently there's about 200MiB of
edk2 stuff for arm/aarch64.

-- 
Efraim Flashner   <efraim <at> flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[signature.asc (application/pgp-signature, inline)]

Information forwarded to guix-patches <at> gnu.org:
bug#41074; Package guix-patches. (Fri, 08 May 2020 10:02:02 GMT) Full text and rfc822 format available.

Message #14 received at 41074 <at> debbugs.gnu.org (full text, mbox):

From: Mathieu Othacehe <m.othacehe <at> gmail.com>
To: Efraim Flashner <efraim <at> flashner.co.il>
Cc: 41074 <at> debbugs.gnu.org
Subject: Re: [bug#41074] [PATCH] gnu: qemu-minimal: Only build for the host's
 architecture.
Date: Fri, 08 May 2020 12:01:22 +0200
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,

Mathieu




Reply sent to Efraim Flashner <efraim <at> flashner.co.il>:
You have taken responsibility. (Thu, 14 May 2020 14:26:03 GMT) Full text and rfc822 format available.

Notification sent to Efraim Flashner <efraim <at> flashner.co.il>:
bug acknowledged by developer. (Thu, 14 May 2020 14:26:03 GMT) Full text and rfc822 format available.

Message #19 received at 41074-done <at> debbugs.gnu.org (full text, mbox):

From: Efraim Flashner <efraim <at> flashner.co.il>
To: Mathieu Othacehe <m.othacehe <at> gmail.com>
Cc: 41074-done <at> debbugs.gnu.org
Subject: Re: [bug#41074] [PATCH] gnu: qemu-minimal: Only build for the host's
 architecture.
Date: Thu, 14 May 2020 17:24:36 +0300
[Message part 1 (text/plain, inline)]
On Fri, May 08, 2020 at 12:01:22PM +0200, Mathieu Othacehe wrote:
> 
> 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 code
into qemu-minimal and it works nicely.

-- 
Efraim Flashner   <efraim <at> flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[signature.asc (application/pgp-signature, inline)]

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 12 Jun 2020 11:24:09 GMT) Full text and rfc822 format available.

This bug report was last modified 5 years and 61 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.