1{ lib
2, stdenv
3, buildPythonPackage
4, setuptools
5, pythonOlder
6, fetchPypi
7, substituteAll
8
9# build
10, autoPatchelfHook
11, attrdict
12, doxygen
13, pkg-config
14, python
15, sip
16, which
17
18# runtime
19, cairo
20, gst_all_1
21, gtk3
22, libGL
23, libGLU
24, libSM
25, libXinerama
26, libXtst
27, libXxf86vm
28, libglvnd
29, mesa
30, pango
31, SDL
32, webkitgtk
33, wxGTK
34, xorgproto
35
36# propagates
37, numpy
38, pillow
39, six
40}:
41
42buildPythonPackage rec {
43 pname = "wxPython";
44 version = "4.2.1";
45 format = "other";
46 disabled = pythonOlder "3.7";
47
48 src = fetchPypi {
49 inherit pname version;
50 hash = "sha256-5I3iEaZga/By7D+neHcda3RsALf0uXDrWHKN31bRPVw=";
51 };
52
53 patches = [
54 (substituteAll {
55 src = ./4.2-ctypes.patch;
56 libgdk = "${gtk3.out}/lib/libgdk-3.so";
57 libpangocairo = "${pango}/lib/libpangocairo-1.0.so";
58 libcairo = "${cairo}/lib/libcairo.so";
59 })
60 ];
61
62 nativeBuildInputs = [
63 attrdict
64 pkg-config
65 setuptools
66 SDL
67 sip
68 which
69 wxGTK
70 ] ++ lib.optionals stdenv.isLinux [
71 autoPatchelfHook
72 ];
73
74 buildInputs = [
75 wxGTK
76 SDL
77 ] ++ lib.optionals stdenv.isLinux [
78 gst_all_1.gst-plugins-base
79 gst_all_1.gstreamer
80 libGL
81 libGLU
82 libSM
83 libXinerama
84 libXtst
85 libXxf86vm
86 libglvnd
87 mesa
88 webkitgtk
89 xorgproto
90 ];
91
92 propagatedBuildInputs = [
93 numpy
94 pillow
95 six
96 ];
97
98 buildPhase = ''
99 runHook preBuild
100
101 export DOXYGEN=${doxygen}/bin/doxygen
102 export PATH="${wxGTK}/bin:$PATH"
103 export SDL_CONFIG="${SDL.dev}/bin/sdl-config"
104
105 ${python.pythonOnBuildForHost.interpreter} build.py -v --use_syswx dox etg sip --nodoc build_py
106
107 runHook postBuild
108 '';
109
110
111 installPhase = ''
112 runHook preInstall
113
114 ${python.pythonOnBuildForHost.interpreter} setup.py install --skip-build --prefix=$out
115 wrapPythonPrograms
116
117 runHook postInstall
118 '';
119
120 checkPhase = ''
121 runHook preCheck
122
123 ${python.interpreter} build.py -v test
124
125 runHook postCheck
126 '';
127
128
129 meta = with lib; {
130 changelog = "https://github.com/wxWidgets/Phoenix/blob/wxPython-${version}/CHANGES.rst";
131 description = "Cross platform GUI toolkit for Python, Phoenix version";
132 homepage = "http://wxpython.org/";
133 license = licenses.wxWindows;
134 maintainers = with maintainers; [ hexa ];
135 };
136}