diff --git a/pkgs/desktops/kde-4.5/bindings/default.nix b/pkgs/desktops/kde-4.5/bindings/default.nix new file mode 100644 index 00000000000..ce8f841726e --- /dev/null +++ b/pkgs/desktops/kde-4.5/bindings/default.nix @@ -0,0 +1,42 @@ +{ stdenv, fetchurl, lib, cmake, perl, python, sip, pyqt4, zlib, libpng, freetype, fontconfig, qt4, boost +, kdelibs, kdepimlibs, automoc4, soprano, akonadi, attica, polkit_qt_1, ruby +}: + +# This function will only build the pykde4 module. I don't need the other bindings and +# some bindings are even broken. + +stdenv.mkDerivation rec { + name = "kdebindings-4.4.95"; + + src = fetchurl { + url = "mirror://kde/unstable/4.4.95/src/${name}.tar.bz2"; + sha256 = "115xl1jcpnyr71573if0nvb3hy8z5hxqy5qlvc71pdprzrp78xbc"; + }; + + patches = [ ./python-site-packages-install-dir.diff ]; + + preConfigure = '' + CUSTOM_RUBY_SITE_ARCH_DIR=$(ruby -r rbconfig -e "print Config::CONFIG['sitearchdir']" | sed -e "s@${ruby}@$out@") + CUSTOM_RUBY_SITE_LIB_DIR=$(ruby -r rbconfig -e "print Config::CONFIG['sitelibdir']" | sed -e "s@${ruby}@$out@") + CUSTOM_PERL_SITE_ARCH_DIR=$(perl -MConfig -e 'print $Config{sitearch}' | sed -e "s@${perl}@$out@") + cmakeFlagsArray=( + -DSIP_DEFAULT_SIP_DIR=$out/share/sip + -DCUSTOM_RUBY_SITE_ARCH_DIR=$CUSTOM_RUBY_SITE_ARCH_DIR + -DCUSTOM_RUBY_SITE_LIB_DIR=$CUSTOM_RUBY_SITE_LIB_DIR + -DCUSTOM_PERL_SITE_ARCH_DIR=$CUSTOM_PERL_SITE_ARCH_DIR + ) + ''; + + # Okular seems also an optional depenedency which I left out + buildInputs = [ cmake perl python sip pyqt4 zlib libpng freetype fontconfig qt4 boost + kdelibs kdepimlibs automoc4 soprano akonadi attica polkit_qt_1 ruby ]; + + meta = { + description = "KDE bindings"; + longDescription = "Provides KDE bindings for several languages such as Java, Smoke and Python"; + license = "LGPL"; + homepage = http://www.kde.org; + inherit (kdelibs.meta) maintainers; + }; +} + diff --git a/pkgs/desktops/kde-4.5/bindings/python-site-packages-install-dir.diff b/pkgs/desktops/kde-4.5/bindings/python-site-packages-install-dir.diff new file mode 100644 index 00000000000..d1a58201b5f --- /dev/null +++ b/pkgs/desktops/kde-4.5/bindings/python-site-packages-install-dir.diff @@ -0,0 +1,50 @@ +diff --git a/python/pykde4/CMakeLists.txt b/python/pykde4/CMakeLists.txt +index 01b69dc..375661d 100644 +--- a/python/pykde4/CMakeLists.txt ++++ b/python/pykde4/CMakeLists.txt +@@ -188,12 +188,12 @@ IF(POLKITQT_FOUND) + SET(PYKDE_MODULES "${PYKDE_MODULES} polkitqt") + ENDIF(POLKITQT_FOUND) + +-PYTHON_INSTALL(__init__.py ${PYTHON_SITE_PACKAGES_DIR}/PyKDE4) ++PYTHON_INSTALL(__init__.py ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/PyKDE4) + + MESSAGE(STATUS "KDE_VERSION: ${KDE_VERSION}") + MESSAGE(STATUS "KDE4_INCLUDE_DIR: ${KDE4_INCLUDE_DIR}") + MESSAGE(STATUS "KDE4_LIB_DIR: ${KDE4_LIB_DIR}") +-MESSAGE(STATUS "PYTHON_SITE_PACKAGES_DIR: ${PYTHON_SITE_PACKAGES_DIR}") ++MESSAGE(STATUS "PYTHON_SITE_PACKAGES_INSTALL_DIR: ${PYTHON_SITE_PACKAGES_INSTALL_DIR}") + + # Setup and install pykdeconfig.py + +@@ -225,7 +225,7 @@ _pkg_config = { + 'konsolepart': 'False', + 'libdir': '${LIB_DIR}', + 'pykde_kde_sip_flags': '${_SIP_TAGS} ${_SIP_X} ${SIP_EXTRA_OPTIONS}', +- 'pykde_mod_dir': '${PYTHON_SITE_PACKAGES_DIR}/PyKDE4', ++ 'pykde_mod_dir': '${PYTHON_SITE_PACKAGES_INSTALL_DIR}/PyKDE4', + 'pykde_modules': '${PYKDE_MODULES}', + 'pykde_sip_dir': '${SIP_DEFAULT_SIP_DIR}/PyKDE4', + 'pykde_version': kde_version_hex, +@@ -235,7 +235,7 @@ _pkg_config = { + _default_macros = None") + + CONFIGURE_FILE(pykdeconfig.py.in ${CMAKE_CURRENT_BINARY_DIR}/pykdeconfig.py) +-PYTHON_INSTALL(${CMAKE_CURRENT_BINARY_DIR}/pykdeconfig.py ${PYTHON_SITE_PACKAGES_DIR}/PyKDE4) ++PYTHON_INSTALL(${CMAKE_CURRENT_BINARY_DIR}/pykdeconfig.py ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/PyKDE4) + + # Install the .sip files for anyone that wants to build bindings on top of PyKDE4. + # (Don't forget the / at the end of sip/.) +diff --git a/python/pykde4/tools/pykdeuic4/CMakeLists.txt b/python/pykde4/tools/pykdeuic4/CMakeLists.txt +index ea711ba..115c777 100644 +--- a/python/pykde4/tools/pykdeuic4/CMakeLists.txt ++++ b/python/pykde4/tools/pykdeuic4/CMakeLists.txt +@@ -1,5 +1,5 @@ + +-PYTHON_INSTALL(kde4.py ${PYTHON_SITE_PACKAGES_DIR}/PyQt4/uic/widget-plugins/) +-PYTHON_INSTALL(pykdeuic4.py ${PYTHON_SITE_PACKAGES_DIR}/PyQt4/uic/) ++PYTHON_INSTALL(kde4.py ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/PyQt4/uic/widget-plugins/) ++PYTHON_INSTALL(pykdeuic4.py ${PYTHON_SITE_PACKAGES_INSTALL_DIR}/PyQt4/uic/) + find_path(cmake_module_dir create_exe_symlink.cmake ${CMAKE_MODULE_PATH}) +-INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -DTARGET=${PYTHON_SITE_PACKAGES_DIR}/PyQt4/uic/pykdeuic4.py -DLINK_NAME=${BIN_INSTALL_DIR}/pykdeuic4 -P ${cmake_module_dir}/create_exe_symlink.cmake)" ) ++INSTALL(CODE "EXECUTE_PROCESS(COMMAND ${CMAKE_COMMAND} -DTARGET=${PYTHON_SITE_PACKAGES_INSTALL_DIR}/PyQt4/uic/pykdeuic4.py -DLINK_NAME=${BIN_INSTALL_DIR}/pykdeuic4 -P ${cmake_module_dir}/create_exe_symlink.cmake)" ) diff --git a/pkgs/desktops/kde-4.5/default.nix b/pkgs/desktops/kde-4.5/default.nix index 87a159e64b8..6bdae914ede 100644 --- a/pkgs/desktops/kde-4.5/default.nix +++ b/pkgs/desktops/kde-4.5/default.nix @@ -66,4 +66,13 @@ pkgs.recurseIntoAttrs (rec { openldap shared_mime_info; inherit kdelibs automoc4 akonadi soprano; }; + +### DEVELOPMENT + + kdebindings = import ./bindings { + inherit (pkgs) stdenv fetchurl cmake perl lib python sip zlib libpng pyqt4 + freetype fontconfig qt4 boost ruby; + inherit kdelibs kdepimlibs automoc4 soprano akonadi attica polkit_qt_1; + }; + })