# $Id$ PNAME="qt4" PVER="4.5.1" PBUILD="r2" PCATEGORIE="x11-libs" STATE="unstable" DESCRIPTION="Qt: Cross-Platform Rich Client Development Framework." HOMEPAGE="http://trolltech.com/products/qt/" DEPEND=">= 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-6b >= media-libs/libmng-1.0.10 >= media-libs/libpng-1.2.36 >= media-libs/lcms-1.18 >= media-libs/freetype-2.3.9 >= media-libs/fontconfig-2.6 >= net-print/cups-1.3 >= sys-libs/zlib-1.2 >= media-libs/giflib-4.1 >= sys-apps/dbus-1.2 >= virtual/opengl >= media-libs/nas-1.9 >= dev-libs/openssl-0.9.8 >= dev-db/sqlite-3.6" 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" SRCFILE="${PNAME/4/}-x11-opensource-src-${PVER}.tar.bz2" SRCDIR="${BUILDDIR}/${PNAME/4/}-x11-opensource-src-${PVER}" sminclude mtools SRC_URI=( ftp://ftp.trolltech.com/qt/source/${SRCFILE} mirror://${PNAME}/${SRCFILE} mirror://${PNAME}/${PNAME}-${PVER}-qt-copy_svg-rendering-regression.patch mirror://${PNAME}/${PNAME}-${PVER}-qt-copy_fix-qpixmapcache-leak.patch mirror://${PNAME}/${PNAME}-${PVER}-no-hardcoded_fonts.patch ) UP2DATE="updatecmd ftp://ftp.trolltech.com/qt/source/ | grep qt-x11-opensource-src | lasttarball" ## 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} 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 ${PNAME}-${PVER}-no-hardcoded_fonts.patch || die # fix broken kde plasma themes # see: https://bugs.kde.org/show_bug.cgi?id=192914 mpatch ${PNAME}-${PVER}-qt-copy_svg-rendering-regression.patch || die # fix Qpixmap memory leak # https://bugs.kde.org/show_bug.cgi?id=183191 mpatch ${PNAME}-${PVER}-qt-copy_fix-qpixmapcache-leak.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-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 \ -no-phonon \ ${myconf} \ || die mmake all || die } src_install() { cd ${SRCDIR} mmake INSTALL_ROOT=${BINDIR} install || die # remove broken qmake link and install binary if [ -L ${BINDIR}/${QT_PREFIX}/bin/qmake ] then echo "removing broken qmake symlink" rm -f ${BINDIR}/${QT_PREFIX}/bin/qmake || die echo "installing qmake binary" minstallexec ${SRCDIR}/qmake/qmake ${QT_PREFIX}/bin || die fi # remove broken linux-g++ link if exists if [ -L ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs/${PLATFORM}/${PLATFORM} ] then echo "removing broken ${PLATFORM} symlink" rm ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs/${PLATFORM}/${PLATFORM} || die fi # install some missing binaries # minstallexec ${SRCDIR}/bin/qtrename140 ${QT_PREFIX}/bin || die minstallexec ${SRCDIR}/bin/uic ${QT_PREFIX}/bin || die minstallexec ${SRCDIR}/bin/findtr ${QT_PREFIX}/bin || die # minstallexec ${SRCDIR}/bin/qt20fix ${QT_PREFIX}/bin || die # qmake cache file 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 # symlink qmake to qmakeMAJversion mlink qmake ${QT_PREFIX}/bin/qmake${PVER:0:1} || 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 rm -rf ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs/* || die mv ${BUILDDIR}/keep/* ${BINDIR}/${QT_PREFIX}/share/qt/mkspecs || die # docs minstalldocs GPL* changes-${PVER} LICENSE* OPENSOURCE* README* || die # # man # cp -r doc/man ${BINDIR}/${QT_PREFIX}/share || die # gzip -r9 ${BINDIR}/${QT_PREFIX}/share/man || die # # # don't want the tutorial anymore, too big # rm -rf ${BINDIR}/${QT_PREFIX}/share/doc/qt-${PVER}/html || die # # don't want the demos too # rm -rf ${BINDIR}/${QT_PREFIX}/demos || 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 }