From f16358144f29dab64245669d285bff672371b91a Mon Sep 17 00:00:00 2001 From: Marius Bakke Date: Sat, 26 Nov 2022 17:43:26 +0100 Subject: 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. --- gnu/packages/wxwidgets.scm | 206 ++++++++++++++++++++++++++++----------------- 1 file changed, 130 insertions(+), 76 deletions(-) (limited to 'gnu/packages/wxwidgets.scm') 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 ;;; Copyright © 2018, 2020, 2021 Tobias Geerinckx-Rice ;;; Copyright © 2019 Arun Isaac +;;; Copyright © 2022 Marius Bakke ;;; ;;; 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,24 +67,128 @@ "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" @@ -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 -- cgit v1.2.3