Package: pykde4 Version: 4:4.7.4-2 Severity: wishlist Tags: patch User: ubuntu-de...@lists.ubuntu.com Usertags: origin-ubuntu ubuntu-patch quantal
pykde4 already supports Python 3 in the upstream code. Making this available would be a simple matter of packaging. Well ... almost. There are a couple of things that complicate it. Firstly, there's a patch from newer upstream releases to fix building with >= 3.2. Secondly, a bug in kdelibs5-dev (which I've filed separately as #672552) causes a build failure; I worked around that by shipping a local cut-down copy of PythonMacros.cmake, which I reckoned would be temporarily acceptable because the resulting file is so short. I've tested this by running a Python 3 port of the Ubuntu installer's KDE frontend with it, and everything appears to be working fine. I built my test packages on Ubuntu rather than Debian because I ran into #671893 and couldn't readily fix that, but I hope it will still be OK once that's fixed. * Add Python 3 support. diff --git a/debian/control b/debian/control index 51ac67f..d634f34 100644 --- a/debian/control +++ b/debian/control @@ -8,8 +8,9 @@ Build-Depends: kde-sc-dev-latest (>= 4:4.7.4), libphonon-dev (>= 4:4.6.0really4.4.4), libsoprano-dev (>= 2.7.0), libqt4-dev (>= 4:4.7.1), libqt4-opengl-dev (>= 4:4.7.1), libqtwebkit-dev, libboost-dev, shared-desktop-ontologies (>= 0.8), - python, python-all-dev, python-sip-dev (>= 4.12.0), - python-qt4 (>= 4.8.3-3~), python-qt4-dev (>= 4.8.3-3~) + python, python-all-dev, python3-all-dev, + python-sip-dev (>= 4.12.0), python3-sip-dev, + python-qt4 (>= 4.8.3-3~), python3-pyqt4, python-qt4-dev (>= 4.8.3-3~) Uploaders: Sune Vuorela <s...@debian.org>, Modestas Vainius <mo...@debian.org>, Michael Meskes <mes...@debian.org> Standards-Version: 3.9.2 X-Python-Version: >= 2.5 @@ -89,3 +90,50 @@ Description: debugging symbols for the PyKDE bindings are experiencing crashes of the PyKDE application and wish to report a problem to the developers. +Package: python3-kde4 +Architecture: any +Depends: ${shlibs:Depends}, ${python3:Depends}, ${misc:Depends}, + python3-pyqt4, ${sip:Depends}, python3-sip +Provides: ${python3:Provides} +Description: Python 3 bindings for the KDE Development Platform + This package contains PyKDE, the Python 3 bindings for the KDE + libraries, that allow you to write KDE programs using Python 3 instead of + C++. It contains at least the following modules under the + PyKDE namespace: + . + * dnssd + * kdecore + * kdeui + * khtml + * kio + * knewstuff + * kparts + * kterminal + * ktexteditor + * kutils + * nepomuk + * plasma + * solid + . + And a few KDE related technologies like: + . + * akonadi + * phonon + * soprano + . + This package provides modules for all supported Python 3 versions. + +Package: python3-kde4-dbg +Section: debug +Architecture: any +Priority: extra +Depends: ${misc:Depends}, kdelibs5-dbg, python3-kde4 (= ${binary:Version}) +Recommends: python3-pyqt4-dbg +Breaks: kdebindings-dbg +Replaces: kdebindings-dbg +Description: debugging symbols for the PyKDE bindings + This package contains debugging files used to investigate problems with + Python 3 bindings for the KDE Development Platform. Install this package if + you are experiencing crashes of the PyKDE application and wish to report a + problem to the developers. + diff --git a/debian/patches/cmake_no_bytecode.diff b/debian/patches/cmake_no_bytecode.diff new file mode 100644 index 0000000..ab90706 --- /dev/null +++ b/debian/patches/cmake_no_bytecode.diff @@ -0,0 +1,31 @@ +Index: b/cmake/modules/PythonMacros.cmake +=================================================================== +--- /dev/null ++++ b/cmake/modules/PythonMacros.cmake +@@ -0,0 +1,26 @@ ++# Python macros ++# ~~~~~~~~~~~~~ ++# Copyright (c) 2007, Simon Edwards <si...@simonzone.com> ++# Cloned-and-hacked by Colin Watson <cjwat...@ubuntu.com>, removing bytecode ++# support. ++# ++# Redistribution and use is allowed according to the terms of the BSD license. ++# For details see the accompanying COPYING-CMAKE-SCRIPTS file. ++# ++# This file defines the following macros: ++# ++# PYTHON_INSTALL (SOURCE_FILE DESINATION_DIR) ++# Install the SOURCE_FILE, which is a Python .py file, into the ++# destination directory during install. ++ ++GET_FILENAME_COMPONENT(PYTHON_MACROS_MODULE_PATH ${CMAKE_CURRENT_LIST_FILE} PATH) ++ ++MACRO(PYTHON_INSTALL SOURCE_FILE DESINATION_DIR) ++ ++ FIND_FILE(_python_compile_py PythonCompile.py PATHS ${CMAKE_MODULE_PATH}) ++ ++ ADD_CUSTOM_TARGET(compile_python_files ALL) ++ ++ # Install the source file. ++ INSTALL(FILES ${SOURCE_FILE} DESTINATION ${DESINATION_DIR}) ++ENDMACRO(PYTHON_INSTALL) diff --git a/debian/patches/python32_compile_fix.diff b/debian/patches/python32_compile_fix.diff new file mode 100644 index 0000000..5440477 --- /dev/null +++ b/debian/patches/python32_compile_fix.diff @@ -0,0 +1,21 @@ +Description: Compile fix for Python 3.2 and higher +Author: Simon Edwards <si...@simonzone.com> +Origin: upstream, https://projects.kde.org/projects/kde/kdebindings/pykde4/repository/revisions/54bd6a7628e04efe5e1de53075227713f2526acf +Last-Update: 2012-05-08 + +Index: b/sip/kio/kfileitem.sip +=================================================================== +--- a/sip/kio/kfileitem.sip ++++ b/sip/kio/kfileitem.sip +@@ -236,7 +236,11 @@ + + len = sipCpp->count(); + ++#if PY_VERSION_HEX >= 0x03020000 ++ if (PySlice_GetIndicesEx(a0, len, &start, &stop, &step, &slicelength) < 0) ++#else + if (PySlice_GetIndicesEx((PySliceObject *)a0, len, &start, &stop, &step, &slicelength) < 0) ++#endif + sipIsErr = 1; + else + { diff --git a/debian/patches/series b/debian/patches/series index 0474e82..04bb536 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -4,3 +4,5 @@ fix_kpythonpluginfactory_build.diff make_pykde4_respect_sip_flags.diff pythonpluginfactory_use_versioned_python_lib.diff optional_install_sip_files.diff +python32_compile_fix.diff +cmake_no_bytecode.diff diff --git a/debian/python-kde4.install b/debian/python-kde4.install index bb19869..824bdd6 100644 --- a/debian/python-kde4.install +++ b/debian/python-kde4.install @@ -1,6 +1,6 @@ usr/lib/kde4/kpythonpluginfactory.so -usr/lib/python*/*-packages/PyKDE4/*.so -usr/lib/python*/*-packages/PyKDE4/__init__.py -usr/lib/python*/*-packages/PyKDE4/pykdeconfig.py -usr/lib/python*/*-packages/PyQt4/uic/pykdeuic4.py -usr/lib/python*/*-packages/PyQt4/uic/widget-plugins/kde4.py +usr/lib/python2.*/*-packages/PyKDE4/*.so +usr/lib/python2.*/*-packages/PyKDE4/__init__.py +usr/lib/python2.*/*-packages/PyKDE4/pykdeconfig.py +usr/lib/python2.*/*-packages/PyQt4/uic/pykdeuic4.py +usr/lib/python2.*/*-packages/PyQt4/uic/widget-plugins/kde4.py diff --git a/debian/python3-kde4.docs b/debian/python3-kde4.docs new file mode 100644 index 0000000..e845566 --- /dev/null +++ b/debian/python3-kde4.docs @@ -0,0 +1 @@ +README diff --git a/debian/python3-kde4.install b/debian/python3-kde4.install new file mode 100644 index 0000000..3367644 --- /dev/null +++ b/debian/python3-kde4.install @@ -0,0 +1,5 @@ +usr/lib/python3/*-packages/PyKDE4/*.so +usr/lib/python3/*-packages/PyKDE4/__init__.py +usr/lib/python3/*-packages/PyKDE4/pykdeconfig.py +usr/lib/python3/*-packages/PyQt4/uic/pykdeuic4.py +usr/lib/python3/*-packages/PyQt4/uic/widget-plugins/kde4.py diff --git a/debian/rules b/debian/rules index 90db410..e637de3 100755 --- a/debian/rules +++ b/debian/rules @@ -1,6 +1,6 @@ #! /usr/bin/make -f -dh = --with=python2 +dh = --with=python2,python3 include /usr/share/pkg-kde-tools/qt-kde-team/2/debian-qt-kde.mk @@ -8,6 +8,7 @@ pyversions = $(shell pyversions -vr) pydefaultversion = $(shell pyversions -vd) pyshared_nondefault = $(foreach v,$(filter-out $(pydefaultversion),$(pyversions)),\ usr/lib/pyshared/python$v/PyKDE4 usr/lib/python$v/dist-packages/PyKDE4) +py3versions = $(shell py3versions -vr) define nl @@ -20,16 +21,24 @@ override_dh_auto_configure: -DPYTHON_EXECUTABLE=/usr/bin/python$v \ -DDEFAULT_PYTHON_VERSION=$(if $(filter $(pydefaultversion),$v),true,false) \ $(nl)) + $(foreach v,$(py3versions),$(overridden_command) --builddirectory=builddir-$v -- \ + -DPYTHON_EXECUTABLE=/usr/bin/python$v \ + -DPYTHON_LIBRARY=/usr/lib/libpython${v}mu.so \ + -DPYTHON_SITE_PACKAGES_INSTALL_DIR=/usr/lib/python3/dist-packages \ + -DDEFAULT_PYTHON_VERSION=false \ + $(nl)) override_dh_auto_build override_dh_auto_install override_dh_auto_test override_dh_auto_clean: $(foreach v,$(pyversions),$(overridden_command) --builddirectory=builddir-$v $(nl)) + $(foreach v,$(py3versions),$(overridden_command) --builddirectory=builddir-$v $(nl)) override_dh_python2: $(overridden_command) dh_sip -ppython-kde4 override_dh_strip: - $(overridden_command) --dbg-package=python-kde4-dbg + $(overridden_command) -ppython-kde4 --dbg-package=python-kde4-dbg + $(overridden_command) -ppython3-kde4 --dbg-package=python3-kde4-dbg override_dh_shlibdeps: if [ -d debian/python-kde4 ]; then \ Thanks, -- Colin Watson [cjwat...@ubuntu.com] -- To UNSUBSCRIBE, email to debian-qt-kde-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20120512020258.gb6...@riva.dynamic.greenend.org.uk