1{ stdenv, fetchurl, pythonPackages, qt4, pkgconfig, lndir, dbus, makeWrapper }: 2 3let 4 pname = "PyQt-x11-gpl"; 5 version = "4.12"; 6 7 inherit (pythonPackages) buildPythonPackage python dbus-python sip; 8in buildPythonPackage { 9 pname = pname; 10 name = pname + "-" + version; 11 version = version; 12 format = "other"; 13 14 src = fetchurl { 15 url = "mirror://sourceforge/pyqt/PyQt4_gpl_x11-${version}.tar.gz"; 16 sha256 = "1nw8r88a5g2d550yvklawlvns8gd5slw53yy688kxnsa65aln79w"; 17 }; 18 19 configurePhase = '' 20 mkdir -p $out 21 lndir ${dbus-python} $out 22 rm -rf "$out/nix-support" 23 24 export PYTHONPATH=$PYTHONPATH:$out/lib/${python.libPrefix}/site-packages 25 ${stdenv.lib.optionalString stdenv.isDarwin '' 26 export QMAKESPEC="unsupported/macx-clang-libc++" # macOS target after bootstrapping phase \ 27 ''} 28 29 substituteInPlace configure.py \ 30 --replace 'install_dir=pydbusmoddir' "install_dir='$out/lib/${python.libPrefix}/site-packages/dbus/mainloop'" \ 31 ${stdenv.lib.optionalString stdenv.isDarwin '' 32 --replace "qt_macx_spec = 'macx-g++'" "qt_macx_spec = 'unsupported/macx-clang-libc++'" # for bootstrapping phase \ 33 ''} 34 35 configureFlagsArray=( \ 36 --confirm-license --bindir $out/bin \ 37 --destdir $out/${python.sitePackages} \ 38 --plugin-destdir $out/lib/qt4/plugins --sipdir $out/share/sip/PyQt4 \ 39 --dbus=${dbus-python}/include/dbus-1.0 --verbose) 40 41 ${python.executable} configure.py $configureFlags "''${configureFlagsArray[@]}" 42 ''; 43 44 nativeBuildInputs = [ pkgconfig ]; 45 buildInputs = [ makeWrapper qt4 lndir dbus ]; 46 47 propagatedBuildInputs = [ sip ]; 48 49 postInstall = '' 50 for i in $out/bin/*; do 51 wrapProgram $i --prefix PYTHONPATH : "$PYTHONPATH" 52 done 53 ''; 54 55 enableParallelBuilding = true; 56 57 passthru = { 58 qt = qt4; 59 }; 60 61 meta = { 62 description = "Python bindings for Qt"; 63 license = "GPL"; 64 homepage = http://www.riverbankcomputing.co.uk; 65 maintainers = [ stdenv.lib.maintainers.sander ]; 66 platforms = stdenv.lib.platforms.mesaPlatforms; 67 }; 68}