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