Source: pythonqt
Version: 2.0.1-1
Tags: patch
User: debian-qt-...@lists.debian.org
Usertags: qt48-transition

Your package fails to build against Qt 4.8 which is currently in experimental.
The transition to unstable/testing is tracked in bug #653903.

I'm attaching a patch that fixes the build failure.
The moc code calls the emit() function of PythonQtStdDecorators but emit is 
defined to
an empty string.
So the patch defines QT_NO_KEYWORDS for moc_PythonQtStdDecorators.cxx and does
the necessary changes in PythonQtStdDecorators.h to support QT_NO_KEYWORDS.
Ideally the whole source would build without the generic Qt keywords but it 
doesn't.
The patch can be applied even before Qt 4.8 enters unstable.

Build log:

> [ 93%] Building CXX object 
> CMakeFiles/PythonQt.dir/src/gui/moc_PythonQtScriptingConsole.cxx.o
> /usr/bin/c++   -DPYTHONQT_EXPORTS -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -g 
> -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Wformat-security  
> -fPIC -I/usr/include/python2.7 -I/usr/include/qt4 -I/usr/include/qt4/QtGui 
> -I/usr/include/qt4/QtCore -I/build/buildd/pythonqt-2.0.1/src    -o 
> CMakeFiles/PythonQt.dir/src/gui/moc_PythonQtScriptingConsole.cxx.o -c 
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/gui/moc_PythonQtScriptingConsole.cxx
> In file included from 
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/moc_PythonQtStdDecorators.cxx:10:0:
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/../../src/PythonQtStdDecorators.h:
>  In member function 'void PythonQtStdDecorators::static_Qt_qDebug(const 
> QByteArray&)':
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/../../src/PythonQtStdDecorators.h:83:72:
>  warning: format not a string literal and no format arguments 
> [-Wformat-security]
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/../../src/PythonQtStdDecorators.h:
>  In member function 'void PythonQtStdDecorators::static_Qt_qWarning(const 
> QByteArray&)':
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/../../src/PythonQtStdDecorators.h:85:76:
>  warning: format not a string literal and no format arguments 
> [-Wformat-security]
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/../../src/PythonQtStdDecorators.h:
>  In member function 'void PythonQtStdDecorators::static_Qt_qCritical(const 
> QByteArray&)':
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/../../src/PythonQtStdDecorators.h:87:78:
>  warning: format not a string literal and no format arguments 
> [-Wformat-security]
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/../../src/PythonQtStdDecorators.h:
>  In member function 'void PythonQtStdDecorators::static_Qt_qFatal(const 
> QByteArray&)':
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/../../src/PythonQtStdDecorators.h:89:72:
>  warning: format not a string literal and no format arguments 
> [-Wformat-security]
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/moc_PythonQtStdDecorators.cxx:
>  In static member function 'static void 
> PythonQtStdDecorators::qt_static_metacall(QObject*, QMetaObject::Call, int, 
> void**)':
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/moc_PythonQtStdDecorators.cxx:152:25:
>  error: expected unqualified-id before '(' token
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/moc_PythonQtStdDecorators.cxx:153:25:
>  error: expected unqualified-id before '(' token
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/moc_PythonQtStdDecorators.cxx:154:25:
>  error: expected unqualified-id before '(' token
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/moc_PythonQtStdDecorators.cxx:155:25:
>  error: expected unqualified-id before '(' token
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/moc_PythonQtStdDecorators.cxx:156:25:
>  error: expected unqualified-id before '(' token
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/moc_PythonQtStdDecorators.cxx:157:25:
>  error: expected unqualified-id before '(' token
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/moc_PythonQtStdDecorators.cxx:158:26:
>  error: expected unqualified-id before '(' token
> /build/buildd/pythonqt-2.0.1/obj-i686-linux-gnu/src/moc_PythonQtStdDecorators.cxx:159:26:
>  error: expected unqualified-id before '(' token
> make[3]: *** [CMakeFiles/PythonQt.dir/src/moc_PythonQtStdDecorators.cxx.o] 
> Error 1

Regards,
Felix

diff -Nru pythonqt-2.0.1/debian/patches/cmakebuildsystem.patch pythonqt-2.0.1/debian/patches/cmakebuildsystem.patch
--- pythonqt-2.0.1/debian/patches/cmakebuildsystem.patch	2011-03-10 16:19:44.000000000 +0100
+++ pythonqt-2.0.1/debian/patches/cmakebuildsystem.patch	2012-03-18 23:32:55.000000000 +0100
@@ -2,7 +2,7 @@
 ===================================================================
 --- /dev/null	1970-01-01 00:00:00.000000000 +0000
 +++ PythonQt2.0.1/CMakeLists.txt	2011-03-06 19:23:17.000000000 +0100
-@@ -0,0 +1,259 @@
+@@ -0,0 +1,266 @@
 +cmake_minimum_required(VERSION 2.8)
 +
 +#-----------------------------------------------------------------------------
@@ -240,6 +240,13 @@
 +set_target_properties(PythonQt PROPERTIES DEFINE_SYMBOL PYTHONQT_EXPORTS)
 +set_target_properties(PythonQt PROPERTIES ${PythonQt_LIBRARY_PROPERTIES})
 +
++foreach(source ${gen_moc_sources})
++  string(REGEX MATCH "PythonQtStdDecorators" match ${source})
++  if(match)
++    set_property(SOURCE ${source} PROPERTY COMPILE_FLAGS -DQT_NO_KEYWORDS)
++  endif(match)
++endforeach(source {gen_moc_sources})
++
 +#
 +# That should solve linkage error on Mac when the project is used in a superbuild setup
 +# See http://blog.onesadcookie.com/2008/01/installname-magic.html
diff -Nru pythonqt-2.0.1/debian/patches/series pythonqt-2.0.1/debian/patches/series
--- pythonqt-2.0.1/debian/patches/series	2011-03-10 16:19:44.000000000 +0100
+++ pythonqt-2.0.1/debian/patches/series	2012-03-18 23:20:37.000000000 +0100
@@ -1 +1,2 @@
 cmakebuildsystem.patch
+stddecorators_no_keywords.patch
diff -Nru pythonqt-2.0.1/debian/patches/stddecorators_no_keywords.patch pythonqt-2.0.1/debian/patches/stddecorators_no_keywords.patch
--- pythonqt-2.0.1/debian/patches/stddecorators_no_keywords.patch	1970-01-01 01:00:00.000000000 +0100
+++ pythonqt-2.0.1/debian/patches/stddecorators_no_keywords.patch	2012-03-18 23:20:44.000000000 +0100
@@ -0,0 +1,24 @@
+--- pythonqt-2.0.1.orig/src/PythonQtStdDecorators.h
++++ pythonqt-2.0.1/src/PythonQtStdDecorators.h
+@@ -56,16 +56,20 @@ class PYTHONQT_EXPORT PythonQtStdDecorat
+ {
+   Q_OBJECT
+ 
+-public slots:
++public Q_SLOTS:
+   bool connect(QObject* sender, const QByteArray& signal, PyObject* callable);
+   bool connect(QObject* sender, const QByteArray& signal, QObject* receiver, const QByteArray& slot);
+   bool disconnect(QObject* sender, const QByteArray& signal, PyObject* callable);
+   bool disconnect(QObject* sender, const QByteArray& signal, QObject* receiver, const QByteArray& slot);
+ 
++#ifndef QT_NO_KEYWORDS
+ #undef emit
++#endif
+   void emit(QObject* sender, const QByteArray& signal, PyObject* arg1 = NULL,PyObject* arg2 = NULL,
+             PyObject* arg3 = NULL,PyObject* arg4 = NULL,PyObject* arg5 = NULL,PyObject* arg6 = NULL,PyObject* arg7 = NULL);
++#ifndef QT_NO_KEYWORDS
+ #define emit
++#endif
+   
+   QObject* parent(QObject* o);
+   void setParent(QObject* o, QObject* parent);

Reply via email to