diff mbox

Stuck on KiCad dependency wxPython

Message ID 20160922111041.7de1d795@scratchpost.org
State New
Headers show

Commit Message

Danny Milosavljevic Sept. 22, 2016, 9:10 a.m. UTC
Or maybe the attached patch captures the goal of wxwidgets better (which they IMO don't succeed at).

I added gtk, opengl etc as native inputs instead of regular inputs because from the point of view of Python they are not direct inputs.

wxPython only requires gtk while building the extension because wxwidgets does #include <gtk/gtk.h> in their exported API (why...) - but after it's done it will not require it directly anymore and actually just require wxwidgets.

Of course, the gtk version of wxwidgets will still require gtk by itself.

That said, I still think it would be nicer if wxwidgets propagated gtk - since when you use wxwidgets, you also need to have gtk as well if wxwidgets was compiled for gtk - and the one deciding what wxwidgets is compiled for is the wxwidgets package. So it should go there...

What do you think?
diff mbox

Patch

diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm
index 31da2a9..4841a39 100644
--- a/gnu/packages/wxwidgets.scm
+++ b/gnu/packages/wxwidgets.scm
@@ -22,6 +22,7 @@ 
   #:use-module (guix download)
   #:use-module ((guix licenses) #:prefix l:)
   #:use-module (guix build-system glib-or-gtk)
+  #:use-module (guix build-system python)
   #:use-module (guix build utils)
   #:use-module (gnu packages)
   #:use-module (gnu packages compression)
@@ -31,8 +32,10 @@ 
   #:use-module (gnu packages gtk)
   #:use-module (gnu packages image)
   #:use-module (gnu packages pkg-config)
+  #:use-module (gnu packages python)
   #:use-module (gnu packages sdl)
   #:use-module (gnu packages webkit)
+  #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg))
 
 (define-public wxwidgets
@@ -109,3 +112,85 @@  and many other languages.")
                             (assoc-ref %outputs "out") "/lib"))
        ;; No 'check' target.
        #:tests? #f))))
+
+(define-public python2-wxpython
+  (package
+    (name "python2-wxpython")
+    (version "3.0.2.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "mirror://sourceforge/wxpython/wxPython/"
+                                  version "/wxPython-src-" version ".tar.bz2"))
+              (sha256
+               (base32
+                "0qfzx3sqx4mwxv99sfybhsij4b5pc03ricl73h4vhkzazgjjjhfm"))
+              (modules '((guix build utils)))
+              (snippet
+               '(begin
+                  ;; TODO Audit fully
+                  (delete-file-recursively "src/expat")
+                  (delete-file-recursively "src/jpeg")
+                  (delete-file-recursively "src/png")
+                  (delete-file-recursively "src/tiff")
+                  (delete-file-recursively "src/zlib")
+
+
+                  (delete-file-recursively "src/msw")
+                  (delete-file-recursively "src/osx")
+                  (substitute* '("wxPython/setup.py")
+                    ;; setup.py tries to keep its own license the same as wxwidget's license (which it expects under $WXWIN/docs).
+                    (("'preamble.txt', 'licence.txt', 'licendoc.txt', 'lgpl.txt'") ""))
+                  ))))
+    (build-system python-build-system)
+    (arguments
+     `(#:python ,python-2
+       #:tests? #f ; FIXME re-enable
+       #:configure-flags
+       (list "--enable-unicode" ; any effect?
+             "--disable-precomp-headers"
+             "--with-regex=sys")
+       ;#:make-flags ;; there seems to be a --rpath option available already
+       ;(list (string-append "LDFLAGS=-Wl,-rpath="
+       ;                     (assoc-ref %outputs "out") "/lib"))
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'build 'chdir
+           (lambda _
+             (chdir "wxPython")))
+         (add-before 'build 'setenv
+           (lambda* (#:key inputs #:allow-other-keys)
+             (setenv "WXWIN" (assoc-ref inputs "wxwidgets"))
+             ;; FIXME better: just call wx-config --cppflags and set that (how?)
+             (setenv "CPPFLAGS" (string-append "-I"
+                                               (assoc-ref inputs "wxwidgets")
+                                               "/lib/wx/include/gtk3-unicode-3.0"
+                                               " -I"
+                                               (assoc-ref inputs "wxwidgets")
+                                               "/include/wx-3.0"
+                                               " -D_FILE_OFFSET_BITS=64"
+                                               " -DWXUSINGDLL"
+                                               " -D__WXGTK__"))))
+         (replace 'build
+           (lambda* (#:key inputs #:allow-other-keys)
+             (zero?
+               (system* "python" "setup.py" "WXPORT=gtk3" "UNICODE=1" "build")))))))
+    (native-inputs
+     `(("pkg-config" ,pkg-config) ; for gtk
+       ("expat" ,expat)
+       ("gtk+" ,gtk+)
+       ("libjpeg" ,libjpeg)
+       ("libpng" ,libpng)
+       ("libtiff" ,libtiff)
+       ("libsm" ,libsm)
+       ("libx11" ,libx11)
+       ("mesa" ,mesa)
+       ("zlib" ,zlib)
+       ("python2-setuptools" ,python2-setuptools)))
+    (inputs
+     `(("wxwidgets" ,wxwidgets)))
+    (synopsis "Python2 Bindings for wxWidgets")
+    (description "@code{wxpython} are Python2 bindings for wxWidgets.")
+    (home-page "http://wxpython.org/")
+    (license l:fsf-free))) ; TODO Audit
+
+; Note: there's a Python 3 port https://wxpython.org/Phoenix/snapshot-builds/README.txt (no releases yet)