1{ lib
2, stdenv
3, buildPythonPackage
4, fetchPypi
5, setuptools
6, pkg-config
7, which
8, cairo
9, pango
10, python
11, doxygen
12, ncurses
13, libintl
14, wxGTK
15, gtk3
16, IOKit
17, Carbon
18, Cocoa
19, AudioToolbox
20, OpenGL
21, CoreFoundation
22, pillow
23, numpy
24, six
25}:
26
27buildPythonPackage rec {
28 pname = "wxPython";
29 version = "4.0.7.post2";
30 format = "other";
31
32 src = fetchPypi {
33 inherit pname version;
34 sha256 = "5a229e695b64f9864d30a5315e0c1e4ff5e02effede0a07f16e8d856737a0c4e";
35 };
36
37 doCheck = false;
38
39 nativeBuildInputs = [ pkg-config which doxygen setuptools wxGTK ];
40
41 buildInputs = [ ncurses libintl ]
42 ++ (if stdenv.isDarwin
43 then
44 [ AudioToolbox Carbon Cocoa CoreFoundation IOKit OpenGL ]
45 else
46 [ gtk3 ]
47 );
48
49 propagatedBuildInputs = [
50 numpy
51 pillow
52 six
53 ];
54
55 DOXYGEN = "${doxygen}/bin/doxygen";
56
57 preConfigure = lib.optionalString (!stdenv.isDarwin) ''
58 substituteInPlace wx/lib/wxcairo/wx_pycairo.py \
59 --replace 'cairoLib = None' 'cairoLib = ctypes.CDLL("${cairo}/lib/libcairo.so")'
60 substituteInPlace wx/lib/wxcairo/wx_pycairo.py \
61 --replace '_dlls = dict()' '_dlls = {k: ctypes.CDLL(v) for k, v in [
62 ("gdk", "${gtk3}/lib/libgtk-x11-2.0.so"),
63 ("pangocairo", "${pango.out}/lib/libpangocairo-1.0.so"),
64 ("appsvc", None)
65 ]}'
66 '' + lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) ''
67 # Remove the OSX-Only wx.webkit module
68 sed -i "s/makeETGRule(.*'WXWEBKIT')/pass/" wscript
69 '';
70
71 buildPhase = ''
72 ${python.pythonForBuild.interpreter} build.py -v --use_syswx dox etg --nodoc sip build_py
73 '';
74
75 installPhase = ''
76 ${python.pythonForBuild.interpreter} setup.py install --skip-build --prefix=$out
77 '';
78
79 passthru = { wxWidgets = wxGTK; };
80
81
82 meta = {
83 description = "Cross platform GUI toolkit for Python, Phoenix version";
84 homepage = "http://wxpython.org/";
85 license = lib.licenses.wxWindows;
86 broken = true;
87 };
88
89}