summary refs log tree commit diff
path: root/gnu/packages/wxwidgets.scm
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2022-11-26 17:43:26 +0100
committerMarius Bakke <marius@gnu.org>2022-12-02 19:08:27 +0100
commitf16358144f29dab64245669d285bff672371b91a (patch)
tree5461cbfbfcf0ba5fe6f4fe91be51b569e8b78619 /gnu/packages/wxwidgets.scm
parent8737ee0479ac6ec100ba06902a83f506707be4e7 (diff)
downloadguix-f16358144f29dab64245669d285bff672371b91a.tar.gz
gnu: wxWidgets: Update to 3.2.1.
* gnu/packages/wxwidgets.scm (wxwidgets): Update to 3.2.1.
[source](modules, snippet): New fields.
[inputs]: Remove SDL.  Add CATCH-FRAMEWORK, EXPAT, GSTREAMER,
GST-PLUGINS-BASE, LIBNOTIFY, LIBPNG, LIBSECRET, PCRE, SDL2,
WEBKITGTK-WITH-LIBSOUP2, and ZLIB
[arguments]: Add "--enable-mediactrl" and "--enable-gui" to #:configure-flags.
Remove aarch64 workaround.  Install catch header in refer-to-inputs phase.
Add phase to adjust WebKitGTK version.
(wxwidgets-3.1, wxwidgets-gtk2-3.1): Remove variables.
(wxwidgets-3.0, (wxwidgets-gtk2-3.0): New variables.
(wxsvg)[inputs]: Change from WXWIDGETS-3.1 to WXWIDGETS.
* gnu/packages/audio.scm (audacity)[inputs]: Likewise.
* gnu/packages/cdrom.scm (dvdstyler)[inputs]: Likewise.
* gnu/packages/astronomy.scm (imppg)[inputs]: Change from WXWIDGETS to
WXWIDGETS-3.0.
* gnu/packages/ftp.scm (filezilla)[inputs]: Likewise.
* gnu/packages/games.scm (megaglest)[inputs]: Likewise.
* gnu/packages/geo.scm (opencpn)[inputs]: Likewise.
* gnu/packages/music.scm (sooperlooper)[inputs]: Likewise.
* gnu/packages/engineering.scm (kicad)[arguments]: Enable EGL support.
Diffstat (limited to 'gnu/packages/wxwidgets.scm')
-rw-r--r--gnu/packages/wxwidgets.scm206
1 files changed, 130 insertions, 76 deletions
diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
index f92ac64b54..9d665f3988 100644
--- a/gnu/packages/wxwidgets.scm
+++ b/gnu/packages/wxwidgets.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -35,6 +36,7 @@
   #:use-module (guix utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages check)
+  #:use-module (gnu packages curl)
   #:use-module (gnu packages compression)
   #:use-module (gnu packages databases)
   #:use-module (gnu packages freedesktop)
@@ -45,18 +47,19 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages photo)
   #:use-module (gnu packages video)
+  #:use-module (gnu packages pcre)
   #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages python)
   #:use-module (gnu packages python-xyz)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages webkit)
-  #:use-module (gnu packages xorg)
-  #:use-module ((srfi srfi-1) #:select (alist-delete)))
+  #:use-module (gnu packages xml)
+  #:use-module (gnu packages xorg))
 
 (define-public wxwidgets
   (package
     (name "wxwidgets")
-    (version "3.0.5.1")
+    (version "3.2.1")
     (source
      (origin
        (method url-fetch)
@@ -64,25 +67,129 @@
                            "releases/download/v" version
                            "/wxWidgets-" version ".tar.bz2"))
        (sha256
-        (base32 "01y89999jw5q7njrhxajincx7lydls6yq37ikazjryssrxrnw3s4"))))
+        (base32 "0rpsyph7l7kmpld376y0940la3c94y5vdpxmbkj8isqknimrfaf2"))
+       (modules '((guix build utils)
+                  (ice-9 ftw)
+                  (srfi srfi-26)))
+       (snippet
+        '(begin
+           ;; wxWidgets bundles third-party code in the "3rdparty" directory as
+           ;; well as the "src" directory.  Remove external components that are
+           ;; not required.
+           (let ((preserved-3rdparty '("nanosvg"))
+                 ;; The src directory contains a mixture of third party libraries
+                 ;; and similarly-named integration code.  Cautiously use a
+                 ;; blacklist approach here.
+                 (bundled-src '("expat" "jpeg" "png" "tiff" "zlib")))
+             (with-directory-excursion "3rdparty"
+               (for-each delete-file-recursively
+                         (scandir "." (negate (cut member <>
+                                                   (append '("." "..")
+                                                           preserved-3rdparty))))))
+             (with-directory-excursion "src"
+               (for-each delete-file-recursively bundled-src)))))))
     (build-system glib-or-gtk-build-system)
     (inputs
-     (list glu
-           ;; XXX gstreamer-0.10 builds fail
-           ;; ("gstreamer" ,gstreamer-0.10)
+     (list catch-framework
+           curl
+           expat
+           glu
+           gstreamer
+           gst-plugins-base
            gtk+
            libjpeg-turbo
            libmspack
+           libnotify
+           libpng
+           libsecret
            libsm
            libtiff
            mesa
-           webkitgtk
-           sdl
+           pcre2
+           sdl2
            shared-mime-info
-           xdg-utils))
+           webkitgtk-with-libsoup2
+           xdg-utils
+           zlib))
     (native-inputs
      (list pkg-config))
     (arguments
+     (list
+      #:configure-flags #~'("--with-libmspack"
+                            "--with-regex"
+                            "--with-sdl"
+                            "--enable-gui"
+                            "--enable-mediactrl"
+                            "--enable-webview"
+                            "--enable-webviewwebkit")
+      #:make-flags
+      #~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
+      #:tests? #f                       ;TODO
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'use-newer-webkit
+            (lambda _
+              ;; XXX: The configure script tests only for an ancient
+              ;; WebKitGTK version.
+              (substitute* "configure"
+                (("webkit2gtk-4\\.0")
+                 "webkit2gtk-4.1"))))
+          (add-after 'unpack 'refer-to-inputs
+            (lambda* (#:key inputs #:allow-other-keys)
+              (let ((catch (search-input-file inputs "include/catch.hpp"))
+                    (mime (search-input-directory inputs "share/mime"))
+                    (xdg-open (search-input-file inputs "bin/xdg-open")))
+                (install-file catch "3rdparty/catch/include/")
+                (substitute* "src/unix/utilsx11.cpp"
+                  (("wxExecute\\(xdg_open \\+")
+                   (string-append "wxExecute(\"" xdg-open "\"")))
+                (substitute* "src/unix/mimetype.cpp"
+                  (("/usr(/local)?/share/mime")
+                   mime)))))
+          (replace 'configure
+            (lambda* (#:key native-inputs inputs configure-flags
+                      #:allow-other-keys)
+              (let ((sh (search-input-file (or native-inputs inputs)
+                                           "bin/sh")))
+                ;; The configure script does not understand some of the default
+                ;; options of gnu-build-system, so run it "by hand".
+                (apply invoke "./configure"
+                       (string-append "SHELL=" sh)
+                       (string-append "CONFIG_SHELL=" sh)
+                       (string-append "--prefix=" #$output)
+                       configure-flags)))))))
+    (home-page "https://www.wxwidgets.org/")
+    (synopsis "Widget toolkit for creating graphical user interfaces")
+    (description
+     "wxWidgets is a C++ library that lets developers create applications with
+a graphical user interface.  It has language bindings for Python, Perl, Ruby
+and many other languages.")
+    (license (list l:lgpl2.0+ (l:fsf-free "file://doc/license.txt")))))
+
+(define-public wxwidgets-gtk2
+  (package/inherit wxwidgets
+    (name "wxwidgets-gtk2")
+    (inputs (modify-inputs (package-inputs wxwidgets)
+              (delete "gtk+")
+              (prepend gtk+-2)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments wxwidgets)
+       ((#:configure-flags flags #~'())
+        #~(append #$flags '("--with-gtk=2")))))))
+
+(define-public wxwidgets-3.0
+  (package
+    (inherit wxwidgets)
+    (version "3.0.5.1")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://github.com/wxWidgets/wxWidgets/"
+                                  "releases/download/v" version
+                                  "/wxWidgets-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "01y89999jw5q7njrhxajincx7lydls6yq37ikazjryssrxrnw3s4"))))
+    (arguments
      `(#:configure-flags
        '("--with-regex" "--with-libmspack"
          "--with-sdl"
@@ -108,15 +215,18 @@
                  (("wxExecute\\(xdg_open \\+")
                   (string-append "wxExecute(\"" xdg-open "\"")))
                (substitute* "src/unix/mimetype.cpp"
-                 (("/usr(/local)?/share/mime") mime))
-               #t))))))
-    (home-page "https://www.wxwidgets.org/")
-    (synopsis "Widget toolkit for creating graphical user interfaces")
-    (description
-     "wxWidgets is a C++ library that lets developers create applications with
-a graphical user interface.  It has language bindings for Python, Perl, Ruby
-and many other languages.")
-    (license (list l:lgpl2.0+ (l:fsf-free "file://doc/license.txt")))))
+                 (("/usr(/local)?/share/mime") mime))))))))))
+
+(define-public wxwidgets-gtk2-3.0
+  (package/inherit wxwidgets-3.0
+    (name "wxwidgets-gtk2")
+    (inputs (modify-inputs (package-inputs wxwidgets-3.0)
+              (delete "gtk+")
+              (prepend gtk+-2)))
+    (arguments
+     (substitute-keyword-arguments (package-arguments wxwidgets-3.0)
+       ((#:configure-flags flags #~'())
+        #~(append #$flags '("--with-gtk=2")))))))
 
 (define-public wxwidgets-2
   (package
@@ -153,62 +263,6 @@ and many other languages.")
                (("-Wall") "-Wall -Wno-narrowing"))
              #t)))))))
 
-(define-public wxwidgets-gtk2
-  (package/inherit wxwidgets
-    (name "wxwidgets-gtk2")
-    (inputs (modify-inputs (package-inputs wxwidgets)
-              (delete "gtk+")
-              (prepend gtk+-2)))))
-
-;; Development version of wxWidgets, required to build against gstreamer-1.x.
-;; This can be removed when wxWidgets is updated to the next stable version.
-(define-public wxwidgets-3.1
-  (package (inherit wxwidgets)
-           (version "3.1.5")
-           (source
-            (origin
-              (method git-fetch)
-              (uri (git-reference
-                    (url "https://github.com/wxWidgets/wxWidgets")
-                    (commit (string-append "v" version))))
-              (file-name (git-file-name "wxwidgets" version))
-              (sha256
-               (base32
-                "0j998nzqmycafignclxmahgqm5kgs1fiqbsiyvzm7bnpnafi333y"))))
-           (inputs (modify-inputs (package-inputs wxwidgets)
-                     (prepend catch-framework gstreamer gst-plugins-base)))
-           (arguments
-            (substitute-keyword-arguments (package-arguments wxwidgets)
-              ((#:configure-flags flags)
-               '(list "--with-regex" "--with-libmspack" "--with-sdl"
-                      "--enable-mediactrl" "--enable-webviewwebkit"))
-              ((#:phases phases)
-               `(modify-phases ,phases
-                  (add-after 'unpack 'add-catch
-                    (lambda* (#:key inputs #:allow-other-keys)
-                      (install-file
-                       (search-input-file inputs "include/catch.hpp")
-                       "3rdparty/catch/include/")))
-                  (replace 'configure
-                    (lambda* (#:key configure-flags inputs native-inputs outputs
-                         #:allow-other-keys)
-                      (let ((sh (search-input-file (or native-inputs inputs)
-                                                   "bin/sh")))
-                        (apply invoke "./configure"
-                               (string-append "SHELL=" sh)
-                               (string-append "CONFIG_SHELL=" sh)
-                               (string-append "--prefix="
-                                              (assoc-ref outputs "out"))
-                               configure-flags))))))))))
-
-(define-public wxwidgets-gtk2-3.1
-  (package/inherit wxwidgets-3.1
-           (inputs `(("gtk+" ,gtk+-2)
-                     ,@(alist-delete
-                        "gtk+"
-                        (package-inputs wxwidgets-3.1))))
-           (name "wxwidgets-gtk2")))
-
 (define-public python-wxpython
   (package
     (name "python-wxpython")
@@ -278,7 +332,7 @@ provide a 100% native look and feel for the application.")
         (base32 "1fdbvihw1w2vm29xj54cqgpdabhlg0ydf3clkb0qrlf7mhgkc1rz"))))
     (build-system glib-or-gtk-build-system)
     (inputs
-     (list wxwidgets-3.1 cairo ffmpeg))
+     (list wxwidgets cairo ffmpeg))
     (native-inputs
      (list pkg-config))
     (propagated-inputs