qt/qt.spec

Mon, 17 Sep 2012 19:10:10 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Mon, 17 Sep 2012 19:10:10 +0200
changeset 689
9fe04d4d4e5a
parent 349
886b6dad933a
permissions
-rw-r--r--

Update to new version of vendor software although Oracle fails to deliver.
More specifically, newer db(3) patch revisions exist but Oracle has
removed them from the canonical download server URI for Berkely DB.

     1 ##
     2 ##  qt.spec -- OpenPKG RPM Specification
     3 ##  Copyright (c) 2011 Michael Schloh von Bennewitz <michael@schloh.com>
     4 ##
     5 ##  Permission to use, copy, modify, and distribute this software for
     6 ##  any purpose with or without fee is hereby granted, provided that
     7 ##  the above copyright notice and this permission notice appear in all
     8 ##  copies.
     9 ##
    10 ##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
    11 ##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    12 ##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    13 ##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
    14 ##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    15 ##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    16 ##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
    17 ##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    18 ##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    19 ##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
    20 ##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    21 ##  SUCH DAMAGE.
    22 ##
    24 #   FIXME: MSvB: It appears that bugs in current versions of binutils
    25 #   FIXME: MSvB: fail to properly link Qt object code, resulting in
    26 #   FIXME: MSvB: 'ld: libQt*.so: pthread_mutex...: invalid version 6
    27 #   FIXME: MSvB: libQt*.so: could not read symbols: Bad value'
    28 #   FIXME: MSvB: The effects of these bugs are platform dependent.
    29 #   FIXME: MSvB: Solaris 11 IA-32 builds fail while Linux 2.6.25.18
    30 #   FIXME: MSvB: AMD64 builds succeed.
    32 #   package information
    33 Name:         qt
    34 Summary:      Cross Platform Application Framework
    35 URL:          http://www.trolltech.com/products/qt/
    36 Vendor:       Nokia Corporation
    37 Packager:     Michael Schloh von Bennewitz
    38 Distribution: Europalab Networks Production
    39 Class:        EVAL
    40 Group:        Development
    41 License:      GPL
    42 Version:      4.7.3
    43 Release:      20110514
    45 #   build options
    46 %option       with_tools     yes
    47 %option       with_glib      no
    48 %option       with_mysql     no
    49 %option       with_pgsql     no
    50 %option       with_shared    no
    51 %option       with_examples  no
    53 #   list of sources
    54 Source0:      ftp://ftp.qt.nokia.com/qt/source/qt-everywhere-opensource-src-%{version}.tar.gz
    56 #   build information
    57 Prefix:       %{l_prefix}
    58 BuildRoot:    %{l_buildroot}
    59 BuildPreReq:  OpenPKG, openpkg >= 20060823, make, gcc
    60 PreReq:       OpenPKG, openpkg >= 20060823
    61 BuildPreReq:  X11, png, mng, jpeg, tiff, mesa, xrender
    62 PreReq:       X11, png, mng, jpeg, tiff, mesa, xrender
    63 BuildPreReq:  pkgconfig, openssl, zlib, libiconv, sqlite, dbus
    64 PreReq:       pkgconfig, openssl, zlib, libiconv, sqlite, dbus
    65 BuildPreReq:  fontconfig, freetype
    66 PreReq:       fontconfig, freetype
    67 %if "%{with_glib}" == "yes"
    68 BuildPreReq:  glib2
    69 PreReq:       glib2
    70 %endif
    71 %if "%{with_mysql}" == "yes"
    72 BuildPreReq:  mysql
    73 PreReq:       mysql
    74 %endif
    75 %if "%{with_pgsql}" == "yes"
    76 BuildPreReq:  postgresql
    77 PreReq:       postgresql
    78 %endif
    79 AutoReq:      no
    80 AutoReqProv:  no
    81 Provides:     QTSDK
    83 %description
    84     Qt is a comprehensive C++ framework for cross-platform application
    85     development. It plays the role of a widget toolkit in facilitating
    86     the development of software with a graphical user interface, however
    87     Qt is useful for developing command line tools and consoles for
    88     servers as well.
    90 %track
    91     prog qt = {
    92         version   = %{version}
    93         url       = ftp://ftp.qt.nokia.com/qt/source/
    94         regex     = qt-everywhere-opensource-src-(__VER__)\.tar\.gz
    95     }
    97 %prep
    98     #   announce exceptional build requirements
    99     ( echo "This package has exceptional build requirements:"
   100       echo "  qt-%{version}-root (5 Go)"
   101       echo "  qt-everywhere-opensource-src-%{version} (6 Go)"
   102       echo "  qt-%{version}-<date>.<arch>-<os>-<tag>.rpm (2 Go)"
   103       echo "Building with no options takes 3,0 hours on a dual core"
   104       echo "2 GHz CPU, or 5,0 hours with all build options enabled."
   105     ) | %{l_rpmtool} msg -b -t notice
   107     %setup -q -n qt-everywhere-opensource-src-%{version}
   108     x11_incdir=`%{l_rc} --query x11_incdir`
   109     x11_libdir=`%{l_rc} --query x11_libdir`
   110     fontconflibs=`%{l_prefix}/bin/pkg-config --libs-only-l --static fontconfig`
   111     lcmslibs=`%{l_prefix}/bin/pkg-config --libs-only-l --static lcms`
   112     openssllibs=`%{l_prefix}/bin/pkg-config --libs --static openssl`
   113     mysqllibs=`%{l_prefix}/bin/mysql_config --libs`
   115 # MSvB In R/D:    loclibs=''
   116 # MSvB In R/D:    case "%{l_platform -t}" in
   117 # MSvB In R/D:        *-sunos* )
   118 # MSvB In R/D:            loclibs='-lsocket -lnsl'
   119 # MSvB In R/D:            ;;
   120 # MSvB In R/D:    esac
   121     ( cd mkspecs/qws
   122       for plat in freebsd-generic-g++ macx-generic-g++ solaris-generic-g++;
   123       do
   124           ln -s $plat `echo $plat | %{l_shtool} subst -e 's;\(.*\)-generic-\(.*\);\1-x86-\2;'`
   125       done
   126     ) || exit $?
   127     #   Trolltech Bug:
   128     #   yes was specified for OpenVG but cannot be enabled due to functionality tests!
   129     %{l_shtool} subst \
   130         -e 's;lower_case_includes;lower_case_bug;g' \
   131         configure
   132     %{l_shtool} subst \
   133         -e 's;\(-z[\t ][\t ]*\)\([^\t \"][^\t \"]*\);\1"\2";g' \
   134         configure
   135     %{l_shtool} subst \
   136         -e 's;\(RPATH_FLAGS\)=.*\$QT_INSTALL_LIBS.*\(\$RPATH_FLAGS\)";\1="%{l_prefix}/lib/qt/dynamic \2";' \
   137         -e 's;\(QMAKE_RPATHDIR +=\) \\"\$QT_INSTALL_LIBS\\";\1 %{l_prefix}/lib/qt/dynamic;' \
   138         configure
   139     %{l_shtool} subst \
   140         -e "s;\(OPENSSL_LIBS *=\) *-lssl -lcrypto;\1 $openssllibs;" \
   141         configure
   142     %{l_shtool} subst \
   143         -e 's; *QMakeVar set QMAKE_CFLAGS_X11.*QT_CFLAGS_FONTCONFIG.*;;' \
   144         configure
   145     #   yes this is needed several times to catch nested occurences of '--libs'
   146     %{l_shtool} subst \
   147         -e 's;\(QT_LIBS_FONTCONFIG *=.*PKG_CONFIG.*\) --libs ;\1 --libs-only-L ;g' \
   148         -e 's;\(QT_LIBS_FONTCONFIG *=.*PKG_CONFIG.*\) --libs ;\1 --libs-only-L ;g' \
   149         configure
   150     #   yes this is needed several times to catch nested occurences of '--cflags'
   151     %{l_shtool} subst \
   152         -e 's;\(QT_CFLAGS_[^=][^=]*=.*PKG_CONFIG.*\) --cflags ;\1 --cflags-only-other ;g' \
   153         -e 's;\(QT_CFLAGS_[^=][^=]*=.*PKG_CONFIG.*\) --cflags ;\1 --cflags-only-other ;g' \
   154         configure
   155     #   Trolltech Bug:
   156     #   Glib support cannot be enabled due to functionality tests!
   157     #   Turn on verbose messaging (-v) to ./configure to see the final report.
   158     #   Trolltech Bug:
   159     #   In file included from ../../include/QtGui/private/qgtkstyle_p.h:1,
   160     #                    from kernel/qguiplatformplugin.cpp:63:
   161     #   ....../qgtkstyle_p.h:69:21: error: gtk/gtk.h: No such file or directory
   162     #   Workaround resolution:
   163     #   hack to get back the standard '--cflags' of just Qt_CFLAGS_GLIB
   164     #   Question: Is this needed? QT_LIBS_QGTKSTYLE=`$PKG_CONFIG --libs gobject-2.0 2>/dev/null`
   165     %{l_shtool} subst \
   166         -e 's;\(QT_CFLAGS_GLIB *=.*PKG_CONFIG.*\) --cflags-only-other ;\1 --cflags ;g' \
   167         -e 's;\(QT_CFLAGS_QGTKSTYLE *=.*PKG_CONFIG.*\) --cflags-only-other ;\1 --cflags ;g' \
   168         configure
   169     %{l_shtool} subst \
   170         -e 's;\(TRY_INCLUDEPATHS = \).*\(\$\$INCLUDEPATH\);\1\2;' \
   171         -e 's;/freetype2;/freetype;' \
   172         config.tests/unix/freetype/freetype.pri
   173     #   Trolltech Bug:
   174     #   /opdv/lib/libmng.a(libmng_cms.o): In function `mnglcms_initlibrary':
   175     #   libmng_cms.c:(.text+0xa): undefined reference to `cmsErrorAction'
   176     %{l_shtool} subst \
   177         -e "s;\(LIBS.*=.*-lmng\);\1 $lcmslibs;" \
   178         src/gui/image/qmnghandler.pri
   179     #   Trolltech Bug:
   180     #   lib/libQtGui.a(qapplication_x11.o): In function
   181     #   `qt_init(QApplicationPrivate*, int, _XDisplay*, unsigned long, unsigned long)':
   182     #   qapplication_x11.cpp:(.text+0xec8d): undefined reference to `FcInit'
   183     %{l_shtool} subst \
   184         -e "s;^\(LIBS += \)-lfreetype -lfontconfig;\1$fontconflibs;" \
   185         config.tests/x11/fontconfig/fontconfig.pro
   186     echo "LIBS += `%{l_prefix}/bin/pkg-config --libs-only-L fontconfig`" \
   187         >>tools/linguist/linguist/linguist.pro
   188     echo 'INCLUDEPATH += /usr/include/wacomcfg' \
   189         >>src/gui/kernel/x11.pri
   190     echo "contains(QT_CONFIG, fontconfig) { LIBS += $fontconflibs }" \
   191         >>src/gui/kernel/x11.pri
   192     echo "contains(QT_CONFIG, fontconfig) { LIBS += $fontconflibs }" \
   193         >>src/gui/text/text.pri
   194     #   Trolltech Bug:
   195     #   The QtDBus module cannot be enabled because libdbus-1 version 0.93 was not found.
   196     #   Turn on verbose messaging (-v) to ./configure to see the final report.
   197     echo "INCLUDEPATH = `%{l_prefix}/bin/pkg-config --cflags-only-I dbus-1 | %{l_shtool} subst -e 's;\-I;;g'`" \
   198         >>config.tests/unix/dbus/dbus.pro
   199     echo "LIBS = `%{l_prefix}/bin/pkg-config --libs-only-l --static dbus-1`" \
   200         >>config.tests/unix/dbus/dbus.pro
   201     #   Trolltech Bug:
   202     #   PostgreSQL support cannot be enabled due to functionality tests!
   203     #   Turn on verbose messaging (-v) to ./configure to see the final report.
   204     pgldflags=`%{l_prefix}/bin/pg_config --ldflags`
   205     pglibs=`%{l_prefix}/bin/pg_config --libs`
   206     %{l_shtool} subst \
   207         -e "s;\(LIBS.*= -lpq\);\1 $pgldflags $pglibs $loclibs -pthread;" \
   208         config.tests/unix/psql/psql.pro
   209     #   Trolltech Bug:
   210     #   make: *** [sub-examples-make_default-ordered] Error 2
   211     #   QMAKE_PRL_LIBS in libQtSql.prl is generated defective.
   212     %{l_shtool} subst \
   213         -e "s;\$\$*QT_LFLAGS_PSQL;$pgldflags;" \
   214         -e "s;-lpq;-lpq $pglibs $loclibs -pthread;" \
   215         src/sql/drivers/psql/qsql_psql.pri
   216     #   Trolltech Bug:
   217     #   Iconv support cannot be enabled due to functionality tests!
   218     #   Turn on verbose messaging (-v) to ./configure to see the final report.
   219     %{l_shtool} subst \
   220         -e 's;^mac[^:][^:]*:\(LIBS\);\1;' \
   221         config.tests/unix/iconv/iconv.pro
   222     #   Trolltech Bug:
   223     #   Missing libmng test! Parts (src/gui/image/qmnghandler.cpp) use
   224     #     such libmng methods as mng_create(3), mng_putchunk_term(3)...
   225     #     These are only optional parts of typical MNG implementations.
   226     #     Questions surround whether the MNG standard [1] requires these
   227     #     API methods in their expected form, or if this alone is excuse 
   228     #     enough for neglecting such build time configuration.
   229     #       [1] http://www.libpng.org/pub/mng/spec/
   230     #     A work around is to force integration of Qt 3rdparty embedded
   231     #     MNG logic, thus weakening the loosely coupled nature of Qt
   232     #     components and potentially affecting security.
   233 # MSvB In R/D:    uiclibs=`%{l_prefix}/bin/pkg-config --libs-only-l --static fontconfig lcms`
   234 # MSvB In R/D:    %{l_shtool} subst \
   235 # MSvB In R/D:        -e 's;LIBS .*= -lpq$;LIBS += -lpq -lssl -lcrypto;' \
   236 # MSvB In R/D:        -e "s;LIBS .*= \$\$QT_LFLAGS_MYSQL;LIBS += $mysqllibs;" \
   237 # MSvB In R/D:        src/sql/drivers/drivers.pri
   238 # MSvB In R/D:    %{l_shtool} subst \
   239 # 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" \
   240 # MSvB In R/D:        src/corelib/kernel/kernel.pri \
   241 # MSvB In R/D:        src/gui/kernel/kernel.pri
   242 # MSvB In R/D:    %{l_shtool} subst \
   243 # 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" \
   244 # 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" \
   245 # 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" \
   246 # MSvB In R/D:        -e 's;!static:\(!isEmpty(QT_LFLAGS_PSQL)\);\1;' \
   247 # MSvB In R/D:        -e 's;!static:\(LIBS \*= \$\$QT_LFLAGS_PSQL\);\1;' \
   248 # MSvB In R/D:        src/plugins/sqldrivers/mysql/mysql.pro \
   249 # MSvB In R/D:        src/plugins/sqldrivers/psql/psql.pro \
   250 # MSvB In R/D:        src/plugins/sqldrivers/sqlite/sqlite.pro \
   251 # MSvB In R/D:        src/sql/drivers/drivers.pri
   252     #   Trolltech Bug:
   253     #   In file included from qdbusconnectioninterface.cpp:52:0:
   254     #   qdbus_symbols_p.h:58:23: fatal error: dbus/dbus.h: No such file or directoryIn
   255     #       file included from qdbusconnection_p.h:70:0, from qdbusconnection.cpp:51:
   256     %{l_shtool} subst \
   257         -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" \
   258         src/dbus/dbus.pro
   259     #   Trolltech Bug:
   260     #   All the OpenGL functionality tests failed!
   261     #   You might need to modify the include and library search paths by
   262     #   editing QMAKE_INCDIR_OPENGL, QMAKE_LIBDIR_OPENGL and QMAKE_LIBS_OPENGL in
   263     #   /home/mschloh/opwrk/tmp/qt-everywhere-opensource-src-4.7.3/mkspecs/linux-g++-64.
   264     %{l_shtool} subst \
   265         -e 's;^\(QMAKE_INCDIR[^a-zA-Z0-9=]*=\).*;\1 %{l_prefix}/include;' \
   266         -e 's;^\(QMAKE_LIBDIR[^a-zA-Z0-9=]*=\).*;\1 %{l_prefix}/lib;' \
   267         -e "s;^\(QMAKE_INCDIR_OPENGL[^=]*=\).*;\1 $x11_incdir;" \
   268         -e "s;^\(QMAKE_LIBDIR_OPENGL[^=]*=\).*;\1 $x11_libdir;" \
   269         -e "s;^\(QMAKE_INCDIR_OPENVG[^=]*=\).*;\1 $x11_incdir;" \
   270         -e "s;^\(QMAKE_LIBDIR_OPENVG[^=]*=\).*;\1 $x11_libdir;" \
   271         -e 's;^\(QMAKE_LFLAGS_RELEASE.*\);\1 -s;' \
   272         mkspecs/qws/*/qmake.conf \
   273         mkspecs/*/*.conf
   274     #   Trolltech Bug:
   275     #   yes was specified for OpenVG but cannot be enabled due to functionality tests!
   276     %{l_shtool} subst \
   277         -e 's;\(\$\$*\)\(QMAKE_LIBS_OPENVG\);\1\2 \1QMAKE_LIBS_THREAD;' \
   278         config.tests/unix/openvg/openvg.pro
   279     echo 'QMAKE_LIBS_OPENVG = -lOpenVG' \
   280         >>mkspecs/common/unix.conf
   281     %{l_shtool} subst \
   282         -e "s;^\(QMAKE_INCDIR_X11[^=]*=\).*;\1 $x11_incdir;" \
   283         -e "s;^\(QMAKE_LIBDIR_X11[^=]*=\).*;\1 $x11_libdir;" \
   284         mkspecs/qws/*/qmake.conf \
   285         mkspecs/*/qmake.conf
   286     %{l_shtool} subst \
   287         -e 's;^\(QMAKE_LIBS +=.*\);\1 -liconv;' \
   288         src/corelib/corelib.pro
   289     #   Trolltech Bug:
   290     #   In file included from ../JavaScriptCore/runtime/RegExp.h:29:0,
   291     #   ../JavaScriptCore/yarr/RegexJIT.h: In destructor 'JSC::Yarr::RegexCodeBlock::~RegexCodeBlock()':
   292     #   ../JavaScriptCore/yarr/RegexJIT.h:63:36: error: 'jsRegExpFree' was not declared in this scope
   293     %{l_shtool} subst \
   294         -e 's;\(DESTDIR *=\) *\$\$JAVASCRIPTCORE_DESTDIR;\1 $$QMAKE_LIBDIR_QT;' \
   295         src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro
   296     #   Trolltech Bug:
   297     #   In file included from ../JavaScriptCore/runtime/RegExp.h:29:0,
   298     #   ../JavaScriptCore/yarr/RegexJIT.h: In destructor 'JSC::Yarr::RegexCodeBlock::~RegexCodeBlock()':
   299     #   ../JavaScriptCore/yarr/RegexJIT.h:63:36: error: 'jsRegExpFree' was not declared in this scope
   300     %{l_shtool} subst \
   301         -e 's;\(pathToJavaScriptCoreOutput *=\) *\$\$ARGS/\$\$JAVASCRIPTCORE_DESTDIR;\1 $$QMAKE_LIBDIR_QT;g' \
   302         src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri
   303 # MSvB In R/D:    echo "QMAKE_LIBDIR += %{l_prefix}/lib/qt/dynamic" \
   304 # MSvB In R/D:        >>mkspecs/features/shared.prf
   305 # MSvB In R/D:    %{l_shtool} subst \
   306 # MSvB In R/D:        -e 's; *\.\./3rdparty/freetype/.*;;g' \
   307 # MSvB In R/D:        -e 's;^\( *contains(QT_CONFIG, freetype) {\);\1 LIBS += -lfreetype;' \
   308 # MSvB In R/D:        src/gui/text/text.pri
   309     #   Trolltech Bug:
   310     #   image/qtiffhandler.cpp:48:20: fatal error: tiffio.h: No such file or directory
   311     #   compilation terminated.
   312     #   make[1]: *** [.obj/release-static/qtiffhandler.o] Error 1
   313     %{l_shtool} subst \
   314         -e 's;\(#include  *"\)\(tiffio.h"\);\1tiff/\2;' \
   315         src/gui/image/qtiffhandler.cpp
   316     #   Trolltech Bug:
   317     #   In file included from ../../../gui/image/qjpeghandler.cpp:42:0:
   318     #   ../../../gui/image/qjpeghandler_p.h:45:35: fatal error:
   319     #   QtGui/qimageiohandler.h: No such file or directory
   320     %{l_shtool} subst \
   321         -e 's;\(INCLUDEPATH *\*=\)\( *\);\1 $RPM_BUILD_DIR/qt-everywhere-opensource-src-%{version}/include\2;' \
   322         src/gui/image/qjpeghandler.pri
   323 # MSvB In R/D:    %{l_shtool} subst \
   324 # MSvB In R/D:        -e 's;\(CONFIG[\t ]*+=[\t ]*qt\);\1 x11;' \
   325 # MSvB In R/D:        tools/qtconfig/qtconfig.pro
   326 # MSvB In R/D:    %{l_shtool} subst \
   327 # MSvB In R/D:        -e 's;webkit;web-broken-kit;g' \
   328 # MSvB In R/D:        tools/assistant/tools/assistant/assistant.pro
   329 # MSvB In R/D:    echo "DEFINES += QT_NO_WEBKIT" \
   330 # MSvB In R/D:        >>tools/assistant/tools/assistant/assistant.pro
   331 # MSvB In R/D:    %{l_shtool} subst \
   332 # MSvB In R/D:        -e 's;Qt.s Classes;All Classes;' \
   333 # MSvB In R/D:        tools/assistant/tools/assistant/doc/assistant.qdoc \
   334 # MSvB In R/D:        tools/qdoc3/doc/qdoc-manual.qdoc \
   335 # MSvB In R/D:        tools/qdoc3/doc/files/qt.qdocconf \
   336 # MSvB In R/D:        tools/qdoc3/test/qt-build-docs.qdocconf \
   337 # MSvB In R/D:        tools/qdoc3/test/qt.qdocconf
   338     #   Trolltech Bug:
   339     #   In file included from qpaintengine_vg.cpp:42:0:
   340     #   qpaintengine_vg_p.h:66:39: error: expected initializer before ':' token
   341     #   make[1]: *** [.obj/release-static/qpaintengine_vg.o] Error 1
   342     #   make: *** [sub-openvg-sub_src_target_ordered] Error 2
   343     %{l_shtool} subst \
   344         -e 's;Q_OPENVG_EXPORT;Q_DECL_EXPORT;g' \
   345         src/openvg/*
   347 %build
   348     #   protect against sloppy code inclusion of all unused subprojects
   349 # MSvB In R/D: ce-compat  clucene  des  easing  harfbuzz  javascriptcore md4   md5  s60  sha1  webkit  xorg  zlib_dependency.pri
   350     (cd src/3rdparty && rm -rf [^cdehjmswxz]* sql* win* zlib zlib.pri) || exit $?
   352     #   detect which platform for which to build
   353     case "%{l_platform -t}" in
   354         sun4[uv]-sunos* | amd64-sunos*  ) platcomp="solaris-g++-64" ;;
   355         i?86-sunos*                     ) platcomp="solaris-g++"    ;;
   356         amd64-linux*                    ) platcomp="linux-g++-64"   ;;
   357         i?86-linux*                     ) platcomp="linux-g++"      ;;
   358         amd64-freebsd* | i?86-freebsd*  ) platcomp="freebsd-g++"    ;;
   359         *-aix*                          ) platcomp="aix-g++"        ;;
   360         *-darwin*                       ) platcomp="macx-g++"       ;;
   361         *-hpux*                         ) platcomp="hpux-g++"       ;;
   362         *-irix*                         ) platcomp="irix-g++"       ;;
   363         *                               ) echo "Platform '%{l_platform -t}' is not supported." 2>&1; exit 1 ;;
   364     esac
   366     #   detect which architecture extensions are available
   367     archflags=''
   368     case "%{l_platform -t}" in
   369         amd64-* )
   370             break
   371             ;;
   372         * )
   373             archflags='-no-sse2 -no-3dnow'
   374             ;;
   375     esac
   377 %if "%{with_shared}" == "yes"
   378     #   optional shared build (precedes mandatory static build)
   379     echo 'yes' | ./configure \
   380         $archflags \
   381         -opensource \
   382         -prefix %{l_prefix} \
   383         -bindir %{l_prefix}/bin \
   384         -libdir %{l_prefix}/lib/qt/dynamic \
   385         -docdir %{l_prefix}/share/qt/doc \
   386         -headerdir %{l_prefix}/include \
   387         -plugindir %{l_prefix}/lib/qt/plugins \
   388         -datadir %{l_prefix}/share/qt \
   389         -translationdir %{l_prefix}/share/qt/translations \
   390         -sysconfdir %{l_prefix}/etc/qt \
   391         -examplesdir %{l_prefix}/share/qt/examples \
   392         -demosdir %{l_prefix}/share/qt/demos \
   393 %if 0
   394     #   Build time Qt definitions should predominate,
   395     #   otherwise foreign definitions cause errors like:
   396     #
   397     #   g++ -c -I/foreign/include [...] animation/qguivariantanimation.cpp
   398     #   .moc/release-shared/moc_qnamespace.cpp:426:16: error: 'WA_LockPortraitOrientation' is not a member of 'Qt'
   399     #   .moc/release-shared/moc_qnamespace.cpp:427:16: error: 'WA_LockLandscapeOrientation' is not a member of 'Qt'
   400     #   .moc/release-shared/moc_qnamespace.cpp:428:16: error: 'WA_AutoOrientation' is not a member of 'Qt'
   401     #   .moc/release-shared/moc_qnamespace.cpp:440:16: error: 'AA_S60DisablePartialScreenInputMode' is not a member of 'Qt'
   402     #
   403     #   Other problems include flawed definitions polluting (C|CXX)FLAGS
   404     #   and overriding the correct definitions in CPPFLAGS. Variables
   405     #   like QMAKE_(C|CXX)FLAGS exhibit this problem as well.
   406     #
   407     #   The work around is to force a Qt dist include path in (C|CXX)FLAGS.
   408 %endif
   409         -I$RPM_BUILD_DIR/qt-everywhere-opensource-src-%{version}/include \
   410         -release \
   411         -shared \
   412         -platform $platcomp \
   413         -s60 \
   414         -qt-style-s60 \
   415         -no-sql-ibase \
   416 %if "%{with_glib}" == "yes"
   417         -glib \
   418 %else
   419         -no-glib \
   420 %endif
   421 %if "%{with_mysql}" == "yes"
   422         -qt-sql-mysql \
   423         -plugin-sql-mysql \
   424 %else
   425         -no-sql-mysql \
   426 %endif
   427 %if "%{with_pgsql}" == "yes"
   428         -qt-sql-psql \
   429         -plugin-sql-psql \
   430 %else
   431         -no-sql-psql \
   432 %endif
   433         -no-sql-odbc \
   434         -system-sqlite \
   435         -qt-sql-sqlite \
   436         -plugin-sql-sqlite \
   437         -no-sql-sqlite2 \
   438         -openssl-linked \
   439         -optimized-qmake \
   440         -xmlpatterns \
   441         -svg \
   442         -webkit \
   443         -system-zlib \
   444         -qt-gif \
   445         -system-libpng \
   446         -system-libmng \
   447         -system-libjpeg \
   448         -system-libtiff \
   449         -rpath \
   450         -no-cups \
   451         -iconv \
   452         -pch \
   453         -dbus-linked \
   454         -opengl \
   455         -openvg \
   456         -xrender \
   457         -fontconfig \
   458         -freetype
   460     #   default options are implicitly used, for example...
   461     #-no-fast -exceptions -accessibility -stl -qt3support -nis
   462     #-sm -xshape -xinerama -xcursor -xfixes -xrandr -tablet -xkb
   464     #   carry out shared build procedure
   465     #   Trolltech Bug:
   466     #   Problem with dependency order, causes compiling of source files
   467     #     with unconfigured dependencies to other files to fail when
   468     #     building the sources in parallel. The implemented work around
   469     #     is disabling parallel make, causing a nearly 100% build deceleration.
   470     #   itemviews/qlistview.cpp: In member function 'void QListModeViewBase::dragMoveEvent(QDragMoveEvent*)':
   471     #   itemviews/qlistview.cpp:3134:1: internal compiler error: Segmentation fault
   472     ( cd src
   473       %{l_make} %{l_mflags} \
   474           sub-moc sub-rcc sub-uic sub-uic3
   475     ) || exit $?
   476     #   Trolltech Bug:
   477     #   Problem with dependency order, causes compiling of source files
   478     #     with unconfigured dependencies to other files to fail when
   479     #     building the sources in parallel. The implemented work around
   480     #     is disabling parallel make, causing a nearly 100% build deceleration.
   481     %{l_make} %{l_mflags} \
   482         sub-corelib-make_default-ordered \
   483         sub-xml-make_default-ordered \
   484         sub-network-make_default-ordered \
   485         sub-sql-make_default-ordered \
   486         sub-testlib-make_default-ordered \
   487         sub-dbus-make_default-ordered \
   488         sub-gui-make_default-ordered \
   489         sub-qt3support-make_default-ordered \
   490         sub-opengl-make_default-ordered \
   491         sub-xmlpatterns-make_default-ordered \
   492         sub-multimedia-make_default-ordered \
   493         sub-svg-make_default-ordered \
   494         sub-script-make_default-ordered \
   495         sub-declarative-make_default-ordered \
   496         sub-javascriptcore-make_default-ordered \
   497         sub-webkit-make_default-ordered \
   498         sub-scripttools-make_default-ordered \
   499         sub-plugins-make_default-ordered \
   500         sub-imports-make_default-ordered \
   501         sub-webkitdeclarative-make_default-ordered \
   502         sub-translations-make_default-ordered
   504     #   arthur plugin requires libQtDesigner
   505     ( cd demos
   506       ( cd ../tools/designer/src/lib
   507         %{l_make} %{l_mflags -O}
   508       ) || exit $?
   509       %{l_make} %{l_mflags -O} sub-arthurplugin
   510     ) || exit $?
   512     #   cache shared libs and initialize the build configuration, which
   513     #   would otherwise still contain references to our shared libs build
   514     %{l_shtool} mkdir -f -p -m 755 sharbuild/dynamic
   515     mv lib/* sharbuild/dynamic/
   516     mv plugins sharbuild/
   517     %{l_make} %{l_mflags} confclean
   518 %endif
   520     #   mandatory static build (follows optional shared build)
   521     echo 'yes' | ./configure \
   522         $archflags \
   523         -opensource \
   524         -prefix %{l_prefix} \
   525         -bindir %{l_prefix}/bin \
   526         -libdir %{l_prefix}/lib \
   527         -docdir %{l_prefix}/share/qt/doc \
   528         -headerdir %{l_prefix}/include \
   529         -plugindir %{l_prefix}/lib/qt/plugins \
   530         -datadir %{l_prefix}/share/qt \
   531         -translationdir %{l_prefix}/share/qt/translations \
   532         -sysconfdir %{l_prefix}/etc/qt \
   533         -examplesdir %{l_prefix}/share/qt/examples \
   534         -demosdir %{l_prefix}/share/qt/demos \
   535 %if 0
   536     #   Build time Qt definitions should predominate,
   537     #   otherwise foreign definitions cause errors like:
   538     #
   539     #   g++ -c -I/foreign/include [...] animation/qguivariantanimation.cpp
   540     #   .moc/release-shared/moc_qnamespace.cpp:426:16: error: 'WA_LockPortraitOrientation' is not a member of 'Qt'
   541     #   .moc/release-shared/moc_qnamespace.cpp:427:16: error: 'WA_LockLandscapeOrientation' is not a member of 'Qt'
   542     #   .moc/release-shared/moc_qnamespace.cpp:428:16: error: 'WA_AutoOrientation' is not a member of 'Qt'
   543     #   .moc/release-shared/moc_qnamespace.cpp:440:16: error: 'AA_S60DisablePartialScreenInputMode' is not a member of 'Qt'
   544     #
   545     #   Other problems include flawed definitions polluting (C|CXX)FLAGS
   546     #   and overriding the correct definitions in CPPFLAGS. Variables
   547     #   like QMAKE_(C|CXX)FLAGS exhibit this problem as well.
   548     #
   549     #   The work around is to force a Qt dist include path in (C|CXX)FLAGS.
   550 %endif
   551         -I$RPM_BUILD_DIR/qt-everywhere-opensource-src-%{version}/include \
   552         -release \
   553         -static \
   554         -platform $platcomp \
   555         -s60 \
   556         -qt-style-s60 \
   557         -no-sql-ibase \
   558 %if "%{with_glib}" == "yes"
   559         -glib \
   560 %else
   561         -no-glib \
   562 %endif
   563 %if "%{with_mysql}" == "yes"
   564         -qt-sql-mysql \
   565 %else
   566         -no-sql-mysql \
   567 %endif
   568 %if "%{with_pgsql}" == "yes"
   569         -qt-sql-psql \
   570 %else
   571         -no-sql-psql \
   572 %endif
   573         -no-sql-odbc \
   574         -system-sqlite \
   575         -qt-sql-sqlite \
   576         -no-sql-sqlite2 \
   577         -openssl-linked \
   578         -optimized-qmake \
   579         -xmlpatterns \
   580         -svg \
   581         -webkit \
   582         -system-zlib \
   583         -qt-gif \
   584         -system-libpng \
   585         -system-libmng \
   586         -system-libjpeg \
   587         -system-libtiff \
   588         -rpath \
   589         -no-cups \
   590         -iconv \
   591         -pch \
   592         -dbus-linked \
   593         -opengl \
   594         -openvg \
   595         -xrender \
   596         -fontconfig \
   597         -freetype
   599     #   default options are implicitly used, for example...
   600     #-no-fast -exceptions -accessibility -stl -qt3support -nis
   601     #-sm -xshape -xinerama -xcursor -xfixes -xrandr -tablet -xkb
   603     #   carry out static build procedure
   604     #   Trolltech Bug:
   605     #   Problem with dependency order, causes compiling of qtreeview.cpp
   606     #     with dependency to moc_qtreeview.cpp before moc(1) has finished.
   607     #     The implemented work around is disabling parallel make, causing
   608     #     a nearly 100% build deceleration but allowing the build to procede.
   609     #   In file included from itemviews/qtreeview.cpp:3761:0:
   610     #   .moc/release-static/moc_qtreeview.cpp: In member function 'QPixmap QTreeViewPrivate::renderTreeToPixmapForAnimation(const QRect&) const':
   611     #   .moc/release-static/moc_qtreeview.cpp:209:1: internal compiler error: Segmentation fault
   612     %{l_make} %{l_mflags} sub-src
   613 %if "%{with_tools}" == "yes"
   614     %{l_make} %{l_mflags -O} \
   615       sub-tools-make_default-ordered sub-translations-make_default-ordered
   616 %endif
   617 %if "%{with_examples}" == "yes"
   618     #   Trolltech Bug:
   619     #   Another problem with dependency order with the same work around,
   620     #     disabling parallel make and causing a nearly 100% build deceleration.
   621     #   In file included from main.cpp:136:0:
   622     #   .moc/release-static/main.moc:84:1: internal compiler error: Segmentation fault
   623     #   Please submit a full bug report,
   624     #   with preprocessed source if appropriate.
   625     #   See <http://openpkg.org/> for instructions.
   626     #   make[3]: *** [.obj/release-static/main.o] Error 1
   627     #   make[2]: *** [sub-validators-make_default] Error 2
   628     %{l_make} %{l_mflags} \
   629         sub-demos-make_default-ordered \
   630         sub-examples-make_default-ordered
   631 %endif
   632 %if "%{with_tools}" == "yes"
   633     %{l_make} %{l_mflags -O} docs
   634 %else
   635 %if "%{with_examples}" == "yes"
   636     %{l_make} %{l_mflags -O} docs
   637 %endif
   638 %endif
   640 %install
   641     rm -rf $RPM_BUILD_ROOT
   643     #   carry out installation procedure
   644     targets="sub-tools-bootstrap-install_subtargets-ordered \
   645             sub-moc-install_subtargets-ordered \
   646             sub-rcc-install_subtargets-ordered \
   647             sub-uic-install_subtargets-ordered \
   648             sub-corelib-install_subtargets-ordered \
   649             sub-xml-install_subtargets-ordered \
   650             sub-network-install_subtargets-ordered \
   651             sub-sql-install_subtargets-ordered \
   652             sub-testlib-install_subtargets-ordered \
   653             sub-dbus-install_subtargets-ordered \
   654             sub-gui-install_subtargets-ordered \
   655             sub-qt3support-install_subtargets-ordered \
   656             sub-uic3-install_subtargets-ordered \
   657             sub-opengl-install_subtargets-ordered \
   658             sub-xmlpatterns-install_subtargets-ordered \
   659             sub-multimedia-install_subtargets-ordered \
   660             sub-svg-install_subtargets-ordered \
   661             sub-script-install_subtargets-ordered \
   662             sub-declarative-install_subtargets-ordered \
   663             sub-scripttools-install_subtargets-ordered \
   664             sub-imports-install_subtargets-ordered \
   665             sub-translations-install_subtargets-ordered"
   667 %if "%{with_tools}" == "yes"
   668     targets="$targets sub-tools-install_subtargets-ordered install_htmldocs install_qchdocs install_docimages"
   669 %endif
   670 %if "%{with_examples}" == "yes"
   671     targets="$targets sub-demos-install_subtargets-ordered sub-examples-install_subtargets-ordered install_htmldocs install_qchdocs install_docimages"
   672 %endif
   673     targets="$targets install_qmake install_mkspecs"
   674     %{l_make} %{l_mflags} $targets INSTALL_ROOT="$RPM_BUILD_ROOT"
   675     %{l_shtool} install -c -m 644 \
   676         lib/libjscore.a lib/libjscore.prl \
   677         $RPM_BUILD_ROOT%{l_prefix}/lib/
   679     #   correct paths in pkg-config(1) configuration files
   680     %{l_shtool} subst \
   681         -e 's;-L[\t ]*[^\t ]*qt-everywhere-opensource-src-%{version};-L%{l_prefix};' \
   682         -e 's;=\([\t ]*\)[^\t ]*qt-everywhere-opensource-src-%{version};=\1%{l_prefix};g' \
   683         $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig/*
   684     #   keep library paths clean by removing redundant paths
   685     %{l_shtool} subst \
   686         -e 's;-L[\t ]*[^\t ]*qt-everywhere-opensource-src-%{version}[^\t ]*[\t ]*;;g' \
   687         $RPM_BUILD_ROOT%{l_prefix}/lib/pkgconfig/*
   689     #   install static or shared plugins according to user choice
   690 %if "%{with_shared}" != "yes"
   691     %{l_make} %{l_mflags} sub-plugins-install_subtargets-ordered INSTALL_ROOT="$RPM_BUILD_ROOT"
   692 %else
   693     %{l_tar} cf - -C sharbuild plugins | %{l_tar} xf - -C $RPM_BUILD_ROOT%{l_prefix}/lib/qt
   694 %endif
   696 %if "%{with_shared}" == "yes"
   697     #   install shared libs and symlinks
   698     %{l_shtool} mkdir -f -p -m 755 \
   699         $RPM_BUILD_ROOT%{l_prefix}/lib/qt
   700     %{l_tar} cf - -C sharbuild dynamic | %{l_tar} xf - -C $RPM_BUILD_ROOT%{l_prefix}/lib/qt
   702     #   offer limited support of pkg-config(1) for shared libs
   703     #   substitution unfortunately only handles paths with no whitespace
   704     %{l_shtool} subst \
   705         -e 's;-L[\t ]*[^\t ]*qt-everywhere-opensource-src-%{version}/lib;-L%{l_prefix}/lib/qt/dynamic;' \
   706         -e 's;=\([\t ]*\)[^\t ]*qt-everywhere-opensource-src-%{version};=\1%{l_prefix};g' \
   707         $RPM_BUILD_ROOT%{l_prefix}/lib/qt/dynamic/pkgconfig/*
   708     #   keep library paths clean by removing redundant paths
   709     %{l_shtool} subst \
   710         -e 's;-L[\t ]*[^\t ]*qt-everywhere-opensource-src-%{version}[^\t ]*[\t ]*;;g' \
   711         $RPM_BUILD_ROOT%{l_prefix}/lib/qt/dynamic/pkgconfig/*
   713     #   explain nonstandard shared library placement
   714     ( echo "This OpenPKG Qt build is using the with_shared option."
   715       echo ""
   716       echo "The directory %{l_prefix}/lib/qt/dynamic contains the"
   717       echo "requested shared libraries. Although shared libraries"
   718       echo "have been optionally built (see the build time"
   719       echo "'with_shared yes' option), static libraries were"
   720       echo "built by default as usual, and installed in the"
   721       echo "standard library directory %{l_prefix}/lib."
   722       echo ""
   723       echo "To build applications using shared libraries instead,"
   724       echo "please direct pkg-config(1) to use the proper definitions"
   725       echo "by setting the environment variable PKG_CONFIG_PATH to "
   726       echo "%{l_prefix}/lib/qt/dynamic/pkgconfig."
   727       echo ""
   728       echo "Note: If building via qmake(1), please append"
   729       echo "      either 'static' or 'shared' to the line"
   730       echo "      'CONFIG +=' in the project file (name.pro)."
   731       echo "      Then execute %{l_prefix}/bin/qmake on this file."
   732     ) >$RPM_BUILD_ROOT%{l_prefix}/lib/qt/README
   733 %endif
   735     #   correct temporary runtime link paths (static libs)
   736     %{l_shtool} subst \
   737         -e 's;/./;/;g' \
   738         -e 's;\(QMAKE_PRL_BUILD_DIR[\t ]*=\).*\(qt-everywhere-opensource-src-%{version}.*\);\1 /.../\2;' \
   739         -e 's;-L[\t ]*[^\t ]*qt-everywhere-opensource-src-%{version};-L%{l_prefix};' \
   740         $RPM_BUILD_ROOT%{l_prefix}/lib/qt/plugins/*/*.prl \
   741         $RPM_BUILD_ROOT%{l_prefix}/lib/*.prl \
   742         $RPM_BUILD_ROOT%{l_prefix}/lib/*.la
   743     #   clean install by removing redundant paths (static libs)
   744     %{l_shtool} subst \
   745         -e 's;-L[\t ]*[^\t ]*qt-everywhere-opensource-src-%{version}[^\t ]*[\t ]*;;g' \
   746         $RPM_BUILD_ROOT%{l_prefix}/lib/*.prl \
   747         $RPM_BUILD_ROOT%{l_prefix}/lib/*.la
   748 %if "%{with_shared}" == "yes"
   749     #   correct temporary runtime link paths (dynamic libs)
   750     %{l_shtool} subst \
   751         -e 's;/\./;/;g' \
   752         -e 's;\(QMAKE_PRL_BUILD_DIR[\t ]*=\).*\(qt-everywhere-opensource-src-%{version}.*\);\1 /.../\2;' \
   753         -e 's;-L[\t ]*[^\t ]*qt-everywhere-opensource-src-%{version}/lib;-L%{l_prefix}/lib/qt/dynamic;' \
   754         $RPM_BUILD_ROOT%{l_prefix}/lib/qt/dynamic/*.prl \
   755         $RPM_BUILD_ROOT%{l_prefix}/lib/qt/dynamic/*.la
   756     #   clean install by removing redundant paths (dynamic libs)
   757     %{l_shtool} subst \
   758         -e 's;-L[\t ]*[^\t ]*qt-everywhere-opensource-src-%{version}[^\t ]*[\t ]*;;g' \
   759         $RPM_BUILD_ROOT%{l_prefix}/lib/qt/dynamic/*.prl \
   760         $RPM_BUILD_ROOT%{l_prefix}/lib/qt/dynamic/*.la
   761 %endif
   763 ## Doesn't work as expected, because RPM reads the --[in|ex]cludedocs
   764 ## argument only when installing binary packages, rather than building.
   765 #%define  _excludedocs 0
   766 #%define  _includedocs 1
   767 #    echo %{_excludedocs}
   768 #    echo %{_includedocs}
   769 #
   770 ## Doesn't work as expected, because it seems that OpenPKG too mercilessly
   771 ## removes RPM reading of the %docdir keyword in rpm.patch.feature.
   772 #    %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
   773 #        %{l_files_std} \
   774 #        '%docdir %{l_prefix}/share/pkg/doc'
   775 #
   776 ## Doesn't work as expected, because the rpmtool(1) marks
   777 ## only einzeln files as documents, skipping directories
   778 #    %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
   779 #        %{l_files_std} \
   780 #        '%doc %{l_prefix}/share/pkg/doc/doc.txt'
   781 #
   782     #   determine internal file listing
   783     %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
   784         %{l_files_std} \
   785         '%not %dir %{l_prefix}/lib/pkgconfig'
   787 %files -f files
   789 %clean
   790     rm -rf $RPM_BUILD_ROOT

mercurial