nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{ lib
2, stdenv
3, fetchPypi
4, buildPythonPackage
5, which
6, pkg-config
7, python
8, isPy27
9, doxygen
10, cairo
11, ncurses
12, pango
13, wxGTK
14, pillow
15, numpy
16, libXinerama
17, libSM
18, libXxf86vm
19, libXtst
20, libGLU
21, libGL
22, xorgproto
23, gst_all_1
24, libglvnd
25, mesa
26, webkitgtk
27, autoPatchelfHook
28}:
29let
30 dynamic-linker = stdenv.cc.bintools.dynamicLinker;
31in
32buildPythonPackage rec {
33 pname = "wxPython";
34 version = "4.1.1";
35 disabled = isPy27;
36
37 src = fetchPypi {
38 inherit pname version;
39 sha256 = "0a1mdhdkda64lnwm1dg0dlrf9rs4gkal3lra6hpqbwn718cf7r80";
40 };
41
42 # https://github.com/NixOS/nixpkgs/issues/75759
43 # https://github.com/wxWidgets/Phoenix/issues/1316
44 doCheck = false;
45
46 nativeBuildInputs = [
47 which
48 doxygen
49 wxGTK.gtk
50 pkg-config
51 ] ++ lib.optionals stdenv.isLinux [
52 autoPatchelfHook
53 ];
54
55 buildInputs = [
56 wxGTK.gtk
57 ncurses
58 ] ++ lib.optionals stdenv.isLinux [
59 libXinerama
60 libSM
61 libXxf86vm
62 libXtst
63 xorgproto
64 gst_all_1.gstreamer
65 gst_all_1.gst-plugins-base
66 libGLU
67 libGL
68 libglvnd
69 mesa
70 webkitgtk
71 ];
72
73 propagatedBuildInputs = [ pillow numpy ];
74
75 DOXYGEN = "${doxygen}/bin/doxygen";
76
77 preConfigure = lib.optionalString (!stdenv.isDarwin) ''
78 substituteInPlace wx/lib/wxcairo/wx_pycairo.py \
79 --replace '_dlls = dict()' '_dlls = {k: ctypes.CDLL(v) for k, v in [
80 ("gdk", "${wxGTK.gtk}/lib/libgtk-x11-3.0.so"),
81 ("pangocairo", "${pango.out}/lib/libpangocairo-1.0.so"),
82 ("cairoLib = None", "cairoLib = ctypes.CDLL('${cairo}/lib/libcairo.so')"),
83 ("appsvc", None)
84 ]}'
85 '';
86
87 buildPhase = ''
88 ${python.interpreter} build.py -v build_wx dox etg --nodoc sip build_py
89 '';
90
91 installPhase = ''
92 ${python.interpreter} setup.py install --skip-build --prefix=$out
93 wrapPythonPrograms
94 '';
95
96 meta = with lib; {
97 broken = stdenv.isDarwin;
98 description = "Cross platform GUI toolkit for Python, Phoenix version";
99 homepage = "http://wxpython.org/";
100 license = licenses.wxWindows;
101 maintainers = with maintainers; [ tfmoraes ];
102 };
103}