unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: Rutger Helling <rhelling@mykolab.com>
To: Marius Bakke <mbakke@fastmail.com>
Cc: 31254@debbugs.gnu.org
Subject: [bug#31254] gnu: qemu: Build with Python 3 and SDL 2. (+ GTK 3 frontend) v2
Date: Wed, 25 Apr 2018 15:26:42 +0200	[thread overview]
Message-ID: <20180425152642.2a361ae5@mykolab.com> (raw)
In-Reply-To: <87lgdb8rf2.fsf@fastmail.com>


[-- Attachment #1.1: Type: text/plain, Size: 5611 bytes --]

Hello Marius, 

Thanks for the review! I've taken your suggestions into account and
updated the patches.

I don't think it's possible to seperate the GTK3 frontend, since it's
just a parameter you pass to the qemu* binaries (-display gtk instead
of -display sdl).

From my understanding if you have both GTK3 and SDL2 enabled it
defaults to GTK3. We can remove the SDL2 frontend if there are no
objections (and probably sdl from the --audio-drv-list). I just figured
it'd be nicer to enable both to give users maximum flexibility.

On Wed, 25 Apr 2018 13:19:13 +0200
Marius Bakke <mbakke@fastmail.com> wrote:

> Hello!
> 
> Rutger Helling <rhelling@mykolab.com> writes:
> 
> > Hey Guix,
> >
> > I saw QEMU was just updated to 2.12. I noticed a few things in the
> > release notes, namely:
> > * QEMU can now be built with Python 3.
> > * Support for SDL 1.2 is considered deprecated and will be removed
> >   entirely in a future release.
> >
> > As a result, the first patch builds QEMU with Python 3 and SDL 2.  
> 
> Thanks for looking after this.  I didn't realize it was using SDL1!
> 
> > The second patch is optional and adds the GTK 3 frontend, which IMO
> > is a nice alternative to the SDL frontend.
> > This does increase the size of QEMU a bit. OTOH it seems unlikely
> > that most people who use QEMU don't already have GTK 3 installed in
> > some form.  
> 
> Using `guix size`, stock qemu is ~916MiB, and adding gtk+ brings it to
> ~1131MiB.  I'm not familiar with the GTK+ frontend, would it make
> sense to add it in a separate output?
> 
> Alternatively, could we replace the SDL frontend with it?
> 
> > From 2f1626d4526fee5e7a2836d811c96cc2c823ce71 Mon Sep 17 00:00:00
> > 2001 From: Rutger Helling <rhelling@mykolab.com>
> > Date: Wed, 25 Apr 2018 08:13:44 +0200
> > Subject: [PATCH 1/2] gnu: qemu: Build with Python 3 and SDL 2.
> >
> > * gnu/packages/virtualization.scm (qemu)[arguments]: Add
> > configure-flag to build with Python 3.
> > [inputs]: Use sdl2 instead of sdl.
> > [native-inputs]: Use python instead of python@2.
> > * gnu/packages/virtualization.scm (qemu-minimal)[native-inputs]:
> > Remove python from inherited packages and use python@2 instead.
> > [inputs]: Remove sdl2 instead of sdl from inherited packages.  
> 
> [...]
> 
> > @@ -101,6 +101,11 @@
> >         ;; boot_sector_test: assertion failed (signature ==
> > SIGNATURE): (0x00000000 == 0x0000dead) #:parallel-tests? #f
> >         #:configure-flags (list "--enable-usb-redir"
> > "--enable-opengl"
> > +                               ;; Remove below once Python 3
> > becomes the default
> > +                               ;; 'python' binary.
> > +                               (string-append "--python="
> > +                                              (assoc-ref
> > %build-inputs "python")
> > +                                              "/bin/python3")  
> 
> Note: You can use the 'python-wrapper' package, which has python3 as
> "/bin/python".  Then this won't be necessary.
> 
> >                                 (string-append "--smbd="
> >                                                (assoc-ref %outputs
> > "out") "/libexec/samba-wrapper")
> > @@ -187,7 +192,7 @@ exec smbd $@")))
> >         ;; ("pciutils" ,pciutils)
> >         ("pixman" ,pixman)
> >         ("pulseaudio" ,pulseaudio)
> > -       ("sdl" ,sdl)
> > +       ("sdl2" ,sdl2)
> >         ("spice" ,spice)
> >         ("usbredir" ,usbredir)
> >         ("util-linux" ,util-linux)
> > @@ -197,7 +202,7 @@ exec smbd $@")))
> >      (native-inputs `(("glib:bin" ,glib "bin") ; gtester, etc.
> >                       ("perl" ,perl)
> >                       ("pkg-config" ,pkg-config)
> > -                     ("python" ,python-2) ; incompatible with
> > Python 3 according to error message
> > +                     ("python" ,python)
> >                       ("texinfo" ,texinfo)))
> >      (home-page "https://www.qemu.org")
> >      (synopsis "Machine emulator and virtualizer")
> > @@ -231,9 +236,13 @@ server and embedded PowerPC, and S390 guests.")
> >          ;; Restrict to the targets supported by Guix.
> >          ''("--target-list=i386-softmmu,x86_64-softmmu,mips64el-softmmu,arm-softmmu,aarch64-softmmu"))))
> >  
> > +    ;; qemu-minimal-2.10 needs Python 2. Remove below once no
> > longer necessary.
> > +    (native-inputs `(("python-2" ,python-2)
> > +                     ,@(fold alist-delete (package-native-inputs
> > qemu)
> > +                             '("python"))))  
> 
> It's better to do this in the actual Qemu 2.10 package instead of
> arbitrarily using a different Python version in "qemu-minimal" IMO.
> 
> Perhaps we should move "qemu@2.10" from (gnu packages bootloaders)
> into here and make this change in that package.  WDYT?  Ideally as a
> public "hidden-package" so it's not visible to end users.
> 
> Can you try it?
> 
> [...]
> 
> > From a0cc0f8f5632374567ee760d629d80703ec0f41e Mon Sep 17 00:00:00
> > 2001 From: Rutger Helling <rhelling@mykolab.com>
> > Date: Wed, 25 Apr 2018 08:14:33 +0200
> > Subject: [PATCH 2/2] gnu: qemu: Enable GTK 3 frontend.
> >
> > * gnu/packages/virtualization.scm (qemu)[inputs]: Add "gettext",
> > "gtk+" to inputs.
> > * gnu/packages/virtualization.scm (qemu-minimal)[inputs]: Remove
> > "gettext", "gtk+" from inherited inputs.  
> 
> 'gettext' should probably be a native-input.  That said I wonder if
> the GTK frontend should be a separate output due to the ~21% size
> increase, but no strong opinion.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-gnu-qemu-Build-with-Python-3-and-SDL2-support.patch --]
[-- Type: text/x-patch, Size: 4864 bytes --]

From e1b40133c8aedf84090fbd4292af2b53eb22d669 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Wed, 25 Apr 2018 14:59:11 +0200
Subject: [PATCH 1/2] gnu: qemu: Build with Python 3 and SDL2 support.

* gnu/packages/bootloaders.scm (qemu-minimal-2.10): Remove variable.
* gnu/packages/virtualization.scm (qemu)[inputs]: Use sdl2 instead of sdl.
[native-inputs]: Use python instead of python@2. Add python-wrapper.
* gnu/packages/virtualization.scm (qemu-minimal)[inputs]: Remove sdl2 instead of
sdl from inherited packages.
* gnu/packages/virtualization.scm (qemu-minimal-2.10): Add variable.
[native-inputs]: Remove python from inherited packages and use python@2 instead.
---
 gnu/packages/bootloaders.scm    | 16 ----------------
 gnu/packages/virtualization.scm | 30 ++++++++++++++++++++++++++----
 2 files changed, 26 insertions(+), 20 deletions(-)

diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 281bb98fa..4350ff3a5 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -72,22 +72,6 @@
      (base32
       "0p2vhnc18cnbmb39vq4m7hzv4mhnm2l0a2s7gx3ar277fwng3hys"))))
 
-;; The GRUB test suite fails with later versions of Qemu, so we
-;; keep it at 2.10 for now.  See
-;; <https://lists.gnu.org/archive/html/bug-grub/2018-02/msg00004.html>.
-;; TODO: When grub no longer needs this version, move to gnu/packages/debug.scm.
-(define qemu-minimal-2.10
-  (package
-    (inherit qemu-minimal)
-    (version "2.10.2")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://download.qemu.org/qemu-"
-                                  version ".tar.xz"))
-              (sha256
-               (base32
-                "17w21spvaxaidi2am5lpsln8yjpyp2zi3s3gc6nsxj5arlgamzgw"))))))
-
 (define-public grub
   (package
     (name "grub")
diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 86f4d7136..36bdc8f95 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -5,7 +5,7 @@
 ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com>
 ;;; Copyright © 2017 Andy Patterson <ajpatter@uwaterloo.ca>
-;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
 ;;; Copyright © 2018 Sou Bunnbu <iyzsong@member.fsf.org>
@@ -187,7 +187,7 @@ exec smbd $@")))
        ;; ("pciutils" ,pciutils)
        ("pixman" ,pixman)
        ("pulseaudio" ,pulseaudio)
-       ("sdl" ,sdl)
+       ("sdl2" ,sdl2)
        ("spice" ,spice)
        ("usbredir" ,usbredir)
        ("util-linux" ,util-linux)
@@ -197,7 +197,8 @@ exec smbd $@")))
     (native-inputs `(("glib:bin" ,glib "bin") ; gtester, etc.
                      ("perl" ,perl)
                      ("pkg-config" ,pkg-config)
-                     ("python" ,python-2) ; incompatible with Python 3 according to error message
+                     ("python" ,python)
+                     ("python-wrapper" ,python-wrapper)
                      ("texinfo" ,texinfo)))
     (home-page "https://www.qemu.org")
     (synopsis "Machine emulator and virtualizer")
@@ -233,9 +234,30 @@ server and embedded PowerPC, and S390 guests.")
 
     ;; Remove dependencies on optional libraries, notably GUI libraries.
     (inputs (fold alist-delete (package-inputs qemu)
-                  '("libusb" "mesa" "sdl" "spice" "virglrenderer"
+                  '("libusb" "mesa" "sdl2" "spice" "virglrenderer"
                     "usbredir" "libdrm" "libepoxy" "pulseaudio")))))
 
+;; The GRUB test suite fails with later versions of Qemu, so we
+;; keep it at 2.10 for now.  See
+;; <https://lists.gnu.org/archive/html/bug-grub/2018-02/msg00004.html>.
+;; TODO: When grub no longer needs this version, move to gnu/packages/debug.scm.
+(define-public qemu-minimal-2.10
+  (hidden-package
+   (package
+    (inherit qemu-minimal)
+    (version "2.10.2")
+    (source (origin
+             (method url-fetch)
+             (uri (string-append "https://download.qemu.org/qemu-"
+                                 version ".tar.xz"))
+             (sha256
+              (base32
+               "17w21spvaxaidi2am5lpsln8yjpyp2zi3s3gc6nsxj5arlgamzgw"))))
+    ;; qemu-minimal-2.10 needs Python 2. Remove below once no longer necessary.
+    (native-inputs `(("python-2" ,python-2)
+                     ,@(fold alist-delete (package-native-inputs qemu)
+                             '("python")))))))
+
 (define-public libosinfo
   (package
     (name "libosinfo")
-- 
2.17.0


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.3: 0002-gnu-qemu-Enable-GTK3-frontend.patch --]
[-- Type: text/x-patch, Size: 2520 bytes --]

From edea64c09dc1e0f391e860478dcf99f4d0d1a6d2 Mon Sep 17 00:00:00 2001
From: Rutger Helling <rhelling@mykolab.com>
Date: Wed, 25 Apr 2018 15:03:29 +0200
Subject: [PATCH 2/2] gnu: qemu: Enable GTK3 frontend.

* gnu/packages/virtualization.scm (qemu)[native-inputs]: Add "gettext" to native-inputs.
[inputs]: Add "gtk+" to inputs.
* gnu/packages/virtualization.scm (qemu-minimal)[native-inputs]: Remove "gettext"
from inherited inputs.
[inputs]: Remove "gtk+" from inherited inputs.
---
 gnu/packages/virtualization.scm | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm
index 36bdc8f95..a12debe52 100644
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@ -39,6 +39,7 @@
   #:use-module (gnu packages docbook)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages fontutils)
+  #:use-module (gnu packages gettext)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
   #:use-module (gnu packages gnome)
@@ -173,6 +174,7 @@ exec smbd $@")))
      `(("alsa-lib" ,alsa-lib)
        ("attr" ,attr)
        ("glib" ,glib)
+       ("gtk+" ,gtk+)
        ("libaio" ,libaio)
        ("libattr" ,attr)
        ("libcap" ,libcap)           ; virtfs support requires libcap & libattr
@@ -194,7 +196,8 @@ exec smbd $@")))
        ;; ("vde2" ,vde2)
        ("virglrenderer" ,virglrenderer)
        ("zlib" ,zlib)))
-    (native-inputs `(("glib:bin" ,glib "bin") ; gtester, etc.
+    (native-inputs `(("gettext" ,gettext-minimal)
+                     ("glib:bin" ,glib "bin") ; gtester, etc.
                      ("perl" ,perl)
                      ("pkg-config" ,pkg-config)
                      ("python" ,python)
@@ -233,8 +236,10 @@ server and embedded PowerPC, and S390 guests.")
         ''("--target-list=i386-softmmu,x86_64-softmmu,mips64el-softmmu,arm-softmmu,aarch64-softmmu"))))
 
     ;; Remove dependencies on optional libraries, notably GUI libraries.
+    (native-inputs (fold alist-delete (package-native-inputs qemu)
+                  '("gettext")))
     (inputs (fold alist-delete (package-inputs qemu)
-                  '("libusb" "mesa" "sdl2" "spice" "virglrenderer"
+                  '("libusb" "mesa" "sdl2" "spice" "virglrenderer" "gtk+"
                     "usbredir" "libdrm" "libepoxy" "pulseaudio")))))
 
 ;; The GRUB test suite fails with later versions of Qemu, so we
-- 
2.17.0


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

  reply	other threads:[~2018-04-25 13:28 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-25  6:33 [bug#31254] gnu: qemu: Build with Python 3 and SDL 2. (+ GTK 3 frontend) Rutger Helling
2018-04-25 11:19 ` Marius Bakke
2018-04-25 13:26   ` Rutger Helling [this message]
2018-04-25 13:40     ` [bug#31254] gnu: qemu: Build with Python 3 and SDL 2. (+ GTK 3 frontend) v2 Marius Bakke
2018-04-26  6:30       ` [bug#31254] gnu: qemu: Build with Python 3 and SDL 2. (+ GTK 3 frontend) v3 Rutger Helling
2018-04-26 10:22         ` Marius Bakke
2018-04-26 10:54           ` bug#31254: " Rutger Helling

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180425152642.2a361ae5@mykolab.com \
    --to=rhelling@mykolab.com \
    --cc=31254@debbugs.gnu.org \
    --cc=mbakke@fastmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).