# $Id$ PNAME="qt3" PVER="3.3.8b" PBUILD="r1" PCATEGORIE="x11-libs" 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 >= x11-libs/libX11-1.4 >= x11-libs/libXau-1 >= x11-libs/libxcb-1.7 >= x11-libs/libXcursor-1 >= x11-libs/libXdmcp-1 >= x11-libs/libXext-1.3 >= x11-libs/libXfixes-5 >= x11-libs/libXft-2.2 >= x11-libs/libXi-1.4 >= x11-libs/libXinerama-1 >= x11-libs/libXrandr-1 >= x11-libs/libXrender-0.9 >= media-libs/libjpeg-8 >= media-libs/libmng-1.0.10 >= media-libs/libpng-1.5 >= 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.5 >= media-libs/giflib-4.1" SDEPEND=">= sys-dev/bison-2" SRCFILE="qt-x11-free-${PVER}.tar.gz" SRCDIR="${BUILDDIR}/qt-x11-free-${PVER}" sminclude mtools SRC_URI=( ftp://ftp.trolltech.com/qt/source/${SRCFILE} mirror://qt/${SRCFILE} mirror://qt/qt-no-rpath-uic.patch mirror://qt/qt-no-rpath.patch mirror://qt/qt-3.3.4-qclipboard-hack.patch mirror://qt/qt-3.3.4-flickerfree_qiconview_buffered.patch mirror://qt/qt-3.3.4-flickerfree_qscrollview_fixwindowactivate.patch mirror://qt/qt-3.3.4-0047-fix-kmenu-widget.diff mirror://qt/0001-dnd_optimization.patch mirror://qt/0002-dnd_active_window_fix.patch mirror://qt/0038-dragobject-dont-prefer-unknown.patch mirror://qt/qt-3.3.8-uic-fix.patch mirror://qt/qt-3.3.8-xinerama-improvements.patch mirror://qt/qt-3.3.8-visibility.patch mirror://qt/qt-3.3.8b-gcc46.patch mirror://qt/qt-3.3.8b-libpng15.patch ) ## 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/qt3 # etc dir export QT_SYSCONFDIR=/etc/${PNAME} # envfile export QT_ENVFILE=/etc/env.d/45${PNAME} # qt3 tarballs are named qt-x11-free UP2DATE="updatecmd http://get.qt.nokia.com/qt/source/ | grep qt-x11-free | lasttarball gz" src_prepare() { munpack ${SRCFILE} || die cd ${SRCDIR} sed -i 's:read acceptance:acceptance=yes:' configure || die mpatch qt-no-rpath-uic.patch || die mpatch qt-no-rpath.patch || die # fixes includehint errors mpatch qt-3.3.8-uic-fix.patch || die # fix freeze caused by bad interaction with kde klipper (kde bug 80072) mpatch qt-3.3.4-qclipboard-hack.patch || die # performance patches (see http://robotics.dei.unipd.it/~koral/KDE/kflicker.html) mpatch qt-3.3.4-flickerfree_qiconview_buffered.patch || die mpatch qt-3.3.4-flickerfree_qscrollview_fixwindowactivate.patch || die # kde related patches mpatch 0001-dnd_optimization.patch || die mpatch 0002-dnd_active_window_fix.patch || die mpatch 0038-dragobject-dont-prefer-unknown.patch || die mpatch qt-3.3.4-0047-fix-kmenu-widget.diff || die # improved xinerama support (see http://ktown.kde.org/~seli/xinerama/) mpatch qt-3.3.8-xinerama-improvements.patch || die # gcc-4.1 visibility fixes (do not apply on = libpng-1.5 mpatch qt-3.3.8b-libpng15.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 if [[ $(mlibdir) != lib ]] then sed -i -e "s:/lib$:/$(mlibdir):" qmake.conf || die fi } src_compile() { cd ${SRCDIR} # add missing lib64 search path on 64bit arches local myconf [[ $(mlibdir) != lib ]] && myconf="-L/usr/$(mlibdir)" ./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 \ -sm \ -thread \ -stl \ -system-libjpeg \ -verbose \ -largefile \ -qt-imgfmt-{jpeg,mng,png} \ -tablet \ -system-libmng \ -system-libpng \ -lpthread \ -xft \ -platform ${PLATFORM} \ -xplatform ${PLATFORM} \ -xrender \ -fast \ -cups \ -enable-module=opengl \ -system-zlib \ -qt-gif \ -dlopen-opengl \ -release \ ${myconf} \ || die mmake src-qmake src-moc sub-src || die mmake sub-tools || die } src_install() { cd ${SRCDIR} make 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 # 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/${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 FAQ changes-${PVER} LICENSE* MANIFEST PLATFORMS 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 # 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 a qt installation in usr # and we want this one 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 }