-
Bug
-
Resolution: Invalid
-
Not Evaluated
-
None
-
None
-
None
-
Gentoo Linux / Python 2.7 / Qt 5.7.1
Thanks for the ongoing efforts in parsing C++11-specific Qt >= 5.7 syntax via clang, PySide2 team. It can't have been easy.
On Gentoo Linux, the preliminary results have been sadly... less than desirable. The Qt 5.6 branch of both shiboken2 and PySide2 compiles, installs, and behaves (more or less) as expected – as does the dev branch of shiboken2. The dev branch of PySide2, however, has been a real bear. ...and I'm Canadian. We know bears.
Compilation of the dev branch of PySide2 currently fails at the [ 4%] Running generator for QtCore... step with the following fatal error:
[ 4%] Built target pyside2 make -f PySide2/QtCore/CMakeFiles/QtCore.dir/build.make PySide2/QtCore/CMakeFiles/QtCore.dir/depend make[2]: Entering directory '/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999-python2_7' [ 4%] Running generator for QtCore... cd /var/tmp/portage/dev-python/pyside-9999/work/pyside-9999/PySide2/QtCore && /usr/bin/shiboken2 --generator-set=shiboken --enable-parent-ctor-heuristic --enable-pyside-extensions --enable-return-value-heuristic --use-isnull-as-nb_nonzero /var/tmp/portage/dev-python/pyside-9999/work/pyside-9999-python2_7/PySide2/pyside2_global.h --include-paths=/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999/PySide2:/usr/include/qt5/ --typesystem-paths=/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999/PySide2:/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999/PySide2/QtCore --output-directory=/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999-python2_7/PySide2/QtCore --license-file=/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999/PySide2/QtCore/../licensecomment.txt /var/tmp/portage/dev-python/pyside-9999/work/pyside-9999-python2_7/PySide2/QtCore/typesystem_core.xml --api-version=5.7 --drop-type-entries="" clang_parseTranslationUnit2(0x0, cmd[14]=-nostdinc -I/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/include/g++-v4 -I/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/include/g++-v4/x86_64-pc-linux-gnu -I/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/include/g++-v4/backward -I/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/include -I/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.4/include-fixed -I/usr/include -std=c++14 -fPIC -fno-exceptions -Wno-constant-logical-operand -I/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999/PySide2 -I/usr/include/qt5/ /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp) /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:64:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:80:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:84:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:93:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:97:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:101:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:105:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:109:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:113:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:117:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:121:5: error: expected value in expression Errors in /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp: /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:64:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:80:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:84:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:93:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:97:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:101:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:105:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:109:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:113:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:117:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:121:5: error: expected value in expression Clang: 11 diagnostic messages: /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:64:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:80:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:84:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:93:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:97:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:101:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:105:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:109:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:113:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:117:5: error: expected value in expression /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp:121:5: error: expected value in expression Keeping temporary file: /var/tmp/portage/dev-python/pyside-9999/temp/pyside2_global_TJ9656.hpp shiboken: Error running ApiExtractor. Command line: --generator-set=shiboken --enable-parent-ctor-heuristic --enable-pyside-extensions --enable-return-value-heuristic --use-isnull-as-nb_nonzero /var/tmp/portage/dev-python/pyside-9999/work/pyside-9999-python2_7/PySide2/pyside2_global.h --include-paths=/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999/PySide2:/usr/include/qt5/ --typesystem-paths=/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999/PySide2:/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999/PySide2/QtCore --output-directory=/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999-python2_7/PySide2/QtCore --license-file=/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999/PySide2/QtCore/../licensecomment.txt /var/tmp/portage/dev-python/pyside-9999/work/pyside-9999-python2_7/PySide2/QtCore/typesystem_core.xml --api-version=5.7 --drop-type-entries= make[2]: *** [PySide2/QtCore/CMakeFiles/QtCore.dir/build.make:66: PySide2/QtCore/PySide2/QtCore/qabstractanimation_wrapper.cpp] Error 1 make[2]: Leaving directory '/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999-python2_7' make[1]: *** [CMakeFiles/Makefile2:316: PySide2/QtCore/CMakeFiles/QtCore.dir/all] Error 2 make[1]: Leaving directory '/var/tmp/portage/dev-python/pyside-9999/work/pyside-9999-python2_7' make: *** [Makefile:128: all] Error 2
Visually inspecting the suspicious pyside2_global_TJ9656.hpp file reveals a horrifying cacophony of syntax errors – most empty #if pragmas. For example, the first syntax error at line 64 reads:
[line 57] #include <QtCore/QtCore> [line 58] #include <QtConcurrent/QtConcurrent> [line 59] #include <QtGui/QtGui> [line 60] #include <QtWidgets/QtWidgets> [line 61] #include <QtOpenGL/QtOpenGL> [line 62] #include "qpytextobject.h" // PySide class [line 63] #if 1 [line 64] #if <----- this can't be right [line 65] #include <QtX11Extras/QX11Info> [line 66] #endif [line 67] #endif [line 68] #include <QtXml/QtXml> [line 69] #include <QtXmlPatterns/QtXmlPatterns> [line 70] #include <QtUiTools/QtUiTools> [line 71] #include <QtNetwork/QtNetwork> [line 72] #include <QtMultimedia/QtMultimedia> [line 73] #include <QtPrintSupport/QtPrintSupport>
I'm out of my clang comfort zone here. The syntax errors are trivially identifiable, but tracing them back to their source ...get it, "source"? in the shiboken2 and PySide2 repositories is beyond my atrophied skill set and vanishing free time.
This may or may not relate to our use of conditional USE flags on Gentoo. USE flags govern which optional dependencies a package is compiled against. In this case, I've elected to compile PySide2 with the following flags, where:
- A "-" preceding a flag implies PySide2 to not be compiled against the corresponding optional dependency.
- No "-" preceding a flag implies PySide2 to be compiled against that dependency.
concurrent designer gui help multimedia network opengl svg testlib widgets xmlpatterns -declarative -printsupport -script -scripttools -sql -test -webchannel -webengine -webkit -websockets -x11extras
As this list suggests, I've compiled PySide2 against Qt5Concurrent but not Qt5Declarative. Does any of that matter? Only you can say, expert developer.
Please find attached the original compilation logfile and generated pyside2_global_TJ9656.hpp file. I'd love to help propel this along. Let me know if you need any further logfiles or system metadata.
Thanks again, intrepid team!