diff --git a/pkgs/development/python-modules/pykde4/default.nix b/pkgs/development/python-modules/pykde4/default.nix new file mode 100644 index 00000000000..0770520ceee --- /dev/null +++ b/pkgs/development/python-modules/pykde4/default.nix @@ -0,0 +1,43 @@ +{ pyqt4, + stdenv, callPackage, fetchurl, cmake, automoc4, sip }: + +let + kdelibs = callPackage ./kdelibs.nix {}; + sip4_19_3 = sip.overrideAttrs (oldAttrs: rec { + src = fetchurl { + url = "mirror://sourceforge/pyqt/sip/sip-4.19.3/sip-4.19.3.tar.gz"; + sha256 = "0x2bghbprwl3az1ni3p87i0bq8r99694la93kg65vi0cz12gh3bl"; + }; + }); + pyqt4_fixed = pyqt4.overrideAttrs (oldAttrs: rec { + propagatedBuildInputs = [ sip4_19_3 ]; + }); +in stdenv.mkDerivation rec { + version = "4.14.3"; + name = "pykde4-${version}"; + + src = fetchurl { + url = "mirror://kde/stable/${version}/src/${name}-${version}.tar.xz"; + sha256 = "1z40gnkyjlv6ds3cmpzvv99394rhmydr6rxx7qj33m83xnsxgfbz"; + }; + + patches = [ ./dlfcn.patch ]; + + buildInputs = [ + kdelibs + ]; + + nativeBuildInputs = [ cmake automoc4 ]; + + propagatedBuildInputs = [ pyqt4_fixed ]; + + enableParallelBuilding = true; + + meta = with stdenv.lib; { + platforms = platforms.linux; + description = "Python bindings for KDE"; + license = with licenses; [ gpl2 lgpl2 ]; + homepage = https://api.kde.org/pykde-4.3-api/; + maintainers = with maintainers; [ gnidorah ]; + }; +} diff --git a/pkgs/development/python-modules/pykde4/dlfcn.patch b/pkgs/development/python-modules/pykde4/dlfcn.patch new file mode 100644 index 00000000000..63aff46eeab --- /dev/null +++ b/pkgs/development/python-modules/pykde4/dlfcn.patch @@ -0,0 +1,13 @@ +--- __init__.py.orig 2017-11-02 09:06:48.998054459 +0300 ++++ ./__init__.py 2017-11-02 09:24:28.089072752 +0300 +@@ -1,4 +1,8 @@ +-import sys,DLFCN ++import sys ++try: ++ import DLFCN ++except ImportError: ++ import os as DLFCN + # This is needed to ensure that dynamic_cast and RTTI works inside kdelibs. + sys.setdlopenflags(DLFCN.RTLD_NOW|DLFCN.RTLD_GLOBAL) + +\ No newline at end of file diff --git a/pkgs/development/python-modules/pykde4/kdelibs.nix b/pkgs/development/python-modules/pykde4/kdelibs.nix new file mode 100644 index 00000000000..dbf36d0eac8 --- /dev/null +++ b/pkgs/development/python-modules/pykde4/kdelibs.nix @@ -0,0 +1,38 @@ +{ + stdenv, fetchurl, + automoc4, cmake_2_8, libxslt, perl, pkgconfig, shared_mime_info, + attica, docbook_xml_dtd_42, docbook_xsl, giflib, + libdbusmenu_qt, libjpeg, phonon, qt4 +}: + +stdenv.mkDerivation rec { + version = "4.14.38"; + name = "kdelibs-${version}"; + src = fetchurl { + url = "mirror://kde/stable/applications/17.08.3/src/${name}.tar.xz"; + sha256 = "1zn3yb09sd22bm54is0rn98amj0398zybl550dp406419sil7z9p"; + }; + + enableParallelBuilding = true; + + nativeBuildInputs = [ + automoc4 cmake_2_8 libxslt perl pkgconfig shared_mime_info + ]; + buildInputs = [ + attica giflib libdbusmenu_qt libjpeg + ]; + propagatedBuildInputs = [ qt4 phonon ]; + + cmakeFlags = [ + "-DDOCBOOKXML_CURRENTDTD_DIR=${docbook_xml_dtd_42}/xml/dtd/docbook" + "-DDOCBOOKXSL_DIR=${docbook_xsl}/xml/xsl/docbook" + "-DKJS_FORCE_DISABLE_PCRE=true" + "-DWITH_SOLID_UDISKS2=OFF" + ]; + + meta = with stdenv.lib; { + platforms = platforms.linux; + homepage = http://www.kde.org; + license = with licenses; [ gpl2 fdl12 lgpl21 ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index b1a8fca5c43..71b5deabdb1 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -299,6 +299,11 @@ in { pyjwkest = callPackage ../development/python-modules/pyjwkest { }; + pykde4 = callPackage ../development/python-modules/pykde4/default.nix { + inherit (self) pyqt4; + callPackage = pkgs.callPackage; + }; + pyqt4 = callPackage ../development/python-modules/pyqt/4.x.nix { pythonPackages = self; };