[PyQt] PyKDE 4.14 fails to build on OS X with Sip error
Hanspeter Niederstrasser
fink at snaggledworks.com
Mon Sep 29 12:03:18 BST 2014
I originally sent this to the KDE-bindings mailing list, but received no
reply there. Since it is a sip error that is occurring, I figured the
PyQt list could maybe help.
I have KDE 4.14.0 running on OS X 10.9 with no real problems. When I
try to build PyKDE, I get the following errors. The system has
Qt-4.8.6, PyQt-4.11.2, and sip-4.16.3.
PyKDE first fails with this error:
/sw/var/lib/fink/path-prefix-libcxx/g++ -MD -DQT_CORE_LIB -DQT_GUI_LIB
-DSIP_PROTECTED_IS_PUBLIC -DUSING_SOPRANO_NRLMODEL_UNSTABLE_API
-D_REENTRANT -Dprotected=public -Dpython_module_PyKDE4_akonadi_EXPORTS
-fno-common -Wnon-virtual-dtor -Wno-long-long -Wundef -Wcast-align
-Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security
-Woverloaded-virtual -fno-common -fvisibility=hidden -Werror=return-type
-fvisibility-inlines-hidden -Wno-return-type-c-linkage -O2 -DNDEBUG
-DQT_NO_DEBUG -arch x86_64 -isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
-mmacosx-version-min=10.9 -fPIC
-I/sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0/build
-I/sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0
-I/sw/opt/kde4/mac/include -I/sw/opt/kde4/mac/include/KDE
-I/sw/lib/qt4-mac/lib/phonon.framework/KDE -F/sw/lib/qt4-mac/lib
-I/sw/lib/qt4-mac/include/phonon -I/sw/lib/qt4-mac/include/QtXmlPatterns
-I/sw/lib/qt4-mac/include/QtXml -I/sw/lib/qt4-mac/include/QtWebKit
-I/sw/lib/qt4-mac/include/QtUiTools -I/sw/lib/qt4-mac/include/QtTest
-I/sw/lib/qt4-mac/include/QtSvg -I/sw/lib/qt4-mac/include/QtSql
-I/sw/lib/qt4-mac/include/QtScriptTools
-I/sw/lib/qt4-mac/include/QtScript -I/sw/lib/qt4-mac/include/QtOpenGL
-I/sw/lib/qt4-mac/include/QtNetwork
-I/sw/lib/qt4-mac/include/QtMultimedia -I/sw/lib/qt4-mac/include/QtHelp
-I/sw/lib/qt4-mac/include/QtDesigner
-I/sw/lib/qt4-mac/include/QtDeclarative -I/sw/lib/qt4-mac/include/QtDBus
-I/sw/lib/qt4-mac/include/QtAssistant
-I/sw/lib/qt4-mac/include/Qt3Support -I/sw/lib/qt4-mac/include/QtGui
-I/sw/lib/qt4-mac/include/QtCore -I/sw/lib/qt4-mac/include/Qt
-I/sw/lib/qt4-mac/share/qt4/mkspecs/default -I/sw/lib/qt4-mac/include
-I/sw/include/python2.7 -I/sw/opt/kde4/mac/include/solid
-I/sw/opt/kde4/mac/include/kio -I/sw/opt/kde4/mac/include/dom
-I/sw/opt/kde4/mac/include/ksettings
-I/sw/opt/kde4/mac/include/knewstuff2 -I/sw/opt/kde4/mac/include/dnssd
-I/sw/opt/boost-1_55/include -I/sw/opt/soprano/mac/include -o
CMakeFiles/python_module_PyKDE4_akonadi.dir/sip/akonadi/sipakonadipart2.cpp.o
-c
/sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0/build/sip/akonadi/sipakonadipart2.cpp
[lots of warnings]
In file included from
/sw/share/sip-py27/pyqt4-mac/QtGui/qx11info_x11.sip:39:
/sw/lib/qt4-mac/include/QtGui/qx11info_x11.h:47:26: error: typedef
redefinition with different
types ('struct _XDisplay' vs 'void')
typedef struct _XDisplay Display;
^
/sw/opt/kde4/mac/include/KDE/../kapplication.h:42:14: note: previous
definition is here
typedef void Display;
^
Sip seems to be trying to use X11 related headers, which are not
relevant in this case, since Qt4 and PyQt have been built for the OS X
native backend. Indeed, earlier in the build, there's this:
/sw/bin/sip -t ALL -t WS_X11 -t Qt_4_8_6 -x VendorID -x
PyQt_NoPrintRangeBug -P -g -x PyKDE_QVector -x Py_v3 -x PyKDE_GLuint -j
8 -c
/sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0/build/sip/akonadi
-I /sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0/build -I
/sw/share/sip-py27/pyqt4-mac -I
/sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0/sip
/sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0/sip/akonadi/akonadimod.sip
So I patched CMakeLists.txt to use WS_MACX instead of WS_X11, and now
the build fails with this error:
/sw/bin/sip -t ALL -t WS_MACX -t Qt_4_8_6 -x VendorID -x
PyQt_NoPrintRangeBug -P -g -x PyKDE_QVector -x Py_v3 -x PyKDE_GLuint -j
8 -c
/sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0/build/sip/akonadi
-I /sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0/build -I
/sw/share/sip-py27/pyqt4-mac -I
/sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0/sip
/sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0/sip/akonadi/akonadimod.sip
sip: Deprecation warning:
/sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0/sip/kdeui/kxmlguibuilder.sip:41:
Annotations should not be used in explicit C/C++ signatures
sip: Deprecation warning:
/sw/build.build/pykde4-mac-py27-4.14.0-1/pykde4-4.14.0/sip/akonadi/itemserializerplugin.sip:33:
Annotation is invalid
sip: Display is undefined
I'm guessing Display refers to an X11 DISPLAY (or similar)? In theory,
this should not apply on OS X since we are using the cocoa backend. But
the error persists even if I have Xquartz (the OS X X11 server) running
and/or DISPLAY exported.
I haven't been able to find where 'Display' is coming from. Is PyKDE (or
PyQt or Sip) just assuming that it's going to have X available? If not,
what is a fix for this issue? Thanks for your help,
Hanspeter
More information about the PyQt
mailing list