# Copyright 1999-2004 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/x11-libs/qt/qt-3.3.3-r1.ebuild,v 1.1 2004/09/10 16:30:29 usata Exp $ inherit eutils SRCTYPE="free" DESCRIPTION="QT version ${PV}" HOMEPAGE="http://www.trolltech.com/" IMMQT_P="qt-x11-immodule-unified-qt3.3.3-20040910" SRC_URI="ftp://ftp.trolltech.com/qt/source/qt-x11-${SRCTYPE}-${PV}.tar.bz2 immqt? ( http://freedesktop.org/Software/ImmoduleQtDownload/${IMMQT_P}.diff.gz ) immqt-bc? ( http://freedesktop.org/Software/ImmoduleQtDownload/${IMMQT_P}.diff.gz )" LICENSE="QPL-1.0 | GPL-2" SLOT="3" KEYWORDS="~x86 ~alpha ~ppc ~amd64 ~sparc ~hppa ~mips ~ppc64" IUSE="cups debug doc firebird gif icc ipv6 mysql nas odbc opengl postgres sqlite xinerama zlib immqt immqt-bc" DEPEND="virtual/x11 virtual/xft media-libs/libpng media-libs/jpeg media-libs/libmng >=media-libs/freetype-2 gif? ( media-libs/giflib media-libs/libungif ) nas? ( >=media-libs/nas-1.5 ) odbc? ( dev-db/unixODBC ) mysql? ( dev-db/mysql ) sqlite? ( =dev-db/sqlite-2* ) firebird? ( dev-db/firebird ) opengl? ( virtual/opengl virtual/glu ) postgres? ( dev-db/postgresql ) cups? ( net-print/cups ) zlib? ( sys-libs/zlib ) icc? ( dev-lang/icc )" # old immodules may cause segfaults on some qt applications, # especially qtconfig PDEPEND="!<=app-i18n/scim-qtimm-0.7 !<=app-i18n/uim-qt-0.1.7" S=${WORKDIR}/qt-x11-${SRCTYPE}-${PV} export QTDIR=${S} export PLATFORM=linux-g++ mkspecs_set() { local file=$3 [ ${file} ] || \ file=${D}/${QTPREFIX}/share/qt${SLOT}/mkspecs/${PLATFORM}/qmake.conf sed -i "s:\\(QMAKE_$1[[:space:]]*=\\).*:\\1 $2:" ${file} } pkg_setup() { if use immqt ; then ewarn ewarn "You are going to compile binary imcompatible immodule for Qt. This means" ewarn "you have to recompile everything depending on Qt after you install it." ewarn "Be aware." ewarn fi } src_unpack() { unpack ${A} export QTDIR=${S} cd ${S} cp configure configure.orig sed -e 's:read acceptance:acceptance=yes:' configure.orig > configure epatch ${FILESDIR}/qt-no-rpath-uic.patch if use immqt || use immqt-bc ; then epatch ../${IMMQT_P}.diff sh make-symlinks.sh || die "make symlinks failed" fi # prevent installation of html docs use doc || echo "INSTALLS -= htmldocs" >> src/qt_install.pri # fix CFLAGS mkspecs_set CFLAGS_RELEASE "${CXXFLAGS}" mkspecs/${PLATFORM}/qmake.conf # use icc && export PLATFORM=linux-icc } src_compile() { export QTDIR=${S} export SYSCONF="${D}/etc/qt3" QTPREFIX="/usr" # Let's just allow writing to these directories during Qt emerge # as it makes Qt much happier. addwrite "/etc/qt3" addwrite "$HOME/.qt" use nas && myconf="${myconf} -system-nas-sound" use gif && myconf="${myconf} -qt-gif" use mysql && myconf="${myconf} -plugin-sql-mysql -I/usr/include/mysql -L/usr/lib/mysql" || myconf="${myconf} -no-sql-mysql" use postgres && myconf="${myconf} -plugin-sql-psql -I/usr/include/postgresql/server -I/usr/include/postgresql/pgsql -I/usr/include/postgresql/pgsql/server" || myconf="${myconf} -no-sql-psql" use firebird && myconf="${myconf} -plugin-sql-ibase" || myconf="${myconf} -no-sql-ibase" use sqlite && myconf="${myconf} -plugin-sql-sqlite" || myconf="${myconf} -no-sql-sqlite" use odbc && myconf="${myconf} -plugin-sql-odbc" || myconf="${myconf} -no-sql-odbc" use cups && myconf="${myconf} -cups" || myconf="${myconf} -no-cups" use opengl && myconf="${myconf} -enable-module=opengl" || myconf="${myconf} -disable-opengl" use debug && myconf="${myconf} -debug" || myconf="${myconf} -release -no-g++-exceptions" use xinerama && myconf="${myconf} -xinerama" || myconf="${myconf} -no-xinerama" use zlib && myconf="${myconf} -system-zlib" || myconf="${myconf} -qt-zlib" use ipv6 && myconf="${myconf} -ipv6" || myconf="${myconf} -no-ipv6" use immqt-bc && myconf="${myconf} -inputmethod" use immqt && myconf="${myconf} -inputmethod -inputmethod-ext" export YACC='byacc -d' ./configure -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 ${myconf} \ -dlopen-opengl \ -bindir "${QTPREFIX}/bin" \ -libdir "${QTPREFIX}/lib/qt${SLOT}" \ -docdir "${QTPREFIX}/share/doc/${PF}" \ -plugindir "${QTPREFIX}/lib/qt${SLOT}/plugins" \ -datadir "${QTPREFIX}/share/qt${SLOT}/" \ -translationdir "${QTPREFIX}/share/qt${SLOT}/translations" \ -headerdir "${QTPREFIX}/include/qt${SLOT}" \ -sysconfdir "/etc/qt${SLOT}" \ || die export QTDIR=${S} emake src-qmake src-moc sub-src || die LD_LIBRARY_PATH="${S}/lib:${LD_LIBRARY_PATH}" emake sub-tools || die } src_install() { export QTDIR=${S} # why is nobody using this? make INSTALL_ROOT=${D} {qmake,moc,src,tools}-install || die # stupid Qt Makefile cd ${D}/${QTPREFIX}/bin rm -f qmake cp ${S}/qmake/qmake . # fix binary names find ${D}/${QTPREFIX}/bin -type f -exec mv {} {}-${SLOT} \; # link dynamic libs to /usr/lib cd ${D}/${QTPREFIX}/lib/qt${SLOT} for x in *.so.? ; do ln -s "qt${SLOT}/${x}" "../${x}" done # fix pkgconfig mkdir ../pkgconfig mv pkgconfig/* ../pkgconfig rm -rf pkgconfig # man pages cd ${S}/doc/man/man1 for i in * ; do mv ${i} `echo ${i} | sed "s:\\.1\$:-${SLOT}.1:"` done doman * # if use doc; then # # even more man pages # cd ${S}/man/man3 # find . -type f -exec mv {} {}${SLOT} \; # doman * # fi cd ${S} dodoc FAQ INSTALL LICENSE.GPL LICENSE.QPL PLATFORMS README README-QT.TXT if use immqt || use immqt-bc ; then dodoc README.immodule fi dodir /etc/qt3 # fix mkspecs mkspecs_set INCDIR_QT ${QTPREFIX}/include/qt${SLOT} mkspecs_set LIBDIR_QT ${QTPREFIX}/lib/qt${SLOT} mkspecs_set MOC ${QTPREFIX}/bin/moc-${SLOT} mkspecs_set UIC ${QTPREFIX}/bin/uic-${SLOT} # environment insinto /etc/env.d doins ${FILESDIR}/{45qt3,50qtdir3} } src_install_old() { export QTDIR=${S} # binaries into $QTBASE dobin bin/* # libraries dolib lib/libqt-mt.so.3.3.3 lib/libqui.so.1.0.0 dolib lib/lib{editor,qassistantclient,designercore}.a lib/libqt-mt.la cd ${D}/$QTBASE/lib for x in libqui.so ; do ln -s $x.1.0.0 $x.1.0 ln -s $x.1.0 $x.1 ln -s $x.1 $x done # version symlinks - 3.3.3->3.3->3->.so ln -s libqt-mt.so.3.3.3 libqt-mt.so.3.3 ln -s libqt-mt.so.3.3 libqt-mt.so.3 ln -s libqt-mt.so.3 libqt-mt.so # libqt -> libqt-mt symlinks ln -s libqt-mt.so.3.3.3 libqt.so.3.3.3 ln -s libqt-mt.so.3.3 libqt.so.3.3 ln -s libqt-mt.so.3 libqt.so.3 ln -s libqt-mt.so libqt.so # includes cd ${S} dodir ${QTBASE}/include/private cp include/* ${D}/${QTBASE}/include/ cp include/private/* ${D}/${QTBASE}/include/private/ # misc insinto /etc/env.d doins ${FILESDIR}/{45qt3,50qtdir3} dodir ${QTBASE}/tools/designer/templates cd ${S} cp tools/designer/templates/* ${D}/${QTBASE}/tools/designer/templates dodir ${QTBASE}/translations cd ${S} cp translations/* ${D}/${QTBASE}/translations dodir ${QTBASE}/etc keepdir ${QTBASE}/etc/settings dodir ${QTBASE}/doc if use doc; then cp -r ${S}/doc ${D}/${QTBASE} cd ${S}/examples find . -name Makefile | while read MAKEFILE do cp ${MAKEFILE} ${MAKEFILE}.old sed -e 's:${S}:${QTBASE}:g' ${MAKEFILE}.old > ${MAKEFILE} rm -f ${MAKEFILE}.old done cp -r ${S}/examples ${D}/${QTBASE} cd ${S}/tutorial find . -name Makefile | while read MAKEFILE do cp ${MAKEFILE} ${MAKEFILE}.old sed -e 's:${S}:${QTBASE}:g' ${MAKEFILE}.old > ${MAKEFILE} rm -f ${MAKEFILE}.old done cp -r ${S}/tutorial ${D}/${QTBASE} fi if use immqt || use immqt-bc ; then dodoc ${S}/README.immodule fi # misc build reqs dodir ${QTBASE}/mkspecs cp -R ${S}/mkspecs/${PLATFORM} ${D}/${QTBASE}/mkspecs/ sed -e "s:${S}:${QTBASE}:g" \ ${S}/.qmake.cache > ${D}${QTBASE}/.qmake.cache # plugins cd ${S} plugins=`find plugins -name "lib*.so" -print` for x in $plugins; do insinto ${QTBASE}/`dirname $x` doins $x done # needed to fix lib64 issues on amd64, see bug #45669 use amd64 && ln -s ${QTBASE}/lib ${D}/${QTBASE}/lib64 }