# $Id: qt4-4.6.3-r1.smage2 5623 2010-07-17 09:08:59Z niro $ PNAME="qt4" PVER="4.7.0" PBUILD="r3" PCATEGORIE="x11-libs" STATE="unstable" DESCRIPTION="Qt: Cross-Platform Rich Client Development Framework." HOMEPAGE="http://trolltech.com/products/qt/" # build phonon or not (yes/no), disabled atm QT4_PHONON="no" SPECIAL_VARS="QT4_PHONON" SDEPEND=">= sys-dev/bison-2.4 >= x11-proto/xineramaproto-1.1 >= x11-proto/xextproto-7 >= x11-proto/inputproto-2 >= dev-util/pkgconfig-0.25 >= dev-libs/expat-2 >= x11-libs/libICE-1 >= x11-libs/libSM-1.1 >= x11-libs/libX11-1.2 >= x11-libs/libXau-1 >= x11-libs/libxcb-1.2 >= x11-libs/libXcursor-1.1 >= x11-libs/libXdmcp-1 >= x11-libs/libXext-1 >= x11-libs/libXfixes-4 >= x11-libs/libXft-2.1 >= x11-libs/libXi-1.2 >= x11-libs/libXinerama-1 >= x11-libs/libXrandr-1.3 >= x11-libs/libXrender-0.9 >= media-libs/libjpeg-8 >= media-libs/libmng-1.0.10 >= media-libs/libpng-1.4 >= media-libs/lcms-1.19 >= media-libs/freetype-2.4 >= media-libs/fontconfig-2.8 >= net-print/cups-1.4 >= sys-libs/zlib-1.2 >= media-libs/giflib-4.1 >= sys-apps/dbus-1.3 >= virtual/opengl >= media-libs/nas-1.9 >= dev-libs/openssl-1.0.0 >= dev-db/sqlite-3.7 >= dev-db/mysql5-5.1 >= dev-db/unixodbc-2.3" if [[ ${QT4_PHONON} = yes ]] then SDEPEND+=" >= media-libs/gstreamer-0.10.25 >= media-libs/gst-plugins-base-0.10.25 >= media-libs/gst-plugins-good-0.10.16" fi #PROVIDE="virtual/phonon" SRCFILE="${PNAME/4/}-everywhere-opensource-src-${PVER}.tar.gz" SRCDIR="${BUILDDIR}/${PNAME/4/}-everywhere-opensource-src-${PVER}" SPLIT_PACKAGES="${PNAME}-core ${PNAME}-dbus ${PNAME}-script ${PNAME}-gui ${PNAME}-svg ${PNAME}-sql ${PNAME}-xmlpatterns ${PNAME}-opengl ${PNAME}-qt3support ${PNAME}-webkit ${PNAME}-test ${PNAME}-multimedia ${PNAME}-assistant ${PNAME}-declarative ${PNAME}" # this is the transistional meta package! if [[ ${QT4_PHONON} = yes ]] then SPLIT_PACKAGES+="${PNAME}-phonon" fi KDE_QT_SNAPSHOT_ID="8fa76375a2f030ecf8aa23c917f51f04333a1b2c" # include kde4 to get the right KDEDIR for phonon! sminclude mtools kde4 SRC_URI=( ftp://ftp.qt.nokia.com/qt/source/${SRCFILE} mirror://${PNAME}/${SRCFILE} mirror://${PNAME}/qt-4.5.1-no-hardcoded_fonts.patch mirror://${PNAME}/qt-${PVER}-kde-qt-${KDE_QT_SNAPSHOT_ID}.patch ) # add phonon patches if [[ ${QT4_PHONON} = yes ]] then SRC_URI=( ${SRC_URI[*]} mirror://${PNAME}/qt-4.5.3-phonon-2.patch ) fi UP2DATE="updatecmd ftp://ftp.qt.nokia.com/qt/source/ | grep -v -- -tp | grep -v -- -beta | grep qt-everywhere-opensource-src | lasttarball gz" ## global vars ## export QTDIR=${SRCDIR} export LD_LIBRARY_PATH=${QTDIR}/lib export PATH=${QTDIR}/bin:${PATH} export PLATFORM=linux-g++ [[ ${ARCH} = x86_64 ]] && export PLATFORM=linux-g++-64 # install prefix export QT_PREFIX=/usr # etc dir export QT_SYSCONFDIR=/etc/${PNAME} # envfile export QT_ENVFILE=/etc/env.d/45${PNAME} # do not run postinstall/remove from kde4 include unset -f postinstall unset -f postremove split_info_qt4() { DESCRIPTION="Qt4: Cross-Platform Rich Client Development Framework." DEPEND="== x11-libs/qt4-core-${PVER} == x11-libs/qt4-gui-${PVER} == x11-libs/qt4-svg-${PVER} == x11-libs/qt4-sql-${PVER} == x11-libs/qt4-script-${PVER} == x11-libs/qt4-xmlpatterns-${PVER} == x11-libs/qt4-dbus-${PVER} == x11-libs/qt4-opengl-${PVER} == x11-libs/qt4-qt3support-${PVER} == x11-libs/qt4-webkit-${PVER} == x11-libs/qt4-test-${PVER} == x11-libs/qt4-multimedia-${PVER} == x11-libs/qt4-assistant-${PVER} == x11-libs/qt4-declarative-${PVER}" if [[ ${QT4_PHONON} = yes ]] then DEPEND+=" == x11-libs/qt4-phonon-${PVER}" fi PKGTYPE="virtual" NOPKGBUILD="true" # drop everything we don't need in the meta package: INHERITS="" SPECIAL_VARS="" SPECIAL_FUNCTIONS="" SDEPEND="" PROVIDE="" unset -f preinstall #unset -f postinstall unset -f preremove unset -f postremove # inform the user postinstall() { echo echo "Please note that this meta package is only provided for convenience." echo "No packages should depend directly on this meta package, but on the" echo "specific split Qt packages needed." echo echo "This package will be removed in future versions!" echo } } split_info_qt4-core() { DESCRIPTION="Qt4: Cross-Platform Rich Client Development Framework." DEPEND=">= dev-libs/openssl-0.9.8k >= sys-libs/zlib-1.2" } split_info_qt4-gui() { DESCRIPTION="The GUI module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-core-${PVER} >= x11-libs/qt4-script-${PVER} >= x11-libs/qt4-dbus-${PVER} >= x11-libs/libSM-1.1 >= x11-libs/libX11-1.2 >= x11-libs/libXcursor-1.1 >= x11-libs/libXext-1 >= x11-libs/libXfont-1.4 >= x11-libs/libXi-1.2 >= x11-libs/libXinerama-1 >= x11-libs/libXrandr-1.3 >= media-libs/libjpeg-7 >= media-libs/libmng-1.0.10 >= media-libs/libpng-1.2.40 >= media-libs/libtiff-3.9.1 >= media-libs/freetype-2.3.9 >= media-libs/fontconfig-2.7 >= net-print/cups-1.4 >= sys-libs/zlib-1.2 >= media-libs/nas-1.9" } split_info_qt4-svg() { DESCRIPTION="The SVG module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-gui-${PVER}" } split_info_qt4-sql() { DESCRIPTION="The SQL module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-core-${PVER} >= dev-db/sqlite-3.6 >= dev-db/mysql5-5.1 >= dev-db/unixodbc-2.2.14" } split_info_qt4-script() { DESCRIPTION="The ECMAScript module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-core-${PVER}" } split_info_qt4-xmlpatterns() { DESCRIPTION="The patternist module for the Qt toolkit." DEPEND=">= x11-libs/qt4-core-${PVER}" } split_info_qt4-dbus() { DESCRIPTION="The DBus module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-core-${PVER} >= sys-apps/dbus-1.3" } split_info_qt4-opengl() { DESCRIPTION="The OpenGL module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-core-${PVER} >= x11-libs/qt4-gui-${PVER} >= virtual/opengl" } if [[ ${QT4_PHONON} = yes ]] then split_info_qt4-phonon() { DESCRIPTION="The Phonon module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-gui-${PVER} >= sys-apps/dbus-1.3 >= media-libs/gstreamer-0.10.25 >= media-libs/gst-plugins-base-0.10.25 >= media-libs/gst-plugins-good-0.10.16" PROVIDE="virtual/phonon" preinstall() { if [[ -n $(magequery -n phonon) ]] then die "please uninstall kde-base/phonon first!" fi } postinstall() { # breaks compilation if the old phonon symlink from kde-phonon exist if [[ -L ${MROOT}/opt/kde4/lib/libphonon.so ]] then rm ${MROOT}/opt/kde4/lib/libphonon.so fi } } fi split_info_qt4-qt3support() { DESCRIPTION="The Qt3 support module for the Qt toolkit." DEPEND=">= x11-libs/qt4-core-${PVER} >= x11-libs/qt4-gui-${PVER} >= x11-libs/qt4-sql-${PVER}" if [[ ${QT4_PHONON} = yes ]] then DEPEND+=" == x11-libs/qt4-phonon-${PVER}" fi } split_info_qt4-webkit() { DESCRIPTION="The Webkit module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-core-${PVER} >= x11-libs/qt4-dbus-${PVER} >= x11-libs/qt4-gui-${PVER}" if [[ ${QT4_PHONON} = yes ]] then DEPEND+=" == x11-libs/qt4-phonon-${PVER}" fi } split_info_qt4-test() { DESCRIPTION="The testing framework module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-core-${PVER}" } split_info_qt4-multimedia() { DESCRIPTION="The Multimedia module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-core-${PVER} >= x11-libs/qt4-gui-${PVER}" } split_info_qt4-assistant() { DESCRIPTION="The assistant help module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-gui-${PVER} >= x11-libs/qt4-sql-${PVER} >= x11-libs/qt4-webkit-${PVER}" } split_info_qt4-declarative() { DESCRIPTION="The Declarative module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-core-${PVER} >= x11-libs/qt4-gui-${PVER} >= x11-libs/qt4-multimedia-${PVER} >= x11-libs/qt4-opengl-${PVER} >= x11-libs/qt4-script-${PVER} >= x11-libs/qt4-sql-${PVER} >= x11-libs/qt4-svg-${PVER} >= x11-libs/qt4-webkit-${PVER} >= x11-libs/qt4-xmlpatterns-${PVER}" } src_prepare() { munpack ${SRCFILE} || die cd ${SRCDIR} # no hardcoded font-aliases # see: https://cvs.fedoraproject.org/viewvc/rpms/qt4/F-8/qt-x11-opensource-src-4.3.4-no-hardcoded-font-aliases.patch?view=markup mpatch qt-4.5.1-no-hardcoded_fonts.patch || die if [[ ${QT4_PHONON} = yes ]] then # install service files needed by kde mpatch qt-4.5.3-phonon-2.patch || die # fix variable kdelocation from the patch sed -i "s:@@KDEDIR@@:${KDEDIR}:g" ${SRCDIR}/src/plugins/phonon/gstreamer/gstreamer.pro || die fi # kdeqt patches from http://gitorious.org/+kde-developers/qt/kde-qt mpatch qt-${PVER}-kde-qt-${KDE_QT_SNAPSHOT_ID}.patch || die # set our cflags and fix up our header and lib locations cd ${SRCDIR}/mkspecs/${PLATFORM} sed -i -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CFLAGS}:" \ -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CXXFLAGS}:" \ -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=${LDFLAGS}:" \ -e 's:$(QTDIR)/include:&/qt:' \ -e "s:\$(QTDIR)/lib:\$(QTDIR)/$(mlibdir):" \ qmake.conf \ || die # fix libdir to lib64 on 64bit arches sed -i "s:/lib$:/$(mlibdir):" qmake.conf || die # disable rpath sed -i "s:QMAKE_RPATH.*=.*:QMAKE_RPATH=:" qmake.conf || die # get rid of /usr/X11R6 sed -i "s:X11R6/::" qmake.conf || die # same goes for the g++ definitions # they where moved to an extra file with qt4 cd ${SRCDIR}/mkspecs/common sed -i -e "s:QMAKE_CFLAGS_RELEASE.*=.*:QMAKE_CFLAGS_RELEASE=${CPPFLAGS} ${CFLAGS} ${ASFLAGS}:" \ -e "s:QMAKE_CXXFLAGS_RELEASE.*=.*:QMAKE_CXXFLAGS_RELEASE=${CPPFLAGS} ${CXXFLAGS} ${ASFLAGS}:" \ -e "s:QMAKE_LFLAGS_RELEASE.*=.*:QMAKE_LFLAGS_RELEASE=${LDFLAGS}:" \ -e 's:$(QTDIR)/include:&/qt:' \ -e "s:\$(QTDIR)/lib:\$(QTDIR)/$(mlibdir):" \ g++.conf \ || die # fix libdir to lib64 on 64bit arches sed -i "s:/lib$:/$(mlibdir):" g++.conf || die # disable rpath sed -i "s:QMAKE_RPATH.*=.*:QMAKE_RPATH=:" g++.conf || die # get rid of /usr/X11R6 sed -i "s:X11R6/::" linux.conf || die } src_compile() { cd ${SRCDIR} # add missing lib64 search path on 64bit arches local myconf [[ $(mlibdir) != lib ]] && myconf="-L/usr/$(mlibdir)" # enable this only for binutils >=2.18 [[ $(ld -v | sed 's/.*\ \([0-9].[0-9].*\)/\1/') > 2.17 ]] && myconf+=" -reduce-relocations" # disable openvg atm myconf+=" -no-openvg" if [[ ${QT4_PHONON} = yes ]] then myconf+=" -phonon" myconf+=" -phonon-backend" else myconf+=" -no-phonon" myconf+=" -no-phonon-backend" fi ./configure \ -prefix ${QT_PREFIX} \ -sysconfdir ${QT_SYSCONFDIR} \ -datadir ${QT_PREFIX}/share/qt \ -docdir ${QT_PREFIX}/share/doc/qt-${PVER} \ -headerdir ${QT_PREFIX}/include/qt \ -plugindir ${QT_PREFIX}/$(mlibdir)/qt/plugins \ -libdir ${QT_PREFIX}/$(mlibdir) \ -datadir ${QT_PREFIX}/share/qt \ -translationdir ${QT_PREFIX}/share/qt/translations \ -confirm-license \ -opensource \ -platform ${PLATFORM} \ -xplatform ${PLATFORM} \ -verbose \ -silent \ -fast \ -release \ -no-separate-debug-info \ -optimized-qmake \ -system-libjpeg \ -system-libmng \ -system-libpng \ -system-libtiff \ -system-zlib \ -system-nas-sound \ -system-sqlite \ -nomake examples \ -nomake demos \ -nomake docs \ -no-rpath \ -qt3support \ -stl \ -lpthread \ -largefile \ -sm \ -xrender \ -opengl \ -no-egl \ -qt-gif \ -cups \ -dbus-linked \ -openssl \ -webkit \ -svg \ -xmlpatterns \ -declarative \ -plugin-sql-sqlite \ -plugin-sql-mysql \ -plugin-sql-odbc \ -I/usr/include/mysql \ -L/usr/$(mlibdir)/mysql \ ${myconf} \ || die mmake all || die } src_install_qt4-core() { cd ${SRCDIR} local i for i in src/tools/moc \ src/tools/rcc \ src/tools/uic \ src/corelib \ src/xml \ src/network \ src/plugins/codecs \ tools/linguist/lrelease \ tools/linguist/lupdate \ tools/linguist/lconvert do mmake -C ${i} INSTALL_ROOT=${BINDIR} install || die done # install missing qmake mmake INSTALL_ROOT=${BINDIR} install_qmake || die mlink qmake ${QT_PREFIX}/bin/qmake${PVER:0:1} || die # install missing findtr minstallexec ${SRCDIR}/bin/findtr ${QT_PREFIX}/bin || die # install all spec files mmake INSTALL_ROOT=${BINDIR} install_mkspecs || die # remove unneeded specs echo "removing unneeded specs ..." install -d ${BUILDDIR}/keep mv ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs/default ${BUILDDIR}/keep || die mv ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs/common ${BUILDDIR}/keep || die mv ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs/features ${BUILDDIR}/keep || die mv ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs/qws ${BUILDDIR}/keep || die mv ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs/${PLATFORM} ${BUILDDIR}/keep || die if [[ ${ARCH} = x86_64 ]] then mv ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs/linux-g++ ${BUILDDIR}/keep || die fi mv ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs/qconfig.pri ${BUILDDIR}/keep || die rm -rf ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs/* || die mv ${BUILDDIR}/keep/* ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs || die # fix qmake cache file minstalldir ${QT_PREFIX}/share/qt || die sed "s:${SRCDIR}:${QT_PREFIX}:g" ${SRCDIR}/.qmake.cache > ${BINDIR}/${QT_PREFIX}/share/qt/.qmake.cache || die # # some needed symlinks # mlink libqt-mt.so ${QT_PREFIX}/$(mlibdir)/libqt.so || die # generate translations and install them # use freshly built libraries LD_LIBRARY_PATH=${SRCDIR}/lib ${SRCDIR}/bin/lrelease translations/*.ts || die minstalldir ${QT_PREFIX}/share/qt/translations || die minstallfile translations/\*.qm ${QT_PREFIX}/share/qt/translations || die # keep the qt4 sysdir mkeepdir ${QT_SYSCONFDIR} || die # environ vars minstalldir /etc/env.d || die echo "QMAKESPEC=\"${PLATFORM}\"" > ${BINDIR}/${QT_ENVFILE} || die echo "QTDIR=\"${QT_PREFIX}\"" >> ${BINDIR}/${QT_ENVFILE} || die if [[ ${QT_PREFIX} != /usr ]] then # overwrite the env file here, there may be one in usr # and we want this as system-wide default :> ${BINDIR}/${QT_ENVFILE} || die echo "PATH=\"${QT_PREFIX}/bin\"" >> ${BINDIR}/${QT_ENVFILE} || die echo "ROOTPATH=\"${QT_PREFIX}/bin\"" >> ${BINDIR}/${QT_ENVFILE} || die echo "LDPATH=\"${QT_PREFIX}/$(mlibdir)\"" >> ${BINDIR}/${QT_ENVFILE} || die echo "MANPATH=\"${QT_PREFIX}/share/man\"" >> ${BINDIR}/${QT_ENVFILE} || die echo "PKG_CONFIG_PATH=\"${QT_PREFIX}/$(mlibdir)/pkgconfig\"" ${BINDIR}/${QT_ENVFILE} || die fi minstalldocs GPL* changes-${PVER} LICENSE* OPENSOURCE* README* || die } src_install_qt4-gui() { cd ${SRCDIR} local i for i in src/gui \ src/scripttools \ tools/designer \ tools/linguist/linguist \ tools/qdbus/qdbusviewer \ src/plugins/imageformats/gif \ src/plugins/imageformats/ico \ src/plugins/imageformats/jpeg \ src/plugins/imageformats/mng \ src/plugins/imageformats/tiff \ src/plugins/inputmethods do mmake -C ${i} INSTALL_ROOT=${BINDIR} install || die done } src_install_qt4-svg() { cd ${SRCDIR} local i for i in src/svg \ src/plugins/imageformats/svg \ src/plugins/iconengines/svgiconengine do mmake -C ${i} INSTALL_ROOT=${BINDIR} install || die done } src_install_qt4-sql() { cd ${SRCDIR} local i for i in src/sql src/plugins/sqldrivers do mmake -C ${i} INSTALL_ROOT=${BINDIR} install || die done } src_install_qt4-script() { cd ${SRCDIR} mmake -C src/script INSTALL_ROOT=${BINDIR} install || die } src_install_qt4-xmlpatterns() { cd ${SRCDIR} local i for i in src/xmlpatterns tools/xmlpatterns do mmake -C ${i} INSTALL_ROOT=${BINDIR} install || die done } src_install_qt4-dbus() { cd ${SRCDIR} local i for i in src/dbus \ tools/qdbus/qdbus \ tools/qdbus/qdbusxml2cpp \ tools/qdbus/qdbuscpp2xml do mmake -C ${i} INSTALL_ROOT=${BINDIR} install || die done } src_install_qt4-opengl() { cd ${SRCDIR} local i for i in src/opengl src/plugins/graphicssystems/opengl do mmake -C ${i} INSTALL_ROOT=${BINDIR} install || die done } if [[ ${QT4_PHONON} = yes ]] then src_install_qt4-phonon() { cd ${SRCDIR} local i for i in src/phonon src/plugins/phonon do mmake -C ${i} INSTALL_ROOT=${BINDIR} install || die done # needed symlink; kde-4.4 includes from Phonon/* if [[ ! -e ${BINDIR}/${QT_PREFIX}/include/qt/Phonon ]] then mlink phonon ${QT_PREFIX}/include/qt/Phonon || die fi } fi src_install_qt4-qt3support() { cd ${SRCDIR} local i for i in src/qt3support \ src/tools/uic3 \ tools/designer/src/plugins/widgets \ tools/qtconfig \ tools/porting do mmake -C ${i} INSTALL_ROOT=${BINDIR} install || die done } src_install_qt4-webkit() { cd ${SRCDIR} local i for i in src/3rdparty/webkit/WebCore \ tools/designer/src/plugins/qwebview do mmake -C ${i} INSTALL_ROOT=${BINDIR} install || die done } src_install_qt4-test() { cd ${SRCDIR} mmake -C src/testlib INSTALL_ROOT=${BINDIR} install || die } src_install_qt4-multimedia() { cd ${SRCDIR} mmake -C src/multimedia INSTALL_ROOT=${BINDIR} install || die } src_install_qt4-assistant() { cd ${SRCDIR} local i for i in tools/assistant \ tools/pixeltool \ tools/qdoc3 do mmake -C ${i} INSTALL_ROOT=${BINDIR} install || die done # no-make atm! # # install missing qch docs # minstall ${QT_PREFIX}/share/doc/qt-${PVER}/qch || die # minstallfile doc/qch/\*.qch ${QT_PREFIX}/share/doc/qt-${PVER}/qch || die # # # install missing qdoc3 # minstalldir ${QT_PREFIX}/bin || die # minstallexec tools/qdoc3/qdoc3 ${QT_PREFIX}/bin || die } src_install_qt4-declarative() { cd ${SRCDIR} local i for i in src/declarative \ tools/qml do mmake -C ${i} INSTALL_ROOT=${BINDIR} install || die done }