Subject: [PATCH 1/3] gnu: Add python-wxpython.

From: Arun Isaac <[email-masked]>
Date: Mon, 4 Nov 2019 16:54:15 +0530

* gnu/packages/wxwidgets.scm (python-wxpython): New variable.
---
 gnu/packages/wxwidgets.scm | 62 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
index caa0ad2372..48e6c31f6c 100644
--- a/gnu/packages/wxwidgets.scm
+++ b/gnu/packages/wxwidgets.scm
@@ -7,6 +7,7 @@
 ;;; Copyright © 2017 Efraim Flashner <[email-masked]>
 ;;; Copyright © 2017 Thomas Danckaert <[email-masked]>
 ;;; Copyright © 2018 Tobias Geerinckx-Rice <[email-masked]>
+;;; Copyright © 2019 Arun Isaac <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -42,6 +43,7 @@
   #:use-module (gnu packages video)
   #: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)
@@ -165,6 +167,66 @@ and many other languages.")
                         (package-inputs wxwidgets-3.1))))
            (name "wxwidgets-gtk2")))
 
+(define-public python-wxpython
+  (package
+    (name "python-wxpython")
+    (version "4.0.7.post1")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "wxPython" version))
+       (sha256
+        (base32
+         "1jppcr3n428m8pgwb9q3g0iiqydxd451ncri4njk8b53xsiflhys"))
+       (modules '((guix build utils)))
+       (snippet
+        '(begin
+           ;; Remove bundled wxwidgets
+           (delete-file-recursively "ext/wxWidgets")
+           #t))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'configure
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "WXWIN" (assoc-ref inputs "wxwidgets"))
+             ;; Copy the waf executable to the source directory since it needs
+             ;; to be in a writable directory.
+             (copy-file (string-append (assoc-ref inputs "python-waf") "/bin/waf")
+                        "bin/waf")
+             (setenv "WAF" "bin/waf")
+             ;; The build script tries to copy license files from the
+             ;; wxwidgets source tree. Prevent it.
+             (substitute* "wscript"
+               (("updateLicenseFiles\\(cfg\\)" all)
+                (string-append "#" all)))
+             ;; The build script tries to write to demo/version.py. So, we set
+             ;; correct write permissions.
+             (chmod "demo/version.py" #o644)
+             ;; Build only the python bindings, not wxwidgets also.
+             (substitute* "setup.py"
+               (("'build']") "'build_py', '--use_syswx']"))
+             #t)))))
+    (inputs
+     `(("gtk+" ,gtk+)
+       ("wxwidgets" ,wxwidgets)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)
+       ("python-waf" ,python-waf)))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)
+       ("python-pillow" ,python-pillow)
+       ("python-six" ,python-six)))
+    (home-page "http://wxPython.org/")
+    (synopsis "Cross platform GUI toolkit for Python")
+    (description "wxPython is a cross-platform GUI toolkit for the Python
+programming language.  It is implemented as a set of Python extension modules
+that wrap the GUI components of the popular wxWidgets cross platform C++
+library.  In most cases, wxPython uses the native widgets on each platform to
+provide a 100% native look and feel for the application.")
+    (license l:wxwindows3.1+)))
+
 (define-public python2-wxpython
   (package
     (name "python2-wxpython")
-- 
2.23.0