# HG changeset patch # User Michael Schloh von Bennewitz # Date 1306008342 -7200 # Node ID 870131689a5c0f468bd24317977dd2acda779ab3 # Parent c9103fdfdf0debd9574ff192fc446f18062a99ad Correct diverse buildconf of upstream release and reconcile packaging somewhat. These changes stem from the obvious changes in the latest vendor release, but from discussions with trolls Daniel and Oswald as well regarding build config. This commital follows conclusion of buildconf adjustments to allow the new vendor version to build on Linux AMD64, but is incomplete as many packaging comments show. The next series of changes focus on Solaris IA32 and reduction of buildconf adjustments testing old problems comprehensively in anticipation of discussion at the upcoming Nokia Contributor Summit in Berlin. diff -r c9103fdfdf0d -r 870131689a5c qt/qt.spec --- a/qt/qt.spec Mon Apr 04 20:34:12 2011 +0200 +++ b/qt/qt.spec Sat May 21 22:05:42 2011 +0200 @@ -39,8 +39,8 @@ Class: EVAL Group: Development License: GPL -Version: 4.7.0 -Release: 20101018 +Version: 4.7.3 +Release: 20110514 # build options %option with_tools yes @@ -112,12 +112,12 @@ openssllibs=`%{l_prefix}/bin/pkg-config --libs --static openssl` mysqllibs=`%{l_prefix}/bin/mysql_config --libs` - loclibs='' - case "%{l_platform -t}" in - *-sunos* ) - loclibs='-lsocket -lnsl' - ;; - esac +# MSvB In R/D: loclibs='' +# MSvB In R/D: case "%{l_platform -t}" in +# MSvB In R/D: *-sunos* ) +# MSvB In R/D: loclibs='-lsocket -lnsl' +# MSvB In R/D: ;; +# MSvB In R/D: esac ( cd mkspecs/qws for plat in freebsd-generic-g++ macx-generic-g++ solaris-generic-g++; do @@ -147,107 +147,158 @@ -e 's;\(QT_CFLAGS_[^=][^=]*=.*PKG_CONFIG.*\) --cflags ;\1 --cflags-only-other ;g' \ -e 's;\(QT_CFLAGS_[^=][^=]*=.*PKG_CONFIG.*\) --cflags ;\1 --cflags-only-other ;g' \ configure + # Trolltech Bug: + # Glib support cannot be enabled due to functionality tests! + # Turn on verbose messaging (-v) to ./configure to see the final report. + # Trolltech Bug: + # In file included from ../../include/QtGui/private/qgtkstyle_p.h:1, + # from kernel/qguiplatformplugin.cpp:63: + # ....../qgtkstyle_p.h:69:21: error: gtk/gtk.h: No such file or directory + # Workaround resolution: # hack to get back the standard '--cflags' of just Qt_CFLAGS_GLIB + # Question: Is this needed? QT_LIBS_QGTKSTYLE=`$PKG_CONFIG --libs gobject-2.0 2>/dev/null` %{l_shtool} subst \ -e 's;\(QT_CFLAGS_GLIB *=.*PKG_CONFIG.*\) --cflags-only-other ;\1 --cflags ;g' \ + -e 's;\(QT_CFLAGS_QGTKSTYLE *=.*PKG_CONFIG.*\) --cflags-only-other ;\1 --cflags ;g' \ configure - %{l_shtool} subst \ - -e 's;\(TRY_INCLUDEPATHS = \).*\(\$\$INCLUDEPATH\);\1\2;' \ - -e 's;/freetype2;/freetype;' \ - config.tests/unix/freetype/freetype.pri +# MSvB In R/D: %{l_shtool} subst \ +# MSvB In R/D: -e 's;\(TRY_INCLUDEPATHS = \).*\(\$\$INCLUDEPATH\);\1\2;' \ +# MSvB In R/D: -e 's;/freetype2;/freetype;' \ +# MSvB In R/D: config.tests/unix/freetype/freetype.pri + # Trolltech Bug: + # /opdv/lib/libmng.a(libmng_cms.o): In function `mnglcms_initlibrary': + # libmng_cms.c:(.text+0xa): undefined reference to `cmsErrorAction' %{l_shtool} subst \ -e "s;\(LIBS.*=.*-lmng\);\1 $lcmslibs;" \ src/gui/image/qmnghandler.pri + # Trolltech Bug: + # lib/libQtGui.a(qapplication_x11.o): In function + # `qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long)': + # qapplication_x11.cpp:(.text+0xec8d): undefined reference to `FcInit' %{l_shtool} subst \ -e "s;^\(LIBS += \)-lfreetype -lfontconfig;\1$fontconflibs;" \ config.tests/x11/fontconfig/fontconfig.pro + echo "LIBS += `%{l_prefix}/bin/pkg-config --libs-only-L fontconfig`" \ + >>tools/linguist/linguist/linguist.pro echo 'INCLUDEPATH += /usr/include/wacomcfg' \ >>src/gui/kernel/x11.pri echo "contains(QT_CONFIG, fontconfig) { LIBS += $fontconflibs }" \ >>src/gui/kernel/x11.pri echo "contains(QT_CONFIG, fontconfig) { LIBS += $fontconflibs }" \ >>src/gui/text/text.pri + # Trolltech Bug: + # The QtDBus module cannot be enabled because libdbus-1 version 0.93 was not found. + # Turn on verbose messaging (-v) to ./configure to see the final report. echo "INCLUDEPATH = `%{l_prefix}/bin/pkg-config --cflags-only-I dbus-1 | %{l_shtool} subst -e 's;\-I;;g'`" \ >>config.tests/unix/dbus/dbus.pro echo "LIBS = `%{l_prefix}/bin/pkg-config --libs-only-l --static dbus-1`" \ >>config.tests/unix/dbus/dbus.pro + # Trolltech Bug: + # PostgreSQL support cannot be enabled due to functionality tests! + # Turn on verbose messaging (-v) to ./configure to see the final report. %{l_shtool} subst \ -e "s;\(LIBS.*= -lpq\);\1 `%{l_prefix}/bin/pg_config --libs` $loclibs;" \ config.tests/unix/psql/psql.pro + # Trolltech Bug: + # Iconv support cannot be enabled due to functionality tests! + # Turn on verbose messaging (-v) to ./configure to see the final report. %{l_shtool} subst \ -e 's;^mac[^:][^:]*:\(LIBS\);\1;' \ config.tests/unix/iconv/iconv.pro - uiclibs=`%{l_prefix}/bin/pkg-config --libs-only-l --static fontconfig lcms` - %{l_shtool} subst \ - -e 's;LIBS .*= -lpq$;LIBS += -lpq -lssl -lcrypto;' \ - -e "s;LIBS .*= \$\$QT_LFLAGS_MYSQL;LIBS += $mysqllibs;" \ - src/sql/drivers/drivers.pri - %{l_shtool} subst \ - -e "s;QMAKE_CXXFLAGS += \$\$QT_CFLAGS_GLIB;INCPATH += `pkg-config --cflags-only-I glib-2.0 gthread-2.0 2>/dev/null | %{l_shtool} subst -e 's;-I;;g'`;g" \ - src/corelib/kernel/kernel.pri \ - src/gui/kernel/kernel.pri - %{l_shtool} subst \ - -e "s;QMAKE_CXXFLAGS \*= \$\$QT_CFLAGS_PSQL;INCPATH += `pg_config --includedir 2>/dev/null | %{l_shtool} subst -e 's;-I;;g'`;g" \ - -e "s;QMAKE_CXXFLAGS \*= \$\$QT_CFLAGS_MYSQL;INCPATH += `mysql_config --include 2>/dev/null | %{l_shtool} subst -e 's;-I;;g'`;g" \ - -e "s;QMAKE_CXXFLAGS \*= \$\$QT_CFLAGS_SQLITE;INCPATH += `pkg-config --cflags-only-I sqlite3 2>/dev/null | %{l_shtool} subst -e 's;-I;;g'`;g" \ - -e 's;!static:\(!isEmpty(QT_LFLAGS_PSQL)\);\1;' \ - -e 's;!static:\(LIBS \*= \$\$QT_LFLAGS_PSQL\);\1;' \ - src/plugins/sqldrivers/mysql/mysql.pro \ - src/plugins/sqldrivers/psql/psql.pro \ - src/plugins/sqldrivers/sqlite/sqlite.pro \ - src/sql/drivers/drivers.pri +# MSvB Aktualisierung: The uiclibs line is probably an error, remove... +# MSvB In R/D: uiclibs=`%{l_prefix}/bin/pkg-config --libs-only-l --static fontconfig lcms` +# MSvB In R/D: %{l_shtool} subst \ +# MSvB In R/D: -e 's;LIBS .*= -lpq$;LIBS += -lpq -lssl -lcrypto;' \ +# MSvB In R/D: -e "s;LIBS .*= \$\$QT_LFLAGS_MYSQL;LIBS += $mysqllibs;" \ +# MSvB In R/D: src/sql/drivers/drivers.pri +# MSvB In R/D: %{l_shtool} subst \ +# MSvB In R/D: -e "s;QMAKE_CXXFLAGS += \$\$QT_CFLAGS_GLIB;INCPATH += `pkg-config --cflags-only-I glib-2.0 gthread-2.0 2>/dev/null | %{l_shtool} subst -e 's;-I;;g'`;g" \ +# MSvB In R/D: src/corelib/kernel/kernel.pri \ +# MSvB In R/D: src/gui/kernel/kernel.pri +# MSvB In R/D: %{l_shtool} subst \ +# MSvB In R/D: -e "s;QMAKE_CXXFLAGS \*= \$\$QT_CFLAGS_PSQL;INCPATH += `pg_config --includedir 2>/dev/null | %{l_shtool} subst -e 's;-I;;g'`;g" \ +# MSvB In R/D: -e "s;QMAKE_CXXFLAGS \*= \$\$QT_CFLAGS_MYSQL;INCPATH += `mysql_config --include 2>/dev/null | %{l_shtool} subst -e 's;-I;;g'`;g" \ +# MSvB In R/D: -e "s;QMAKE_CXXFLAGS \*= \$\$QT_CFLAGS_SQLITE;INCPATH += `pkg-config --cflags-only-I sqlite3 2>/dev/null | %{l_shtool} subst -e 's;-I;;g'`;g" \ +# MSvB In R/D: -e 's;!static:\(!isEmpty(QT_LFLAGS_PSQL)\);\1;' \ +# MSvB In R/D: -e 's;!static:\(LIBS \*= \$\$QT_LFLAGS_PSQL\);\1;' \ +# MSvB In R/D: src/plugins/sqldrivers/mysql/mysql.pro \ +# MSvB In R/D: src/plugins/sqldrivers/psql/psql.pro \ +# MSvB In R/D: src/plugins/sqldrivers/sqlite/sqlite.pro \ +# MSvB In R/D: src/sql/drivers/drivers.pri + # Trolltech Bug: + # In file included from qdbusconnectioninterface.cpp:52:0: + # qdbus_symbols_p.h:58:23: fatal error: dbus/dbus.h: No such file or directoryIn + # file included from qdbusconnection_p.h:70:0, from qdbusconnection.cpp:51: %{l_shtool} subst \ -e "s;QMAKE_CXXFLAGS += \$\$QT_CFLAGS_DBUS;INCPATH += `pkg-config --cflags-only-I dbus-1 2>/dev/null | %{l_shtool} subst -e 's;-I;;g'`;g" \ src/dbus/dbus.pro + # Trolltech Bug: + # All the OpenGL functionality tests failed! + # You might need to modify the include and library search paths by + # editing QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in + # /home/mschloh/opwrk/tmp/qt-everywhere-opensource-src-4.7.3/mkspecs/linux-g++-64. %{l_shtool} subst \ -e 's;^\(QMAKE_INCDIR[^a-zA-Z0-9=]*=\).*;\1 %{l_prefix}/include;' \ -e 's;^\(QMAKE_LIBDIR[^a-zA-Z0-9=]*=\).*;\1;' \ - -e "s;^\(QMAKE_INCDIR_OPENGL[^=]*=\) *\(.*\);\1 %{l_prefix}/include \2;" \ - -e "s;^\(QMAKE_LIBDIR_OPENGL[^=]*=\) *\(.*\);\1 %{l_prefix}/lib \2;" \ + -e 's;^\(QMAKE_INCDIR_OPENGL[^=]*=\) *\(.*\);\1 %{l_prefix}/include \2;' \ + -e 's;^\(QMAKE_LIBDIR_OPENGL[^=]*=\) *\(.*\);\1 %{l_prefix}/lib \2;' \ -e 's;^\(QMAKE_LFLAGS_RELEASE.*\);\1 -s;' \ mkspecs/qws/*/qmake.conf \ mkspecs/*/*.conf - %{l_shtool} subst \ - -e 's;^\(QMAKE_LIBS +=.*\);\1 -liconv;' \ - src/corelib/corelib.pro +# MSvB In R/D: %{l_shtool} subst \ +# MSvB In R/D: -e 's;^\(QMAKE_LIBS +=.*\);\1 -liconv;' \ +# MSvB In R/D: src/corelib/corelib.pro + # Trolltech Bug: + # In file included from ../JavaScriptCore/runtime/RegExp.h:29:0, + # ../JavaScriptCore/yarr/RegexJIT.h: In destructor 'JSC::Yarr::RegexCodeBlock::~RegexCodeBlock()': + # ../JavaScriptCore/yarr/RegexJIT.h:63:36: error: 'jsRegExpFree' was not declared in this scope %{l_shtool} subst \ -e 's;\(DESTDIR *=\) *\$\$JAVASCRIPTCORE_DESTDIR;\1 $$QMAKE_LIBDIR_QT;' \ src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro + # Trolltech Bug: + # In file included from ../JavaScriptCore/runtime/RegExp.h:29:0, + # ../JavaScriptCore/yarr/RegexJIT.h: In destructor 'JSC::Yarr::RegexCodeBlock::~RegexCodeBlock()': + # ../JavaScriptCore/yarr/RegexJIT.h:63:36: error: 'jsRegExpFree' was not declared in this scope %{l_shtool} subst \ -e 's;\(pathToJavaScriptCoreOutput *=\) *\$\$ARGS/\$\$JAVASCRIPTCORE_DESTDIR;\1 $$QMAKE_LIBDIR_QT;g' \ src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri - %{l_shtool} subst \ - -e "s;^\(QMAKE_INCDIR_X11[^=]*=\).*;\1 %{l_prefix}/include $x11_incdir;" \ - -e "s;^\(QMAKE_LIBDIR_X11[^=]*=\).*;\1 %{l_prefix}/lib $x11_libdir;" \ - mkspecs/qws/solaris*/qmake.conf \ - mkspecs/solaris*/qmake.conf - echo "QMAKE_LIBDIR += %{l_prefix}/lib/qt/dynamic" \ - >>mkspecs/features/shared.prf - %{l_shtool} subst \ - -e 's; *\.\./3rdparty/freetype/.*;;g' \ - -e 's;^\( *contains(QT_CONFIG, freetype) {\);\1 LIBS += -lfreetype;' \ - src/gui/text/text.pri +# MSvB In R/D: %{l_shtool} subst \ +# MSvB In R/D: -e "s;^\(QMAKE_INCDIR_X11[^=]*=\).*;\1 %{l_prefix}/include $x11_incdir;" \ +# MSvB In R/D: -e "s;^\(QMAKE_LIBDIR_X11[^=]*=\).*;\1 %{l_prefix}/lib $x11_libdir;" \ +# MSvB In R/D: mkspecs/qws/solaris*/qmake.conf \ +# MSvB In R/D: mkspecs/solaris*/qmake.conf +# MSvB In R/D: echo "QMAKE_LIBDIR += %{l_prefix}/lib/qt/dynamic" \ +# MSvB In R/D: >>mkspecs/features/shared.prf +# MSvB In R/D: %{l_shtool} subst \ +# MSvB In R/D: -e 's; *\.\./3rdparty/freetype/.*;;g' \ +# MSvB In R/D: -e 's;^\( *contains(QT_CONFIG, freetype) {\);\1 LIBS += -lfreetype;' \ +# MSvB In R/D: src/gui/text/text.pri + # Trolltech Bug: + # image/qtiffhandler.cpp:48:20: fatal error: tiffio.h: No such file or directory + # compilation terminated. + # make[1]: *** [.obj/release-static/qtiffhandler.o] Error 1 %{l_shtool} subst \ -e 's;\(#include *"\)\(tiffio.h"\);\1tiff/\2;' \ src/gui/image/qtiffhandler.cpp - %{l_shtool} subst \ - -e 's;\(CONFIG[\t ]*+=[\t ]*qt\);\1 x11;' \ - tools/qtconfig/qtconfig.pro - %{l_shtool} subst \ - -e 's;webkit;web-broken-kit;g' \ - tools/assistant/tools/assistant/assistant.pro - echo "DEFINES += QT_NO_WEBKIT" \ - >>tools/assistant/tools/assistant/assistant.pro - %{l_shtool} subst \ - -e "s;Qt.s Classes;All Classes;" \ - tools/assistant/tools/assistant/doc/assistant.qdoc \ - tools/qdoc3/doc/qdoc-manual.qdoc \ - tools/qdoc3/doc/files/qt.qdocconf \ - tools/qdoc3/test/qt-build-docs.qdocconf \ - tools/qdoc3/test/qt.qdocconf +# MSvB In R/D: %{l_shtool} subst \ +# MSvB In R/D: -e 's;\(CONFIG[\t ]*+=[\t ]*qt\);\1 x11;' \ +# MSvB In R/D: tools/qtconfig/qtconfig.pro +# MSvB In R/D: %{l_shtool} subst \ +# MSvB In R/D: -e 's;webkit;web-broken-kit;g' \ +# MSvB In R/D: tools/assistant/tools/assistant/assistant.pro +# MSvB In R/D: echo "DEFINES += QT_NO_WEBKIT" \ +# MSvB In R/D: >>tools/assistant/tools/assistant/assistant.pro +# MSvB In R/D: %{l_shtool} subst \ +# MSvB In R/D: -e "s;Qt.s Classes;All Classes;" \ +# MSvB In R/D: tools/assistant/tools/assistant/doc/assistant.qdoc \ +# MSvB In R/D: tools/qdoc3/doc/qdoc-manual.qdoc \ +# MSvB In R/D: tools/qdoc3/doc/files/qt.qdocconf \ +# MSvB In R/D: tools/qdoc3/test/qt-build-docs.qdocconf \ +# MSvB In R/D: tools/qdoc3/test/qt.qdocconf %build # protect against sloppy code inclusion of all unused subprojects +# MSvB In R/D: ce-compat clucene des easing harfbuzz javascriptcore md4 md5 s60 sha1 webkit xorg zlib_dependency.pri (cd src/3rdparty && rm -rf [^cdehjmswxz]* sql* win* zlib zlib.pri) || exit $? # detect which platform for which to build @@ -291,9 +342,28 @@ -sysconfdir %{l_prefix}/etc/qt \ -examplesdir %{l_prefix}/share/qt/examples \ -demosdir %{l_prefix}/share/qt/demos \ +%if 0 + # Build time Qt definitions should predominate, + # otherwise foreign definitions cause errors like: + # + # g++ -c -I/foreign/include [...] animation/qguivariantanimation.cpp + # .moc/release-shared/moc_qnamespace.cpp:426:16: error: 'WA_LockPortraitOrientation' is not a member of 'Qt' + # .moc/release-shared/moc_qnamespace.cpp:427:16: error: 'WA_LockLandscapeOrientation' is not a member of 'Qt' + # .moc/release-shared/moc_qnamespace.cpp:428:16: error: 'WA_AutoOrientation' is not a member of 'Qt' + # .moc/release-shared/moc_qnamespace.cpp:440:16: error: 'AA_S60DisablePartialScreenInputMode' is not a member of 'Qt' + # + # Other problems include flawed definitions polluting (C|CXX)FLAGS + # and overriding the correct definitions in CPPFLAGS. Variables + # like QMAKE_(C|CXX)FLAGS exhibit this problem as well. + # + # The work around is to force a Qt dist include path in (C|CXX)FLAGS. +%endif + -I$RPM_BUILD_DIR/qt-everywhere-opensource-src-%{version}/include \ -release \ -shared \ -platform $platcomp \ + -s60 \ + -qt-style-s60 \ -no-sql-ibase \ %if "%{with_glib}" == "yes" -glib \ @@ -401,9 +471,28 @@ -sysconfdir %{l_prefix}/etc/qt \ -examplesdir %{l_prefix}/share/qt/examples \ -demosdir %{l_prefix}/share/qt/demos \ +%if 0 + # Build time Qt definitions should predominate, + # otherwise foreign definitions cause errors like: + # + # g++ -c -I/foreign/include [...] animation/qguivariantanimation.cpp + # .moc/release-shared/moc_qnamespace.cpp:426:16: error: 'WA_LockPortraitOrientation' is not a member of 'Qt' + # .moc/release-shared/moc_qnamespace.cpp:427:16: error: 'WA_LockLandscapeOrientation' is not a member of 'Qt' + # .moc/release-shared/moc_qnamespace.cpp:428:16: error: 'WA_AutoOrientation' is not a member of 'Qt' + # .moc/release-shared/moc_qnamespace.cpp:440:16: error: 'AA_S60DisablePartialScreenInputMode' is not a member of 'Qt' + # + # Other problems include flawed definitions polluting (C|CXX)FLAGS + # and overriding the correct definitions in CPPFLAGS. Variables + # like QMAKE_(C|CXX)FLAGS exhibit this problem as well. + # + # The work around is to force a Qt dist include path in (C|CXX)FLAGS. +%endif + -I$RPM_BUILD_DIR/qt-everywhere-opensource-src-%{version}/include \ -release \ -static \ -platform $platcomp \ + -s60 \ + -qt-style-s60 \ -no-sql-ibase \ %if "%{with_glib}" == "yes" -glib \ @@ -577,7 +666,7 @@ # echo %{_includedocs} # ## Doesn't work as expected, because it seems that OpenPKG too mercilessly -## removes RPM readi1ng of the %docdir keyword in rpm.patch.feature. +## removes RPM reading of the %docdir keyword in rpm.patch.feature. # %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ # %{l_files_std} \ # '%docdir %{l_prefix}/share/pkg/doc'