# $Id$ PNAME="qt4" PVER="4.5.3" PBUILD="r4" PCATEGORIE="x11-libs" STATE="unstable" DESCRIPTION="Qt: Cross-Platform Rich Client Development Framework." HOMEPAGE="http://trolltech.com/products/qt/" SDEPEND=">= sys-dev/bison-2.4 >= x11-proto/xineramaproto-1.1 >= x11-proto/xextproto-7 >= x11-proto/inputproto-1.5 >= dev-util/pkgconfig-0.23 >= 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-7 >= media-libs/libmng-1.0.10 >= media-libs/libpng-1.2.40 >= media-libs/lcms-1.18 >= media-libs/freetype-2.3.9 >= media-libs/fontconfig-2.7 >= 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-0.9.8 >= dev-db/sqlite-3.6 >= dev-db/mysql5-5.1 >= dev-db/unixodbc-2.2.14 >= media-libs/gstreamer-0.10.25 >= media-libs/gst-plugins-base-0.10.25" PROVIDE="virtual/phonon" SRCFILE="${PNAME/4/}-x11-opensource-src-${PVER}.tar.gz" SRCDIR="${BUILDDIR}/${PNAME/4/}-x11-opensource-src-${PVER}" SPLIT_PACKAGES="${PNAME}-core ${PNAME}-gui ${PNAME}-svg ${PNAME}-sql ${PNAME}-script ${PNAME}-xmlpatterns ${PNAME}-dbus ${PNAME}-opengl ${PNAME}-phonon ${PNAME}-qt3support ${PNAME}-webkit ${PNAME}-test ${PNAME}-assistant ${PNAME}" # this is the tranistional meta package! # include kde4 to get the right KDEDIR for phonon! sminclude mtools kde4 SRC_URI=( ftp://ftp.qtsoftware.com/qt/source/${SRCFILE} mirror://${PNAME}/${SRCFILE} mirror://${PNAME}/qt-4.5.1-no-hardcoded_fonts.patch mirror://${PNAME}/qt-${PVER}-phonon-2.patch mirror://${PNAME}/qt-${PVER}-kde-qt-063bded33b417cdf92fd51366fc7fdb06dea00ba.patch ) UP2DATE="updatecmd ftp://ftp.qtsoftware.com/qt/source/ | grep qt-x11-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=/opt/${PNAME} split_info_qt4() { DESCRIPTION="Qt4: Cross-Platform Rich Client Development Framework." DEPEND="== x11-libs/qt-core-${PVER} == x11-libs/qt-gui-${PVER} == x11-libs/qt-svg-${PVER} == x11-libs/qt-sql-${PVER} == x11-libs/qt-script-${PVER} == x11-libs/qt-xmlpatterns-${PVER} == x11-libs/qt-dbus-${PVER} == x11-libs/qt-opengl-${PVER} == x11-libs/qt-phonon-${PVER} == x11-libs/qt-qt3support-${PVER} == x11-libs/qt-webkit-${PVER} == x11-libs/qt-test-${PVER} == x11-libs/qt-assistant-${PVER}" 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" } 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" 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 } } 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} >= x11-libs/qt4-phonon-${PVER}" } 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} >= x11-libs/qt4-phonon-${PVER}" } split_info_qt4-test() { DESCRIPTION="The testing framework module for the Qt4 toolkit." DEPEND=">= x11-libs/qt4-core-${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}" } 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 # install service files needed by kde mpatch qt-${PVER}-phonon-2.patch || die # fix variable kdelocation from the patch sed -i "s:@@KDEDIR@@:${KDEDIR}:g" ${SRCDIR}/src/plugins/phonon/gstreamer/gstreamer.pro || die # kdeqt patches from http://gitorious.org/+kde-developers/qt/kde-qt mpatch qt-${PVER}-kde-qt-063bded33b417cdf92fd51366fc7fdb06dea00ba.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="${myconf} -reduce-relocations" ./configure \ -prefix ${QT_PREFIX} \ -sysconfdir /etc/${PNAME} \ -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 \ -qt-gif \ -cups \ -dbus-linked \ -openssl \ -webkit \ -phonon \ -svg \ -xmlpatterns \ -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 /etc/${PNAME} || die # environ vars minstalldir /etc/env.d || die echo "QMAKESPEC=\"${PLATFORM}\"" > ${BINDIR}/etc/env.d/45${PNAME} || die echo "QTDIR=\"${QT_PREFIX}\"" >> ${BINDIR}/etc/env.d/45${PNAME} || die if [[ ${QT_PREFIX} != /usr ]] then # overwrite the env file here, there may be one in user # and we want this as system-wide default :> ${BINDIR}/etc/env.d/45${PNAME} || die echo "PATH=\"${QT_PREFIX}/bin\"" >> ${BINDIR}/etc/env.d/45${PNAME} || die echo "ROOTPATH=\"${QT_PREFIX}/bin\"" >> ${BINDIR}/etc/env.d/45${PNAME} || die echo "LDPATH=\"${QT_PREFIX}/$(mlibdir)\"" >> ${BINDIR}/etc/env.d/45${PNAME} || die echo "MANPATH=\"${QT_PREFIX}/share/man\"" >> ${BINDIR}/etc/env.d/45${PNAME} || die echo "PKG_CONFIG_PATH=\"${QT_PREFIX}/$(mlibdir)/pkgconfig\"" >> ${BINDIR}/etc/env.d/45${PNAME} || 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 } 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 } 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-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 }