qt/qt.spec

Fri, 15 Oct 2010 18:46:25 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 15 Oct 2010 18:46:25 +0200
changeset 261
4f973c756446
parent 258
85dc84aeb23f
child 262
495dc52debb0
permissions
-rw-r--r--

Update copyright, file server URL, modify doc and link logic.
Now documentation is installed by default to the correct path,
and QtCreator links against Qt shared libraries instead of Qt
static libraries. This unfortunate change supports Nokia's
unfortunate decision to poorly support static linking in Qt.

michael@1 1 ##
michael@1 2 ## qt.spec -- OpenPKG RPM Specification
michael@257 3 ## Copyright (c) 2010 Michael Schloh von Bennewitz <michael@schloh.com>
michael@1 4 ##
michael@1 5 ## Permission to use, copy, modify, and distribute this software for
michael@1 6 ## any purpose with or without fee is hereby granted, provided that
michael@1 7 ## the above copyright notice and this permission notice appear in all
michael@1 8 ## copies.
michael@1 9 ##
michael@1 10 ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
michael@1 11 ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
michael@1 12 ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
michael@1 13 ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
michael@1 14 ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
michael@1 15 ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
michael@1 16 ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
michael@1 17 ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
michael@1 18 ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
michael@1 19 ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
michael@1 20 ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
michael@1 21 ## SUCH DAMAGE.
michael@1 22 ##
michael@1 23
michael@86 24 # FIXME: MSvB: It appears that bugs in current versions of binutils
michael@86 25 # FIXME: MSvB: fail to properly link Qt object code, resulting in
michael@86 26 # FIXME: MSvB: 'ld: libQt*.so: pthread_mutex...: invalid version 6
michael@86 27 # FIXME: MSvB: libQt*.so: could not read symbols: Bad value'
michael@86 28 # FIXME: MSvB: The effects of these bugs are platform dependent.
michael@86 29 # FIXME: MSvB: Solaris 11 IA-32 builds fail while Linux 2.6.25.18
michael@86 30 # FIXME: MSvB: AMD64 builds succeed.
michael@206 31 # FIXME: MSvB:
michael@257 32 # FIXME: MSvB: -no-webkit added to broken static buildconf
michael@258 33 # FIXME: MSvB: as work around for 'ld: cannot find -ljscore'
michael@1 34
michael@1 35 # package information
michael@1 36 Name: qt
michael@213 37 Summary: Cross Platform Application Framework
michael@1 38 URL: http://www.trolltech.com/products/qt/
michael@1 39 Vendor: Nokia Corporation
michael@1 40 Packager: Michael Schloh von Bennewitz
michael@1 41 Distribution: MSvB Recherche Production
michael@1 42 Class: EVAL
michael@1 43 Group: Development
michael@1 44 License: GPL
michael@257 45 Version: 4.7.0
michael@259 46 Release: 20101010
michael@1 47
michael@1 48 # build options
michael@1 49 %option with_tools yes
michael@65 50 %option with_mysql no
michael@65 51 %option with_pgsql no
michael@1 52 %option with_shared no
michael@1 53 %option with_examples no
michael@1 54
michael@1 55 # list of sources
michael@257 56 Source0: ftp://ftp.qt.nokia.com/qt/source/qt-everywhere-opensource-src-%{version}.tar.gz
michael@1 57
michael@1 58 # build information
michael@1 59 Prefix: %{l_prefix}
michael@1 60 BuildRoot: %{l_buildroot}
michael@4 61 BuildPreReq: OpenPKG, openpkg >= 20050726, make, gcc, pkgconfig
michael@1 62 PreReq: OpenPKG, openpkg >= 20050726
michael@1 63 BuildPreReq: X11, png, mng, jpeg, tiff, mesa, xrender
michael@1 64 PreReq: X11, png, mng, jpeg, tiff, mesa, xrender
michael@3 65 BuildPreReq: openssl, zlib, libiconv, sqlite, dbus
michael@3 66 PreReq: openssl, zlib, libiconv, sqlite, dbus
michael@1 67 BuildPreReq: fontconfig, freetype
michael@1 68 PreReq: fontconfig, freetype
michael@65 69 %if "%{with_mysql}" == "yes"
michael@65 70 BuildPreReq: mysql
michael@65 71 PreReq: mysql
michael@65 72 %endif
michael@65 73 %if "%{with_pgsql}" == "yes"
michael@65 74 BuildPreReq: postgresql
michael@65 75 PreReq: postgresql
michael@65 76 %endif
michael@1 77 AutoReq: no
michael@1 78 AutoReqProv: no
michael@1 79 Provides: QTSDK
michael@1 80
michael@1 81 %description
michael@3 82 Qt is a comprehensive C++ framework for cross-platform application
michael@3 83 development. Using Qt, you can develop applications and user
michael@3 84 interfaces once, and deploy them across many desktop and embedded
michael@86 85 operating systems without rewriting the source code. This package
michael@86 86 distribution builds all modules of the Qt/X11 Open Source Edition.
michael@1 87
michael@1 88 %track
michael@1 89 prog qt = {
michael@1 90 version = %{version}
michael@1 91 url = ftp://ftp.trolltech.com/qt/source/
michael@257 92 regex = qt-everywhere-opensource-src-(__VER__)\.tar\.gz
michael@1 93 }
michael@1 94
michael@1 95 %prep
michael@1 96 # announce exceptional build requirements
michael@257 97 ( echo "This package has exceptional build requirements:"
michael@1 98 echo " qt-%{version}-root (2,5 Go)"
michael@257 99 echo " qt-everywhere-opensource-src-%{version} (4,5 Go)"
michael@1 100 echo " qt-%{version}-<date>.<arch>-<os>-<tag>.rpm (1 Go)"
michael@1 101 echo "Building with no options takes 0,5 hours on a dual core"
michael@3 102 echo "2 GHz CPU, or 2 hours with all build options enabled."
michael@1 103 ) | %{l_rpmtool} msg -b -t notice
michael@1 104
michael@257 105 %setup -q -n qt-everywhere-opensource-src-%{version}
michael@1 106 x11_incdir=`%{l_rc} --query x11_incdir`
michael@1 107 x11_libdir=`%{l_rc} --query x11_libdir`
michael@92 108 fontconflibs=`%{l_prefix}/bin/pkg-config --libs-only-l --static fontconfig`
michael@257 109 lcmslibs=`%{l_prefix}/bin/pkg-config --libs-only-l --static lcms`
michael@92 110 openssllibs=`%{l_prefix}/bin/pkg-config --libs --static openssl`
michael@92 111
michael@1 112 loclibs=''
michael@1 113 case "%{l_platform -t}" in
michael@1 114 *-sunos* )
michael@1 115 loclibs='-lsocket -lnsl'
michael@1 116 ;;
michael@1 117 esac
michael@1 118 ( cd mkspecs/qws
michael@1 119 for plat in freebsd-generic-g++ macx-generic-g++ solaris-generic-g++;
michael@1 120 do
michael@1 121 ln -s $plat `echo $plat | %{l_shtool} subst -e 's;\(.*\)-generic-\(.*\);\1-x86-\2;'`
michael@1 122 done
michael@1 123 ) || exit $?
michael@1 124 %{l_shtool} subst \
michael@92 125 -e 's;\(-z[\t ][\t ]*\)\([^\t \"][^\t \"]*\);\1"\2";g' \
michael@1 126 configure
michael@1 127 %{l_shtool} subst \
michael@257 128 -e 's; *QMakeVar set QMAKE_CFLAGS_X11.*QT_CFLAGS_FONTCONFIG.*;;' \
michael@257 129 -e 's; *QMakeVar set QMAKE_LIBS_X11.*QT_LIBS_FONTCONFIG.*;;' \
michael@92 130 configure
michael@92 131 %{l_shtool} subst \
michael@92 132 -e "s;\(OPENSSL_LIBS *=\) *-lssl -lcrypto;\1 $openssllibs;" \
michael@1 133 configure
michael@1 134 %{l_shtool} subst \
michael@1 135 -e 's;-silent|;-rpath|-silent|;' \
michael@1 136 -e 's;\(RPATH_FLAGS="\)\\"\$QT_INSTALL_LIBS\\" \($RPATH_FLAGS"\);\1\2;' \
michael@1 137 -e "s;\(echo.*QMAKE_RPATHDIR +=\).*\$QT_INSTALL_LIBS\\\\\"\\\";\1 $x11_libdir\";" \
michael@1 138 configure
michael@257 139 # yes this is needed several times to catch nested occurences of '--cflags'
michael@257 140 %{l_shtool} subst \
michael@257 141 -e 's;\(QT_CFLAGS_[^=][^=]*=.*PKG_CONFIG.*\) --cflags ;\1 --cflags-only-other ;g' \
michael@257 142 -e 's;\(QT_CFLAGS_[^=][^=]*=.*PKG_CONFIG.*\) --cflags ;\1 --cflags-only-other ;g' \
michael@257 143 configure
michael@1 144 %{l_shtool} subst \
michael@1 145 -e 's;\(TRY_INCLUDEPATHS = \).*\(\$\$INCLUDEPATH\);\1\2;' \
michael@1 146 -e 's;/freetype2;/freetype;' \
michael@1 147 config.tests/unix/freetype/freetype.pri
michael@1 148 %{l_shtool} subst \
michael@257 149 -e "s;\(LIBS.*=.*-lmng\);\1 $lcmslibs;" \
michael@257 150 src/gui/image/qmnghandler.pri
michael@257 151 %{l_shtool} subst \
michael@92 152 -e "s;^\(LIBS += \)-lfreetype -lfontconfig;\1$fontconflibs;" \
michael@1 153 config.tests/x11/fontconfig/fontconfig.pro
michael@213 154 echo 'INCLUDEPATH += /usr/include/wacomcfg' \
michael@213 155 >>src/gui/kernel/x11.pri
michael@257 156 echo "contains(QT_CONFIG, fontconfig) { LIBS += $fontconflibs }" \
michael@257 157 >>src/gui/kernel/x11.pri
michael@257 158 echo "contains(QT_CONFIG, fontconfig) { LIBS += $fontconflibs }" \
michael@257 159 >>src/gui/text/text.pri
michael@257 160 echo "INCLUDEPATH = `%{l_prefix}/bin/pkg-config --cflags-only-I dbus-1 | %{l_shtool} subst -e 's;\-I;;g'`" \
michael@257 161 >>config.tests/unix/dbus/dbus.pro
michael@257 162 echo "LIBS = `%{l_prefix}/bin/pkg-config --libs-only-l --static dbus-1`" \
michael@257 163 >>config.tests/unix/dbus/dbus.pro
michael@1 164 %{l_shtool} subst \
michael@257 165 -e "s;\(LIBS.*= -lpq\);\1 `%{l_prefix}/bin/pg_config --libs` $loclibs;" \
michael@1 166 config.tests/unix/psql/psql.pro
michael@1 167 %{l_shtool} subst \
michael@257 168 -e 's;^mac[^:][^:]*:\(LIBS\);\1;' \
michael@1 169 config.tests/unix/iconv/iconv.pro
michael@257 170 uiclibs=`%{l_prefix}/bin/pkg-config --libs-only-l --static fontconfig lcms`
michael@1 171 %{l_shtool} subst \
michael@65 172 -e 's;LIBS .*= -lpq$;LIBS += -lpq -lssl -lcrypto;' \
michael@65 173 src/sql/drivers/drivers.pri
michael@65 174 %{l_shtool} subst \
michael@86 175 -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" \
michael@86 176 src/corelib/kernel/kernel.pri \
michael@86 177 src/gui/kernel/kernel.pri
michael@86 178 %{l_shtool} subst \
michael@86 179 -e "s;QMAKE_CXXFLAGS \*= \$\$QT_CFLAGS_PSQL;INCPATH += `pg_config --includedir 2>/dev/null | %{l_shtool} subst -e 's;-I;;g'`;g" \
michael@86 180 -e "s;QMAKE_CXXFLAGS \*= \$\$QT_CFLAGS_MYSQL;INCPATH += `mysql_config --include 2>/dev/null | %{l_shtool} subst -e 's;-I;;g'`;g" \
michael@86 181 -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" \
michael@257 182 -e 's;!static:\(!isEmpty(QT_LFLAGS_PSQL)\);\1;' \
michael@257 183 -e 's;!static:\(LIBS \*= \$\$QT_LFLAGS_PSQL\);\1;' \
michael@92 184 src/plugins/sqldrivers/mysql/mysql.pro \
michael@92 185 src/plugins/sqldrivers/psql/psql.pro \
michael@92 186 src/plugins/sqldrivers/sqlite/sqlite.pro \
michael@86 187 src/sql/drivers/drivers.pri
michael@86 188 %{l_shtool} subst \
michael@86 189 -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" \
michael@86 190 src/dbus/dbus.pro
michael@86 191 %{l_shtool} subst \
michael@1 192 -e 's;^\(QMAKE_INCDIR[^a-zA-Z0-9=]*=\).*;\1 %{l_prefix}/include;' \
michael@1 193 -e 's;^\(QMAKE_LIBDIR[^a-zA-Z0-9=]*=\).*;\1 %{l_prefix}/lib;' \
michael@1 194 -e "s;^\(QMAKE_INCDIR_OPENGL[^=]*=\) *\(.*\);\1 %{l_prefix}/include \2;" \
michael@86 195 -e "s;^\(QMAKE_LIBDIR_OPENGL[^=]*=\) *\(.*\);\1 %{l_prefix}/lib \2;" \
michael@1 196 -e 's;^\(QMAKE_LFLAGS_RELEASE.*\);\1 -s;' \
michael@1 197 mkspecs/qws/*/qmake.conf \
michael@1 198 mkspecs/*/*.conf
michael@1 199 %{l_shtool} subst \
michael@3 200 -e 's;^\(QMAKE_LIBS +=.*\);\1 -liconv;' \
michael@3 201 src/corelib/corelib.pro
michael@3 202 %{l_shtool} subst \
michael@86 203 -e "s;^\(QMAKE_INCDIR_X11[^=]*=\).*;\1 %{l_prefix}/include $x11_incdir;" \
michael@86 204 -e "s;^\(QMAKE_LIBDIR_X11[^=]*=\).*;\1 %{l_prefix}/lib $x11_libdir;" \
michael@1 205 mkspecs/qws/solaris*/qmake.conf \
michael@1 206 mkspecs/solaris*/qmake.conf
michael@1 207 %{l_shtool} subst \
michael@1 208 -e 's; *\.\./3rdparty/freetype/.*;;g' \
michael@1 209 -e 's;^\( *contains(QT_CONFIG, freetype) {\);\1 LIBS += -lfreetype;' \
michael@1 210 src/gui/text/text.pri
michael@1 211 %{l_shtool} subst \
michael@1 212 -e 's;\(#include *"\)\(tiffio.h"\);\1tiff/\2;' \
michael@257 213 src/gui/image/qtiffhandler.cpp
michael@92 214 %{l_shtool} subst \
michael@92 215 -e 's;\(CONFIG[\t ]*+=[\t ]*qt\);\1 x11;' \
michael@92 216 tools/qtconfig/qtconfig.pro
michael@1 217 # for projfile in `find examples/ -name '*.pro' -print`; do
michael@1 218 # echo 'CONFIG += release' >>$projfile
michael@1 219 # done
michael@1 220
michael@1 221 %build
michael@1 222 # protect against sloppy code inclusion of all unused subprojects
michael@257 223 (cd src/3rdparty && rm -rf [^cdehjmswxz]* sql* win* zlib zlib.pri) || exit $?
michael@1 224
michael@92 225 # detect which platform for which to build
michael@1 226 case "%{l_platform -t}" in
michael@86 227 sun4[uv]-sunos* | amd64-sunos* ) platcomp="solaris-g++-64" ;;
michael@86 228 i?86-sunos* ) platcomp="solaris-g++" ;;
michael@86 229 amd64-linux* ) platcomp="linux-g++-64" ;;
michael@86 230 i?86-linux* ) platcomp="linux-g++" ;;
michael@86 231 amd64-freebsd* | i?86-freebsd* ) platcomp="freebsd-g++" ;;
michael@86 232 *-aix* ) platcomp="aix-g++" ;;
michael@86 233 *-darwin* ) platcomp="macx-g++" ;;
michael@86 234 *-hpux* ) platcomp="hpux-g++" ;;
michael@86 235 *-irix* ) platcomp="irix-g++" ;;
michael@86 236 * ) echo "Platform '%{l_platform -t}' is not supported." 2>&1; exit 1 ;;
michael@1 237 esac
michael@1 238
michael@92 239 # detect which architecture extensions are available
michael@92 240 archflags=''
michael@92 241 case "%{l_platform -t}" in
michael@92 242 amd64-* )
michael@92 243 break
michael@92 244 ;;
michael@92 245 * )
michael@92 246 archflags='-no-sse2 -no-3dnow'
michael@92 247 ;;
michael@92 248 esac
michael@92 249
michael@1 250 %if "%{with_shared}" == "yes"
michael@1 251 # optional shared build (precedes mandatory static build)
michael@1 252 echo 'yes' | ./configure \
michael@92 253 $archflags \
michael@205 254 -opensource \
michael@1 255 -prefix %{l_prefix} \
michael@1 256 -bindir %{l_prefix}/bin \
michael@1 257 -libdir %{l_prefix}/lib/qt \
michael@1 258 -docdir %{l_prefix}/share/qt/doc \
michael@1 259 -headerdir %{l_prefix}/include \
michael@86 260 -plugindir %{l_prefix}/lib/qt/plugins \
michael@1 261 -datadir %{l_prefix}/share/qt \
michael@1 262 -translationdir %{l_prefix}/share/qt/translations \
michael@1 263 -sysconfdir %{l_prefix}/etc/qt \
michael@1 264 -examplesdir %{l_prefix}/share/qt/examples \
michael@1 265 -demosdir %{l_prefix}/share/qt/demos \
michael@1 266 -release \
michael@1 267 -shared \
michael@1 268 -platform $platcomp \
michael@1 269 -no-sql-ibase \
michael@65 270 %if "%{with_mysql}" == "yes"
michael@3 271 -qt-sql-mysql \
michael@86 272 -plugin-sql-mysql \
michael@65 273 %else
michael@65 274 -no-sql-mysql \
michael@65 275 %endif
michael@65 276 %if "%{with_pgsql}" == "yes"
michael@65 277 -qt-sql-psql \
michael@86 278 -plugin-sql-psql \
michael@65 279 %else
michael@65 280 -no-sql-psql \
michael@65 281 %endif
michael@1 282 -no-sql-odbc \
michael@65 283 -system-sqlite \
michael@65 284 -qt-sql-sqlite \
michael@86 285 -plugin-sql-sqlite \
michael@1 286 -no-sql-sqlite2 \
michael@3 287 -openssl-linked \
michael@1 288 -xmlpatterns \
michael@1 289 -svg \
michael@215 290 -webkit \
michael@1 291 -system-zlib \
michael@1 292 -qt-gif \
michael@1 293 -system-libpng \
michael@1 294 -system-libmng \
michael@1 295 -system-libjpeg \
michael@1 296 -system-libtiff \
michael@1 297 -rpath \
michael@1 298 -no-cups \
michael@257 299 -iconv \
michael@1 300 -pch \
michael@1 301 -dbus-linked \
michael@1 302 -opengl \
michael@1 303 -xrender \
michael@1 304 -fontconfig \
michael@1 305 -freetype \
michael@3 306 -no-glib
michael@1 307
michael@86 308 # default options are implicitly used, for example...
michael@1 309 #-no-fast -exceptions -accessibility -stl -qt3support -nis
michael@1 310 #-sm -xshape -xinerama -xcursor -xfixes -xrandr -tablet -xkb
michael@1 311
michael@1 312 # carry out shared build procedure
michael@1 313 ( cd src
michael@1 314 %{l_make} %{l_mflags -O} \
michael@215 315 sub-moc sub-rcc sub-uic sub-uic3
michael@1 316 ) || exit $?
michael@257 317 %{l_make} %{l_mflags -O} \
michael@257 318 sub-corelib-make_default-ordered \
michael@257 319 sub-xml-make_default-ordered \
michael@257 320 sub-network-make_default-ordered \
michael@257 321 sub-sql-make_default-ordered \
michael@257 322 sub-testlib-make_default-ordered \
michael@257 323 sub-dbus-make_default-ordered \
michael@257 324 sub-gui-make_default-ordered \
michael@257 325 sub-qt3support-make_default-ordered \
michael@257 326 sub-opengl-make_default-ordered \
michael@257 327 sub-xmlpatterns-make_default-ordered \
michael@257 328 sub-multimedia-make_default-ordered \
michael@257 329 sub-svg-make_default-ordered \
michael@257 330 sub-script-make_default-ordered \
michael@257 331 sub-declarative-make_default-ordered \
michael@257 332 sub-javascriptcore-make_default-ordered \
michael@257 333 sub-webkit-make_default-ordered \
michael@257 334 sub-scripttools-make_default-ordered \
michael@257 335 sub-plugins-make_default-ordered \
michael@257 336 sub-imports-make_default-ordered \
michael@257 337 sub-webkitdeclarative-make_default-ordered \
michael@257 338 sub-translations-make_default-ordered
michael@205 339
michael@205 340 # arthur plugin requires libQtDesigner
michael@92 341 ( cd demos
michael@205 342 ( cd ../tools/designer/src/lib
michael@205 343 %{l_make} %{l_mflags -O} staticlib
michael@205 344 ) || exit $?
michael@92 345 %{l_make} %{l_mflags -O} sub-arthurplugin
michael@205 346 ( cd ../tools/designer/src/lib
michael@205 347 %{l_make} %{l_mflags -O} distclean
michael@205 348 ) || exit $?
michael@92 349 ) || exit $?
michael@1 350
michael@1 351 # cache shared libs and initialize the build configuration, which
michael@1 352 # would otherwise still contain references to our shared libs build
michael@1 353 %{l_shtool} mkdir -f -p -m 755 dynamic
michael@1 354 mv lib/* dynamic/
michael@257 355 %{l_make} %{l_mflags} confclean
michael@1 356 %endif
michael@1 357
michael@1 358 # mandatory static build (follows optional shared build)
michael@1 359 echo 'yes' | ./configure \
michael@92 360 $archflags \
michael@205 361 -opensource \
michael@1 362 -prefix %{l_prefix} \
michael@1 363 -bindir %{l_prefix}/bin \
michael@1 364 -libdir %{l_prefix}/lib \
michael@1 365 -docdir %{l_prefix}/share/qt/doc \
michael@1 366 -headerdir %{l_prefix}/include \
michael@86 367 -plugindir %{l_prefix}/lib/qt/plugins \
michael@1 368 -datadir %{l_prefix}/share/qt \
michael@1 369 -translationdir %{l_prefix}/share/qt/translations \
michael@1 370 -sysconfdir %{l_prefix}/etc/qt \
michael@1 371 -examplesdir %{l_prefix}/share/qt/examples \
michael@1 372 -demosdir %{l_prefix}/share/qt/demos \
michael@1 373 -release \
michael@1 374 -static \
michael@1 375 -platform $platcomp \
michael@1 376 -no-sql-ibase \
michael@65 377 %if "%{with_mysql}" == "yes"
michael@3 378 -qt-sql-mysql \
michael@65 379 %else
michael@65 380 -no-sql-mysql \
michael@65 381 %endif
michael@65 382 %if "%{with_pgsql}" == "yes"
michael@65 383 -qt-sql-psql \
michael@65 384 %else
michael@65 385 -no-sql-psql \
michael@65 386 %endif
michael@1 387 -no-sql-odbc \
michael@65 388 -system-sqlite \
michael@65 389 -qt-sql-sqlite \
michael@1 390 -no-sql-sqlite2 \
michael@3 391 -openssl-linked \
michael@1 392 -xmlpatterns \
michael@1 393 -svg \
michael@257 394 -no-webkit \
michael@1 395 -system-zlib \
michael@1 396 -qt-gif \
michael@1 397 -system-libpng \
michael@1 398 -system-libmng \
michael@1 399 -system-libjpeg \
michael@1 400 -system-libtiff \
michael@1 401 -rpath \
michael@1 402 -no-cups \
michael@257 403 -iconv \
michael@1 404 -pch \
michael@1 405 -dbus-linked \
michael@1 406 -opengl \
michael@1 407 -xrender \
michael@1 408 -fontconfig \
michael@1 409 -freetype \
michael@3 410 -no-glib
michael@1 411
michael@86 412 # default options are implicitly used, for example...
michael@1 413 #-no-fast -exceptions -accessibility -stl -qt3support -nis
michael@1 414 #-sm -xshape -xinerama -xcursor -xfixes -xrandr -tablet -xkb
michael@1 415
michael@1 416 # carry out static build procedure
michael@258 417 %{l_make} %{l_mflags -O} sub-src
michael@1 418 %if "%{with_tools}" == "yes"
michael@258 419 %{l_make} %{l_mflags -O} \
michael@258 420 sub-tools-make_default-ordered sub-translations-make_default-ordered
michael@1 421 %endif
michael@1 422 %if "%{with_examples}" == "yes"
michael@1 423 %{l_make} %{l_mflags -O} \
michael@1 424 sub-demos-make_default-ordered \
michael@1 425 sub-examples-make_default-ordered
michael@1 426 %endif
michael@258 427 %if "%{with_tools}" == "yes"
michael@258 428 %{l_make} %{l_mflags -O} docs
michael@258 429 %else
michael@258 430 %if "%{with_examples}" == "yes"
michael@258 431 %{l_make} %{l_mflags -O} docs
michael@258 432 %endif
michael@258 433 %endif
michael@1 434
michael@1 435 %install
michael@1 436 rm -rf $RPM_BUILD_ROOT
michael@1 437
michael@1 438 # carry out installation procedure
michael@215 439 targets="sub-tools-bootstrap-install_subtargets-ordered \
michael@215 440 sub-moc-install_subtargets-ordered \
michael@1 441 sub-rcc-install_subtargets-ordered \
michael@1 442 sub-uic-install_subtargets-ordered \
michael@1 443 sub-corelib-install_subtargets-ordered \
michael@1 444 sub-xml-install_subtargets-ordered \
michael@1 445 sub-network-install_subtargets-ordered \
michael@257 446 sub-sql-install_subtargets-ordered \
michael@257 447 sub-testlib-install_subtargets-ordered \
michael@257 448 sub-dbus-install_subtargets-ordered \
michael@1 449 sub-gui-install_subtargets-ordered \
michael@1 450 sub-qt3support-install_subtargets-ordered \
michael@1 451 sub-uic3-install_subtargets-ordered \
michael@1 452 sub-opengl-install_subtargets-ordered \
michael@1 453 sub-xmlpatterns-install_subtargets-ordered \
michael@257 454 sub-multimedia-install_subtargets-ordered \
michael@1 455 sub-svg-install_subtargets-ordered \
michael@257 456 sub-script-install_subtargets-ordered \
michael@257 457 sub-declarative-install_subtargets-ordered \
michael@257 458 sub-scripttools-install_subtargets-ordered \
michael@257 459 sub-plugins-install_subtargets-ordered \
michael@257 460 sub-imports-install_subtargets-ordered \
michael@257 461 sub-translations-install_subtargets-ordered"
michael@257 462
michael@1 463 %if "%{with_tools}" == "yes"
michael@258 464 targets="$targets sub-tools-install_subtargets-ordered install_htmldocs install_qchdocs install_docimages"
michael@1 465 %endif
michael@1 466 %if "%{with_examples}" == "yes"
michael@258 467 targets="$targets sub-demos-install_subtargets-ordered sub-examples-install_subtargets-ordered install_htmldocs install_qchdocs install_docimages"
michael@1 468 %endif
michael@258 469 targets="$targets install_qmake install_mkspecs"
michael@1 470 %{l_make} %{l_mflags} $targets INSTALL_ROOT="$RPM_BUILD_ROOT"
michael@1 471
michael@1 472 %if "%{with_shared}" == "yes"
michael@1 473 # install shared libs and symlinks
michael@1 474 %{l_shtool} mkdir -f -p -m 755 \
michael@1 475 $RPM_BUILD_ROOT%{l_prefix}/lib/qt
michael@1 476 %{l_tar} cf - dynamic | %{l_tar} xf - -C $RPM_BUILD_ROOT%{l_prefix}/lib/qt
michael@1 477
michael@86 478 # offer limited support of pkg-config(1) for shared libs
michael@87 479 # substitution unfortunately only handles paths with no whitespace
michael@86 480 %{l_shtool} subst \
michael@257 481 -e "s;-L[^\t ][^\t ]*qt-everywhere-opensource-src-%{version};-L%{l_prefix};g" \
michael@87 482 $RPM_BUILD_ROOT%{l_prefix}/lib/qt/dynamic/pkgconfig/*
michael@86 483
michael@1 484 # explain nonstandard shared library placement
michael@86 485 ( echo "This OpenPKG Qt build is using the with_shared option."
michael@86 486 echo ""
michael@86 487 echo "This directory contains optional shared libraries as"
michael@1 488 echo "defined by the OpenPKG build specification. Although"
michael@86 489 echo "shared libraries have been optionally built (see the"
michael@1 490 echo "build time 'with_shared yes' option), static libraries"
michael@86 491 echo "were built by default as usual, and installed in the"
michael@86 492 echo "standard library directory %{l_prefix}/lib."
michael@86 493 echo ""
michael@86 494 echo "To build applications using shared libraries instead,"
michael@86 495 echo "please direct pkg-config(1) to use the properdefinitions"
michael@86 496 echo "by setting the environment variable PKG_CONFIG_PATH to "
michael@86 497 echo "%{l_prefix}/lib/qt/dynamic/pkgconfig."
michael@1 498 ) >$RPM_BUILD_ROOT%{l_prefix}/lib/qt/README
michael@1 499
michael@1 500 # remove temporary dynamic link paths
michael@1 501 %{l_shtool} subst \
michael@257 502 -e "s;-L\([\t ]*\)[^\t ][^\t ]*qt-everywhere-opensource-src-%{version}\(/[^\t ][^\t ]*\);-L\1%{l_prefix}\2;g" \
michael@257 503 -e "s;\([\t ][\t ]*\)[^\t ][^\t ]*\(qt-everywhere-opensource-src-%{version}.*\);\1/tmp/\2;" \
michael@92 504 $RPM_BUILD_ROOT%{l_prefix}/lib/qt/dynamic/*.prl \
michael@92 505 $RPM_BUILD_ROOT%{l_prefix}/lib/qt/dynamic/*.la
michael@1 506 %endif
michael@1 507
michael@259 508 ## Doesn't work as expected, because RPM reads the --[in|ex]cludedocs
michael@259 509 ## argument only when installing binary packages, rather than building.
michael@259 510 #%define _excludedocs 0
michael@259 511 #%define _includedocs 1
michael@259 512 # echo %{_excludedocs}
michael@259 513 # echo %{_includedocs}
michael@259 514 #
michael@259 515 ## Doesn't work as expected, because it seems that OpenPKG too mercilessly
michael@259 516 ## removes RPM readi1ng of the %docdir keyword in rpm.patch.feature.
michael@259 517 # %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
michael@259 518 # %{l_files_std} \
michael@259 519 # '%docdir %{l_prefix}/share/pkg/doc'
michael@259 520 #
michael@259 521 ## Doesn't work as expected, because the rpmtool(1) marks
michael@259 522 ## only einzeln files as documents, skipping directories
michael@259 523 # %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
michael@259 524 # %{l_files_std} \
michael@259 525 # '%doc %{l_prefix}/share/pkg/doc/doc.txt'
michael@259 526 #
michael@1 527 # determine internal file listing
michael@1 528 %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \
michael@1 529 %{l_files_std} \
michael@1 530 '%not %dir %{l_prefix}/lib/pkgconfig'
michael@1 531
michael@1 532 %files -f files
michael@1 533
michael@1 534 %clean
michael@1 535 rm -rf $RPM_BUILD_ROOT
michael@1 536

mercurial