at 23.05-pre 131 lines 3.0 kB view raw
1{ lib 2, stdenv 3, buildPythonPackage 4, setuptools 5, isPy27 6, fetchPypi 7, pkg-config 8, dbus 9, lndir 10, dbus-python 11, sip 12, pyqt5_sip 13, pyqt-builder 14, libsForQt5 15, withConnectivity ? false 16, withMultimedia ? false 17, withWebKit ? false 18, withWebSockets ? false 19, withLocation ? false 20}: 21 22buildPythonPackage rec { 23 pname = "PyQt5"; 24 version = "5.15.7"; 25 format = "pyproject"; 26 27 disabled = isPy27; 28 29 src = fetchPypi { 30 inherit pname version; 31 sha256 = "sha256-dVEhpSs6CMsHJ1wQ67lldtNuMg5XJZHbFs/bxVgQFZQ="; 32 }; 33 34 patches = [ 35 # Fix some wrong assumptions by ./project.py 36 # TODO: figure out how to send this upstream 37 ./pyqt5-fix-dbus-mainloop-support.patch 38 # confirm license when installing via pyqt5_sip 39 ./pyqt5-confirm-license.patch 40 ]; 41 42 postPatch = 43 # be more verbose 44 '' 45 cat >> pyproject.toml <<EOF 46 [tool.sip.project] 47 verbose = true 48 '' 49 # Due to bug in SIP .whl name generation we have to bump minimal macos sdk upto 11.0 for 50 # aarch64-darwin. This patch can be removed once SIP will fix it in upstream, 51 # see https://github.com/NixOS/nixpkgs/pull/186612#issuecomment-1214635456. 52 + lib.optionalString (stdenv.isDarwin && stdenv.isAarch64) '' 53 minimum-macos-version = "11.0" 54 '' + '' 55 EOF 56 ''; 57 58 outputs = [ "out" "dev" ]; 59 60 dontWrapQtApps = true; 61 62 nativeBuildInputs = with libsForQt5; [ 63 pkg-config 64 qmake 65 setuptools 66 lndir 67 sip 68 qtbase 69 qtsvg 70 qtdeclarative 71 qtwebchannel 72 ] 73 ++ lib.optional withConnectivity qtconnectivity 74 ++ lib.optional withMultimedia qtmultimedia 75 ++ lib.optional withWebKit qtwebkit 76 ++ lib.optional withWebSockets qtwebsockets 77 ++ lib.optional withLocation qtlocation 78 ; 79 80 buildInputs = with libsForQt5; [ 81 dbus 82 qtbase 83 qtsvg 84 qtdeclarative 85 pyqt-builder 86 ] 87 ++ lib.optional withConnectivity qtconnectivity 88 ++ lib.optional withWebKit qtwebkit 89 ++ lib.optional withWebSockets qtwebsockets 90 ++ lib.optional withLocation qtlocation 91 ; 92 93 propagatedBuildInputs = [ 94 dbus-python 95 pyqt5_sip 96 ]; 97 98 passthru = { 99 inherit sip pyqt5_sip; 100 multimediaEnabled = withMultimedia; 101 webKitEnabled = withWebKit; 102 WebSocketsEnabled = withWebSockets; 103 }; 104 105 dontConfigure = true; 106 107 # Checked using pythonImportsCheck 108 doCheck = false; 109 110 pythonImportsCheck = [ 111 "PyQt5" 112 "PyQt5.QtCore" 113 "PyQt5.QtQml" 114 "PyQt5.QtWidgets" 115 "PyQt5.QtGui" 116 ] 117 ++ lib.optional withWebSockets "PyQt5.QtWebSockets" 118 ++ lib.optional withWebKit "PyQt5.QtWebKit" 119 ++ lib.optional withMultimedia "PyQt5.QtMultimedia" 120 ++ lib.optional withConnectivity "PyQt5.QtConnectivity" 121 ++ lib.optional withLocation "PyQt5.QtPositioning" 122 ; 123 124 meta = with lib; { 125 description = "Python bindings for Qt5"; 126 homepage = "https://riverbankcomputing.com/"; 127 license = licenses.gpl3Only; 128 platforms = platforms.mesaPlatforms; 129 maintainers = with maintainers; [ sander ]; 130 }; 131}