summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'eclass/kde.eclass')
-rw-r--r--eclass/kde.eclass316
1 files changed, 264 insertions, 52 deletions
diff --git a/eclass/kde.eclass b/eclass/kde.eclass
index 38d7caaaba4a..470451239db0 100644
--- a/eclass/kde.eclass
+++ b/eclass/kde.eclass
@@ -1,68 +1,280 @@
-# Copyright 1999-2000 Gentoo Technologies, Inc.
-# Distributed under the terms of the GNU General Public License, v2 or later
+# Copyright 1999-2004 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/eclass/kde.eclass,v 1.1.1.1 2005/11/30 09:59:18 chriswhite Exp $
+#
# Author Dan Armak <danarmak@gentoo.org>
-# $Header: /var/cvsroot/gentoo-x86/eclass/kde.eclass,v 1.1 2001/09/28 19:25:33 danarmak Exp $
-# This is the kde ebuild for std. kde-dependant apps which follow configure/make/make install
-# procedures and have std. configure options.
-. /usr/portage/inherit.eclass || die
-inherit c autoconf base || die
-ECLASS=kde
+#
+# Revisions Caleb Tennis <caleb@gentoo.org>
+# The kde eclass is inherited by all kde-* eclasses. Few ebuilds inherit straight from here.
+inherit base eutils kde-functions flag-o-matic
DESCRIPTION="Based on the $ECLASS eclass"
HOMEPAGE="http://www.kde.org/"
+IUSE="debug arts xinerama kdeenablefinal"
-DEPEND="${DEPEND} kde-base/kdelibs dev-util/objprelink x11-libs/qt-x11"
-RDEPEND="${RDEPEND} kde-base/kdelibs x11-libs/qt-x11"
+DEPEND=">=sys-devel/automake-1.7.0
+ sys-devel/autoconf
+ sys-devel/make
+ dev-util/pkgconfig
+ dev-lang/perl
+ ~kde-base/kde-env-3"
+
+RDEPEND="~kde-base/kde-env-3"
+
+# overridden in other places like kde-dist, kde-source and some individual ebuilds
+SLOT="0"
+
+kde_pkg_setup() {
+ if [ "${PN}" != "arts" ] && [ "${PN}" != "kdelibs" ] ; then
+ use arts && if ! built_with_use kde-base/kdelibs arts ; then
+ eerror "You are trying to compile ${CATEGORY}/${P} with the \"arts\" USE flag enabled."
+ eerror "However, $(best_version kde-base/kdelibs) was compiled with this flag disabled."
+ eerror
+ eerror "You must either disable this use flag, or recompile"
+ eerror "$(best_version kde-base/kdelibs) with this use flag enabled."
+ die
+ fi
+ fi
+
+ # Let filter visibility flags that will *really* hurt your KDE
+ filter-flags -fvisibility=hidden -fvisibility-inlines-hidden
+}
+
+kde_src_unpack() {
+ debug-print-function $FUNCNAME $*
+
+ # call base_src_unpack, which implements most of the functionality and has sections,
+ # unlike this function. The change from base_src_unpack to kde_src_unpack is thus
+ # wholly transparent for ebuilds.
+ base_src_unpack $*
+
+ # kde-specific stuff stars here
+
+ # fix the 'languageChange undeclared' bug group: touch all .ui files, so that the
+ # makefile regenerate any .cpp and .h files depending on them.
+ cd $S
+ debug-print "$FUNCNAME: Searching for .ui files in $PWD"
+ UIFILES="`find . -name '*.ui' -print`"
+ debug-print "$FUNCNAME: .ui files found:"
+ debug-print "$UIFILES"
+ # done in two stages, because touch doens't have a silent/force mode
+ if [ -n "$UIFILES" ]; then
+ debug-print "$FUNCNAME: touching .ui files..."
+ touch $UIFILES
+ fi
+}
kde_src_compile() {
-
- while [ "$1" ]; do
-
- case $1 in
- myconf)
- use qtmt && myconf="$myconf --enable-mt"
- use mitshm && myconf="$myconf --enable-mitshm"
- use objprelink && myconf="$myconf --enable-objprelink"
- ;;
- configure)
- ./configure --host=${CHOST} --with-x \
- ${myconf} --with-xinerama || die
- ;;
- make)
- make || die
- ;;
- all)
- kde_src_compile myconf configure make
- ;;
- esac
-
- shift
- done
+
+ debug-print-function $FUNCNAME $*
+ [ -z "$1" ] && kde_src_compile all
+
+ cd ${S}
+ export kde_widgetdir="$KDEDIR/$(get_libdir)/kde3/plugins/designer"
+
+ # fix the sandbox errors "can't writ to .kde or .qt" problems.
+ # this is a fake homedir that is writeable under the sandbox, so that the build process
+ # can do anything it wants with it.
+ REALHOME="$HOME"
+ mkdir -p $T/fakehome/.kde
+ mkdir -p $T/fakehome/.qt
+ export HOME="$T/fakehome"
+ addwrite "${QTDIR}/etc/settings"
+
+ # Fix bug 96177: if KDEROOTHOME is defined, the ebuild accesses the real homedir via it, and not our exported $HOME
+ unset KDEHOME
+ unset KDEROOTHOME
+
+ # things that should access the real homedir
+ [ -d "$REALHOME/.ccache" ] && ln -sf "$REALHOME/.ccache" "$HOME/"
+ [ -n "$UNSERMAKE" ] && addwrite "/usr/kde/unsermake"
+
+ while [ "$1" ]; do
+
+ case $1 in
+ myconf)
+ debug-print-section myconf
+ myconf="$myconf --with-x --enable-mitshm $(use_with xinerama) --with-qt-dir=${QTDIR} --enable-mt --with-qt-libraries=${QTDIR}/$(get_libdir)"
+ # calculate dependencies separately from compiling, enables ccache to work on kde compiles
+ [ -z "$UNSERMAKE" ] && myconf="$myconf --disable-dependency-tracking"
+ if use debug ; then
+ myconf="$myconf --enable-debug=full --with-debug"
+ else
+ myconf="$myconf --disable-debug --without-debug"
+ fi
+ if useq kdeenablefinal && [ -n "$KDEBASE" ]; then
+ myconf="$myconf --enable-final"
+ else
+ myconf="$myconf --disable-final"
+ fi
+ [ -z "$KDEBASE" ] && myconf="$myconf $(use_with arts)"
+ [ -n "$KDEBASE" -a "$KDEMINORVER" -ge 3 ] && myconf="$myconf $(use_with arts)"
+ debug-print "$FUNCNAME: myconf: set to ${myconf}"
+ ;;
+ configure)
+ debug-print-section configure
+ debug-print "$FUNCNAME::configure: myconf=$myconf"
+
+ # rebuild configure script, etc
+ # This can happen with e.g. a cvs snapshot
+ if [ ! -f "./configure" ] || [ -n "$UNSERMAKE" ]; then
+ for x in Makefile.cvs admin/Makefile.common; do
+ if [ -f "$x" ] && [ -z "$makefile" ]; then makefile="$x"; fi
+ done
+ if [ -f "$makefile" ]; then
+ debug-print "$FUNCNAME: configure: generating configure script, running make -f $makefile"
+ make -f $makefile
+ fi
+ [ -f "./configure" ] || die "no configure script found, generation unsuccessful"
+ fi
+
+ export PATH="${KDEDIR}/bin:${PATH}"
+
+ # configure doesn't need to know about the other KDEs installed.
+ # in fact, if it does, it sometimes tries to use the wrong dcopidl, etc.
+ # due to the messed up way configure searches for things
+ export KDEDIRS="${PREFIX}:${KDEDIR}"
+
+ cd $S
+
+ # Visiblity stuff is broken. Just disable it when it's present.
+ export kde_cv_prog_cxx_fvisibility_hidden=no
+
+ # If we're in a kde-base ebuild, set the prefixed directories to
+ # override the ones set by econf.
+ if [[ ${PREFIX} != "/usr" ]]; then
+ myconf="${myconf} --prefix=${PREFIX}
+ --mandir=${PREFIX}/share/man
+ --infodir=${PREFIX}/share/info
+ --datadir=${PREFIX}/share
+ --sysconfdir=${PREFIX}/etc"
+ fi
+
+ # Use libsuffix to keep KDE happy, the --libdir parameter get
+ # still honored.
+ if [[ $(get_libdir) != "lib" ]] ; then
+ myconf="${myconf} --enable-libsuffix=$(get_libdir | sed s/lib//)"
+ fi
+
+ econf \
+ ${myconf} \
+ || die "died running ./configure, $FUNCNAME:configure"
+
+ # Seems ./configure add -O2 by default but hppa don't want that but we need -ffunction-sections
+ if [[ "${ARCH}" = "hppa" ]]
+ then
+ einfo Fixating Makefiles
+ find ${S} -name Makefile | while read a; do sed -e s/-O2/-ffunction-sections/ -i "${a}" ; done
+ fi
+ ;;
+ make)
+ export PATH="${KDEDIR}/bin:${PATH}"
+ debug-print-section make
+ emake || die "died running emake, $FUNCNAME:make"
+ ;;
+ all)
+ debug-print-section all
+ kde_src_compile myconf configure make
+ ;;
+ esac
+
+ shift
+ done
}
kde_src_install() {
-
- while [ "$1" ]; do
-
- case $1 in
- make)
- make install DESTDIR=${D} || die
- ;;
- dodoc)
- dodoc AUTHORS ChangeLog README*
- ;;
- all)
- kde_src_install make dodoc
- ;;
- esac
-
- shift
- done
-
+
+ debug-print-function $FUNCNAME $*
+ [[ -z "$1" ]] && kde_src_install all
+
+ cd ${S}
+
+ while [[ "$1" ]]; do
+
+ case $1 in
+ make)
+ debug-print-section make
+ make install DESTDIR=${D} destdir=${D} || die "died running make install, $FUNCNAME:make"
+ ;;
+ dodoc)
+ debug-print-section dodoc
+ for doc in AUTHORS ChangeLog* README* NEWS TODO; do
+ [ -s "$doc" ] && dodoc $doc
+ done
+ ;;
+ all)
+ debug-print-section all
+ kde_src_install make dodoc
+ ;;
+ esac
+
+ shift
+ done
+
}
+# slot rebuild function, thanks to Carsten Lohrke in bug 98425.
+slot_rebuild() {
+ local VDB_PATH="$(portageq vdb_path)"
+ local KDE_PREFIX="$(kde-config --prefix)"
+ local REBUILD_LIST=""
+ local BROKEN_PKGS=""
+
+ echo
+ einfo "Scan for possible needed slot related rebuilds.\n"
+ echo
+ for i in ${*} ; do
+ local temp="$(ls -1d ${VDB_PATH}/${i}*)"
+ for j in ${temp} ; do
+ if ! [[ -f ${j}/CONTENTS ]] ; then
+ eerror "The package db entry for ${j/${VDB_PATH}\//} is broken."
+ BROKEN_PKGS="${BROKEN_PKGS} ${j/${VDB_PATH}\//}"
+ continue
+ fi
-EXPORT_FUNCTIONS
+ k="$(grep -o /.*/lib.*\.la ${j}/CONTENTS)"
+ m=""
+ for l in ${k} ; do [[ -e ${l} ]] && m="${m} ${l}"; done
+ l="$(echo ${k} ${m} | fmt -w 1 | sort | uniq -u)"
+ if [[ ${l} != "" ]] || [[ ${m} == "" ]] ; then
+ eerror "Installation of ${j/${VDB_PATH}\//} is broken."
+ BROKEN_PKGS="${BROKEN_PKGS} ${j/${VDB_PATH}\//}"
+ else
+ if [[ $(cat ${m} | grep -co "${KDE_PREFIX}") = 0 ]] ; then
+ REBUILD_LIST="${REBUILD_LIST} =${j/${VDB_PATH}\//}"
+ fi
+ fi
+ done
+ done
+ echo
+ if [[ -n "${BROKEN_PKGS}" ]] ; then
+ eerror "Anomalies were found. Please do \"emerge ${BROKEN_PKGS}\"."
+ return 1
+ fi
+
+
+ if [[ -n "${REBUILD_LIST}" ]] ; then
+ local temp=""
+ cd ${VDB_PATH}
+ for i in ${REBUILD_LIST} ; do
+ i="$(echo ${i%-*} | cut -d= -f2)"
+ temp="${temp} $(find . -iname "DEPEND" -exec grep -H ${i} '{}' \; | cut -f2-3 -d/ | grep -v ${CATEGORY}/${PN})"
+ done
+ temp="$(echo ${temp} | fmt -w 1 | sort -u)"
+ for i in ${temp} ; do
+ REBUILD_LIST="${REBUILD_LIST} =${i}"
+ done
+ fi
+
+ if [[ -n "${REBUILD_LIST}" ]] ; then
+ einfo "Please run \"emerge --oneshot ${REBUILD_LIST}\" before continuing.\n"
+ else
+ einfo "Done :), continuing...\n"
+ return 1
+ fi
+ echo
+}
+EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install