1{ lib
2, buildPythonPackage
3, isPy27
4, fetchPypi
5, pkg-config
6, dbus
7, lndir
8, dbus-python
9, sip
10, pyqt-builder
11, libsForQt5
12, withConnectivity ? false
13, withMultimedia ? false
14, withWebKit ? false
15, withWebSockets ? false
16}:
17
18let
19 pyqt5_sip = buildPythonPackage rec {
20 pname = "PyQt5_sip";
21 version = "12.9.0";
22
23 src = fetchPypi {
24 inherit pname version;
25 sha256 = "0cmfxb7igahxy74qkq199l6zdxrr75bnxris42fww3ibgjflir6k";
26 };
27
28 # There is no test code and the check phase fails with:
29 # > error: could not create 'PyQt5/sip.cpython-38-x86_64-linux-gnu.so': No such file or directory
30 doCheck = false;
31 };
32in buildPythonPackage rec {
33 pname = "PyQt5";
34 version = "5.15.4";
35 format = "pyproject";
36
37 disabled = isPy27;
38
39 src = fetchPypi {
40 inherit pname version;
41 sha256 = "1gp5jz71nmg58zsm1h4vzhcphf36rbz37qgsfnzal76i1mz5js9a";
42 };
43
44 outputs = [ "out" "dev" ];
45
46 dontWrapQtApps = true;
47
48 nativeBuildInputs = with libsForQt5; [
49 pkg-config
50 qmake
51 lndir
52 sip
53 qtbase
54 qtsvg
55 qtdeclarative
56 qtwebchannel
57 ]
58 ++ lib.optional withConnectivity qtconnectivity
59 ++ lib.optional withMultimedia qtmultimedia
60 ++ lib.optional withWebKit qtwebkit
61 ++ lib.optional withWebSockets qtwebsockets
62 ;
63
64 buildInputs = with libsForQt5; [
65 dbus
66 qtbase
67 qtsvg
68 qtdeclarative
69 pyqt-builder
70 ]
71 ++ lib.optional withConnectivity qtconnectivity
72 ++ lib.optional withWebKit qtwebkit
73 ++ lib.optional withWebSockets qtwebsockets
74 ;
75
76 propagatedBuildInputs = [
77 dbus-python
78 pyqt5_sip
79 ];
80
81 patches = [
82 # Fix some wrong assumptions by ./project.py
83 # TODO: figure out how to send this upstream
84 ./pyqt5-fix-dbus-mainloop-support.patch
85 ];
86
87 passthru = {
88 inherit sip;
89 multimediaEnabled = withMultimedia;
90 webKitEnabled = withWebKit;
91 WebSocketsEnabled = withWebSockets;
92 };
93
94 dontConfigure = true;
95
96 # Checked using pythonImportsCheck
97 doCheck = false;
98
99 pythonImportsCheck = [
100 "PyQt5"
101 "PyQt5.QtCore"
102 "PyQt5.QtQml"
103 "PyQt5.QtWidgets"
104 "PyQt5.QtGui"
105 ]
106 ++ lib.optional withWebSockets "PyQt5.QtWebSockets"
107 ++ lib.optional withWebKit "PyQt5.QtWebKit"
108 ++ lib.optional withMultimedia "PyQt5.QtMultimedia"
109 ++ lib.optional withConnectivity "PyQt5.QtConnectivity"
110 ;
111
112 meta = with lib; {
113 description = "Python bindings for Qt5";
114 homepage = "https://riverbankcomputing.com/";
115 license = licenses.gpl3Only;
116 platforms = platforms.mesaPlatforms;
117 maintainers = with maintainers; [ sander ];
118 };
119}