diff options
author | Wulf Krueger <philantrop@gentoo.org> | 2008-02-20 20:59:43 +0000 |
---|---|---|
committer | Wulf Krueger <philantrop@gentoo.org> | 2008-02-20 20:59:43 +0000 |
commit | 27d67b71a994f9887d55e798f590e585a303ea5f (patch) | |
tree | 64fc6f6a2b4a6388080668b27452dedc571c75f0 /eclass | |
parent | Adding a new 2.0.6_pre8 to replace the other pre-release versions in testing. (diff) | |
download | historical-27d67b71a994f9887d55e798f590e585a303ea5f.tar.gz historical-27d67b71a994f9887d55e798f590e585a303ea5f.tar.bz2 historical-27d67b71a994f9887d55e798f590e585a303ea5f.zip |
EAPI-1 enhancements for KDE 3.5.9. Thanks, Ingmar, for preparing these.
Diffstat (limited to 'eclass')
-rw-r--r-- | eclass/kde-dist.eclass | 37 | ||||
-rw-r--r-- | eclass/kde-functions.eclass | 218 | ||||
-rw-r--r-- | eclass/kde-meta.eclass | 230 | ||||
-rw-r--r-- | eclass/kde.eclass | 121 |
4 files changed, 362 insertions, 244 deletions
diff --git a/eclass/kde-dist.eclass b/eclass/kde-dist.eclass index 33591363c338..4aa2f374ab62 100644 --- a/eclass/kde-dist.eclass +++ b/eclass/kde-dist.eclass @@ -1,9 +1,14 @@ -# Copyright 1999-2004 Gentoo Foundation +# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/kde-dist.eclass,v 1.74 2006/01/01 01:14:59 swegener Exp $ -# -# Author Dan Armak <danarmak@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/eclass/kde-dist.eclass,v 1.75 2008/02/20 20:59:43 philantrop Exp $ + +# @ECLASS: kde-dist.eclass +# @MAINTAINER: +# kde@gentoo.org # +# original author Dan Armak <danarmak@gentoo.org> +# @BLURB: This is the kde-dist eclass for >=2.2.1 kde base packages +# @DESCRIPTION: # This is the kde-dist eclass for >=2.2.1 kde base packages. Don't use for kdelibs though :-) # Don't use it for e.g. kdevelop, koffice because of their separate versioning schemes. @@ -11,7 +16,7 @@ inherit kde # Upstream released 3.5.0_rc1 with tarballs labelled as just 3.5.0, so we have our own copies # on mirror://gentoo -if [ "$PV" == "3.5.0_rc1" ]; then +if [[ "$PV" == "3.5.0_rc1" ]]; then SRC_URI="$SRC_URI mirror://gentoo/$P.tar.bz2" else @@ -33,17 +38,17 @@ else debug-print "${ECLASS}: cvs detected" ;; *) debug-print "${ECLASS}: Error: unrecognized version $PV, could not set SRC_URI" ;; esac - [ -n "${SRC_PATH}" ] && SRC_URI="${SRC_URI} mirror://kde/${SRC_PATH}" + [[ -n "${SRC_PATH}" ]] && SRC_URI="${SRC_URI} mirror://kde/${SRC_PATH}" fi debug-print "${ECLASS}: finished, SRC_URI=${SRC_URI}" need-kde ${PV} # 3.5 prereleases -[ "${PV}" == "3.5_alpha1" ] && S=${WORKDIR}/${PN}-3.4.90 -[ "${PV}" == "3.5_beta1" ] && S=${WORKDIR}/${PN}-3.4.91 -[ "${PV}" == "3.5.0_beta2" ] && S=${WORKDIR}/${PN}-3.4.92 -[ "${PV}" == "3.5.0_rc1" ] && S=${WORKDIR}/${PN}-3.5.0 +[[ "${PV}" == "3.5_alpha1" ]] && S=${WORKDIR}/${PN}-3.4.90 +[[ "${PV}" == "3.5_beta1" ]] && S=${WORKDIR}/${PN}-3.4.91 +[[ "${PV}" == "3.5.0_beta2" ]] && S=${WORKDIR}/${PN}-3.4.92 +[[ "${PV}" == "3.5.0_rc1" ]] && S=${WORKDIR}/${PN}-3.5.0 DESCRIPTION="KDE ${PV} - " HOMEPAGE="http://www.kde.org/" @@ -52,6 +57,14 @@ SLOT="${KDEMAJORVER}.${KDEMINORVER}" # add blockers on split packages derived from this one for x in $(get-child-packages ${CATEGORY}/${PN}); do - DEPEND="${DEPEND} !=${x}-${SLOT}*" - RDEPEND="${RDEPEND} !=${x}-${SLOT}*" + case ${EAPI:-0} in + # Add EAPIs without SLOT dependencies. + 0) DEPEND="${DEPEND} !=${x}-${KDEMAJORVER}.${KDEMINORVER}*" + RDEPEND="${RDEPEND} !=${x}-${KDEMAJORVER}.${KDEMINORVER}*" + ;; + # EAPIs with SLOT dependencies. + *) DEPEND="${DEPEND} !${x}:${SLOT}" + RDEPEND="${RDEPEND} !${x}:${SLOT}" + ;; + esac done diff --git a/eclass/kde-functions.eclass b/eclass/kde-functions.eclass index 502dedb05524..f3ee85e48ebb 100644 --- a/eclass/kde-functions.eclass +++ b/eclass/kde-functions.eclass @@ -1,9 +1,14 @@ -# Copyright 1999-2004 Gentoo Foundation +# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/kde-functions.eclass,v 1.165 2008/02/19 00:31:12 ingmar Exp $ -# -# Author Dan Armak <danarmak@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/eclass/kde-functions.eclass,v 1.166 2008/02/20 20:59:43 philantrop Exp $ + +# @ECLASS: kde-functions.eclass +# @MAINTAINER: +# kde@gentoo.org +# Original author Dan Armak <danarmak@gentoo.org> # +# @BLURB: This contains everything except things that modify ebuild variables and +# @DESCRIPTION: # This contains everything except things that modify ebuild variables # and functions (e.g. $P, src_compile() etc.) @@ -317,6 +322,9 @@ app-office/koffice app-office/kugar app-office/koffice app-office/kword ' +# @FUNCTION: get-parent-package +# @USAGE: < name of split-ebuild > +# @DESCRIPTION: # accepts 1 parameter, the name of a split ebuild; echoes the name of its mother package get-parent-package() { local parent child @@ -331,6 +339,9 @@ EOF die "Package $1 not found in KDE_DERIVATION_MAP, please report bug" } +# @FUNCTION: get-child-packages +# @USAGE: < name of monolithic package > +# @DESCRIPTION: # accepts 1 parameter, the name of a monolithic package; echoes the names of all ebuilds derived from it get-child-packages() { local parent child @@ -341,6 +352,9 @@ $KDE_DERIVATION_MAP EOF } +# @FUNCTION: is-parent-package +# @USAGE: < name > +# @RETURN: 0 if <name> is a parent package, otherwise 1 is-parent-package() { local parent child while read parent child; do @@ -351,9 +365,12 @@ EOF return 1 } -# Usage: deprange minver maxver package [...] +# @FUNCTION: deprange +# @USAGE: < minver > < maxver > < package > [...] +# @DESCRIPTION: # For minver, a -rN part is supported. For both minver and maxver, _alpha/beta/pre/rc suffixes # are supported, but not _p suffixes or teminating letters (eg 3.3.1a). +# # This function echoes a string of the form (for package="kde-base/kdelibs") # || ( =kde-base/kdelibs-3.3.1-r1 ~kde-base/kdelibs-3.3.2 ~kde-base/kdelibs-3.3.3 ) # This dep means versions of package from maxver through minver will be acceptable. @@ -375,30 +392,30 @@ deprange-list() { # Workaround for 3.5.0_beta1 ebuilds being mistakenly versioned as 3.5_beta1 # Ugly kludge, but will disappear once 3.5 prerelease ebuilds are removed from portage - if [ "$MINVER" == "3.5_beta1" ]; then + if [[ "$MINVER" == "3.5_beta1" ]]; then MINVER="3.5.0_beta1" FINALOPTIONVER="3.5_beta1" fi - if [ "$MAXVER" == "3.5_beta1" ]; then + if [[ "$MAXVER" == "3.5_beta1" ]]; then MAXVER="3.5.0_beta1" fi # Get base version - the major X.Y components local BASEVER=${MINVER%.*} - if [ "${MAXVER%.*}" != "$BASEVER" ]; then + if [[ "${MAXVER%.*}" != "$BASEVER" ]]; then die "deprange(): unsupported parameters $MINVER $MAXVER - BASEVER must be identical" fi # Get version suffixes local MINSUFFIX MAXSUFFIX - if [ "$MINVER" != "${MINVER/_}" ]; then + if [[ "$MINVER" != "${MINVER/_}" ]]; then MINSUFFIX=${MINVER##*_} SUFFIXLESSMINVER=${MINVER%_*} else SUFFIXLESSMINVER=$MINVER fi - if [ "$MAXVER" != "${MAXVER/_}" ]; then + if [[ "$MAXVER" != "${MAXVER/_}" ]]; then MAXSUFFIX=${MAXVER##*_} SUFFIXLESSMAXVER=${MAXVER%_*} else @@ -406,7 +423,7 @@ deprange-list() { fi # Separate out the optional lower bound revision number - if [ "$MINVER" != "${MINVER/-}" ]; then + if [[ "$MINVER" != "${MINVER/-}" ]]; then local MINREV=${MINVER##*-} fi @@ -415,51 +432,50 @@ deprange-list() { local MAXMINOR=${SUFFIXLESSMAXVER##*.} # Iterate over packages - while [ -n "$1" ]; do + while [[ -n "$1" ]]; do local PACKAGE=$1 shift local NEWDEP="" # If the two versions are identical, our job is simple - if [ "$MINVER" == "$MAXVER" ]; then + if [[ "$MINVER" == "$MAXVER" ]]; then NEWDEP="~$PACKAGE-$MINVER" # If the range bounds differ only by their suffixes - elif [ "$MINMINOR" == "$MAXMINOR" ]; then + elif [[ "$MINMINOR" == "$MAXMINOR" ]]; then NEWDEP="$(deprange-iterate-suffixes "~$PACKAGE-$BASEVER.$MINMINOR" $MINSUFFIX $MAXSUFFIX)" # Revision constraint on lower bound - if [ -n "$MINREV" ]; then + if [[ -n "$MINREV" ]]; then NEWDEP="$NEWDEP $(deprange-iterate-numbers "=$PACKAGE-$BASEVER.${MINMINOR}_$MINSUFFIX-r" $MINREV 50)" fi # If the minor version numbers are different too else - # Max version's allowed suffixes - if [ -n "$MAXSUFFIX" ]; then + if [[ -n "$MAXSUFFIX" ]]; then NEWDEP="$(deprange-iterate-suffixes "~$PACKAGE-$BASEVER.$MAXMINOR" alpha1 $MAXSUFFIX)" fi STARTMINOR="${MINMINOR}" # regular versions in between - if [ -n "$MINREV" -a -z "$MINSUFFIX" ]; then + if [[ -n "$MINREV" ]] && [[ -z "$MINSUFFIX" ]]; then let STARTMINOR++ fi NEWDEP="$NEWDEP $(deprange-iterate-numbers "~${PACKAGE}-${BASEVER}." $STARTMINOR $MAXMINOR)" # Min version's allowed suffixes - if [ -n "$MINSUFFIX" ]; then + if [[ -n "$MINSUFFIX" ]]; then NEWDEP="$NEWDEP $(deprange-iterate-suffixes "~$PACKAGE-$BASEVER.$MINMINOR" $MINSUFFIX rc10)" fi - if [ -n "$MINREV" ]; then + if [[ -n "$MINREV" ]]; then local BASE - if [ -n "$MINSUFFIX" ]; then + if [[ -n "$MINSUFFIX" ]]; then BASE="=$PACKAGE-$BASEVER.${MINMINOR}_${MINSUFFIX%-r*}-r" else BASE="=$PACKAGE-$BASEVER.${MINMINOR%-r*}-r" @@ -470,7 +486,7 @@ deprange-list() { fi # second part of kludge - if [ -n "$FINALOPTIONVER" ]; then + if [[ -n "$FINALOPTIONVER" ]]; then NEWDEP="$NEWDEP ~$PACKAGE-$FINALOPTIONVER" fi @@ -497,32 +513,32 @@ deprange-iterate-suffixes() { local NAME=$1 MINSUFFIX=$2 MAXSUFFIX=$3 # Separate out the optional lower bound revision number - if [ "$MINSUFFIX" != "${MINSUFFIX/-}" ]; then + if [[ "$MINSUFFIX" != "${MINSUFFIX/-}" ]]; then local MINREV=${MINSUFFIX##*-} fi MINSUFFIX=${MINSUFFIX%-*} # Separate out the version suffixes local MINalpha MINbeta MINpre MINrc - if [ "$MINSUFFIX" != "${MINSUFFIX/alpha}" ]; then + if [[ "$MINSUFFIX" != "${MINSUFFIX/alpha}" ]]; then MINalpha="${MINSUFFIX##alpha}" - elif [ "$MINSUFFIX" != "${MINSUFFIX/beta}" ]; then + elif [[ "$MINSUFFIX" != "${MINSUFFIX/beta}" ]]; then MINbeta="${MINSUFFIX##beta}" - elif [ "$MINSUFFIX" != "${MINSUFFIX/pre}" ]; then + elif [[ "$MINSUFFIX" != "${MINSUFFIX/pre}" ]]; then MINpre="${MINSUFFIX##pre}" - elif [ "$MINSUFFIX" != "${MINSUFFIX/rc}" ]; then + elif [[ "$MINSUFFIX" != "${MINSUFFIX/rc}" ]]; then MINrc="${MINSUFFIX##rc}" else die "deprange(): version suffix $MINSUFFIX (probably _pN) not supported" fi local MAXalpha MAXbeta MAXpre MAXrc - if [ "$MAXSUFFIX" != "${MAXSUFFIX/alpha}" ]; then + if [[ "$MAXSUFFIX" != "${MAXSUFFIX/alpha}" ]]; then MAXalpha="${MAXSUFFIX##alpha}" - elif [ "$MAXSUFFIX" != "${MAXSUFFIX/beta}" ]; then + elif [[ "$MAXSUFFIX" != "${MAXSUFFIX/beta}" ]]; then MAXbeta="${MAXSUFFIX##beta}" - elif [ "$MAXSUFFIX" != "${MAXSUFFIX/pre}" ]; then + elif [[ "$MAXSUFFIX" != "${MAXSUFFIX/pre}" ]]; then MAXpre="${MAXSUFFIX##pre}" - elif [ "$MAXSUFFIX" != "${MAXSUFFIX/rc}" ]; then + elif [[ "$MAXSUFFIX" != "${MAXSUFFIX/rc}" ]]; then MAXrc="${MAXSUFFIX##rc}" else die "deprange(): version suffix $MAXSUFFIX (probably _pN) not supported" @@ -536,29 +552,29 @@ deprange-iterate-suffixes() { # If -n $started, we've encountered the upper bound in a previous iteration # and so we use the maximum allowed upper bound for this prefix - if [ -n "$started" ]; then + if [[ -n "$started" ]]; then upper=10 else # Test for the upper bound in the current iteration var=MAX$suffix - if [ -n "${!var}" ]; then + if [[ -n "${!var}" ]]; then upper=${!var} started=yes fi fi # If the upper bound has been found - if [ -n "$upper" ]; then + if [[ -n "$upper" ]]; then # Test for the lower bound in the current iteration (of the loop over prefixes) var=MIN$suffix - if [ -n "${!var}" ]; then + if [[ -n "${!var}" ]]; then lower=${!var} # If the lower bound has a revision number, don't touch that yet - if [ -n "$MINREV" ]; then + if [[ -n "$MINREV" ]]; then let lower++ fi @@ -572,7 +588,7 @@ deprange-iterate-suffixes() { $(deprange-iterate-numbers ${NAME}_${suffix} $lower $upper)" # If we've encountered the lower bound on this iteration, don't consider additional prefixes - if [ -n "${!var}" ]; then + if [[ -n "${!var}" ]]; then break fi fi @@ -580,15 +596,19 @@ deprange-iterate-suffixes() { echo -n $NEWDEP } +# @FUNCTION: deprange-dual +# @USAGE: < minver > < maxver > < package > +# @DESCRIPTION: # Wrapper around deprange() used for deps between split ebuilds. # It adds the parent monolithic ebuild of the dep as an alternative dep. +# See deprange above for more deatils. deprange-dual() { local MIN=$1 MAX=$2 NEWDEP="" shift; shift for PACKAGE in $@; do PARENT=$(get-parent-package $PACKAGE) NEWDEP="$NEWDEP || ( $(deprange-list $MIN $MAX $PACKAGE)" - if [ "$PARENT" != "$(get-parent-package $CATEGORY/$PN)" ]; then + if [[ "$PARENT" != "$(get-parent-package $CATEGORY/$PN)" ]]; then NEWDEP="$NEWDEP $(deprange-list $MIN $MAX $PARENT)" fi NEWDEP="$NEWDEP )" @@ -600,20 +620,25 @@ deprange-dual() { # kde/qt directory management etc. functions, was kde-dirs.ebuild # --------------------------------------------------------------- +# @FUNCTION: need-kde +# @USAGE: < version > +# @DESCRIPTION: +# Sets the correct DEPEND and RDEPEND for the needed kde < version >. Also takes +# care of the correct Qt-version and correct RDEPEND handling. need-kde() { + debug-print-function $FUNCNAME "$@" - debug-print-function $FUNCNAME $* KDEVER="$1" # determine install locations set-kdedir ${KDEVER} - if [ "${RDEPEND-unset}" != "unset" ] ; then + if [[ -n "${RDEPEND}" ]]; then x_DEPEND="${RDEPEND}" else x_DEPEND="${DEPEND}" fi - if [ -n "${KDEBASE}" ]; then + if [[ -n "${KDEBASE}" ]]; then # If we're a kde-base package, we need at least our own version of kdelibs. # Also, split kde-base ebuilds are not updated with every KDE release, and so # can require support of different versions of kdelibs. @@ -621,7 +646,7 @@ need-kde() { # max and min KDE versions. E.g. KM_DEPRANGE="$PV $MAXKDEVER". # Note: we only set RDEPEND if it is already set, otherwise # we break packages relying on portage copying RDEPEND from DEPEND. - if [ -n "${KM_DEPRANGE}" ]; then + if [[ -n "${KM_DEPRANGE}" ]]; then DEPEND="${DEPEND} $(deprange ${KM_DEPRANGE} kde-base/kdelibs)" RDEPEND="${x_DEPEND} $(deprange ${KM_DEPRANGE} kde-base/kdelibs)" else @@ -639,16 +664,20 @@ need-kde() { qtver-from-kdever ${KDEVER} need-qt ${selected_version} - if [ -n "${KDEBASE}" ]; then + if [[ -n "${KDEBASE}" ]]; then SLOT="$KDEMAJORVER.$KDEMINORVER" else SLOT="0" fi } +# @FUNCTION: set-kdedir +# @USAGE: < version > +# @DESCRIPTION: +# Sets the right directories for the kde <version> wrt what kind of package will +# be installed, e. g. third-party-apps, kde-base-packages, ... set-kdedir() { - - debug-print-function $FUNCNAME $* + debug-print-function $FUNCNAME "$@" # set install location: @@ -674,23 +703,23 @@ set-kdedir() { IFSBACKUP="$IFS" IFS=".-_" for x in $1; do - if [ -z "$KDEMAJORVER" ]; then KDEMAJORVER=$x - else if [ -z "$KDEMINORVER" ]; then KDEMINORVER=$x - else if [ -z "$KDEREVISION" ]; then KDEREVISION=$x + if [[ -z "$KDEMAJORVER" ]]; then KDEMAJORVER=$x + else if [[ -z "$KDEMINORVER" ]]; then KDEMINORVER=$x + else if [[ -z "$KDEREVISION" ]]; then KDEREVISION=$x fi; fi; fi done - [ -z "$KDEMINORVER" ] && KDEMINORVER="0" - [ -z "$KDEREVISION" ] && KDEREVISION="0" + [[ -z "$KDEMINORVER" ]] && KDEMINORVER="0" + [[ -z "$KDEREVISION" ]] && KDEREVISION="0" IFS="$IFSBACKUP" debug-print "$FUNCNAME: version breakup: KDEMAJORVER=$KDEMAJORVER KDEMINORVER=$KDEMINORVER KDEREVISION=$KDEREVISION" # install prefix - if [ -n "$KDEPREFIX" ]; then + if [[ -n "$KDEPREFIX" ]]; then export PREFIX="$KDEPREFIX" - elif [ "$KDEMAJORVER" == "2" ]; then + elif [[ "$KDEMAJORVER" == "2" ]]; then export PREFIX="/usr/kde/2" else - if [ -z "$KDEBASE" ]; then + if [[ -z "$KDEBASE" ]]; then export PREFIX="/usr" else case $KDEMAJORVER.$KDEMINORVER in @@ -707,15 +736,16 @@ set-kdedir() { fi # kdelibs location - if [ -n "$KDELIBSDIR" ]; then + if [[ -n "$KDELIBSDIR" ]]; then export KDEDIR="$KDELIBSDIR" - elif [ "$KDEMAJORVER" == "2" ]; then + elif [[ "$KDEMAJORVER" == "2" ]]; then export KDEDIR="/usr/kde/2" else - if [ -z "$KDEBASE" ]; then + if [[ -z "$KDEBASE" ]]; then # find the latest kdelibs installed - for x in /usr/kde/{cvs,3.5,3.4,3.3,3.2,3.1,3.0,3} $PREFIX $KDE3LIBSDIR $KDELIBSDIR $KDE3DIR $KDEDIR /usr/kde/*; do - if [ -f "${x}/include/kwin.h" ]; then + for x in /usr/kde/{cvs,3.5,3.4,3.3,3.2,3.1,3.0,3} "${PREFIX}" \ + "${KDE3LIBSDIR}" "${KDELIBSDIR}" "${KDE3DIR}" "${KDEDIR}" /usr/kde/*; do + if [[ -f "${x}/include/kwin.h" ]]; then debug-print found export KDEDIR="$x" break @@ -737,17 +767,20 @@ set-kdedir() { fi debug-print "$FUNCNAME: Will use the kdelibs installed in $KDEDIR, and install into $PREFIX." - } +# @FUNCTION: need-qt +# @USAGE: < version > +# @DESCRIPTION: +# Sets the DEPEND and RDEPEND for Qt <version>. need-qt() { + debug-print-function $FUNCNAME "${@}" - debug-print-function $FUNCNAME $* QTVER="$1" QT=qt - if [ "${RDEPEND-unset}" != "unset" ] ; then + if [[ "${RDEPEND-unset}" != "unset" ]]; then x_DEPEND="${RDEPEND}" else x_DEPEND="${DEPEND}" @@ -759,23 +792,34 @@ need-qt() { RDEPEND="${x_DEPEND} =x11-libs/${QT}-2.3*" ;; 3*) - DEPEND="${DEPEND} $(qt_min_version ${QTVER})" - RDEPEND="${x_DEPEND} $(qt_min_version ${QTVER})" + case ${EAPI:-0} in + # Add EAPIs without SLOT dependencies. + 0) DEPEND="${DEPEND} $(qt_min_version ${QTVER})" + RDEPEND="${x_DEPEND} $(qt_min_version ${QTVER})" + ;; + *) DEPEND="${DEPEND} >=x11-libs/qt-${QTVER}:3" + RDEPEND="${RDEPEND} >=x11-libs/qt-${QTVER}:3" + ;; + esac ;; *) echo "!!! error: $FUNCNAME() called with invalid parameter: \"$QTVER\", please report bug" && exit 1;; esac } +# @FUNCTION: set-qtdir +# @DESCRIPTION: +# This function is not needed anymore. set-qtdir() { - DONOTHING=1 - # Functionality not needed anymore + : } +# @FUNCTION: qtver-from-kdever +# @USAGE: < kde-version > +# @DESCRIPTION: # returns minimal qt version needed for specified kde version qtver-from-kdever() { - - debug-print-function $FUNCNAME $* + debug-print-function $FUNCNAME "$@" local ver @@ -796,8 +840,7 @@ qtver-from-kdever() { } min-kde-ver() { - - debug-print-function $FUNCNAME $* + debug-print-function $FUNCNAME "$@" case $1 in 2*) selected_version="2.2.2";; @@ -814,22 +857,25 @@ min-kde-ver() { } +# @FUNCTION: kde_sandbox_patch +# @USAGE: < dir > [ dir ] [ dir ] [...] +# @DESCRIPTION: # generic makefile sed for sandbox compatibility. for some reason when the kde makefiles (of many packages # and versions) try to chown root and chmod 4755 some binaries (after installing, target install-exec-local), # they do it to the files in $(bindir), not $(DESTDIR)/$(bindir). Most of these have been fixed in latest cvs # but a few remain here and there. +# # Pass a list of dirs to sed, Makefile.{am,in} in these dirs will be sed'ed. # This should be harmless if the makefile doesn't need fixing. kde_sandbox_patch() { + debug-print-function $FUNCNAME "$@" - debug-print-function $FUNCNAME $* - - while [ -n "$1" ]; do + while [[ -n "$1" ]]; do # can't use dosed, because it only works for things in ${D}, not ${S} cd $1 for x in Makefile.am Makefile.in Makefile do - if [ -f "$x" ]; then + if [[ -f "$x" ]]; then echo Running sed on $x cp $x ${x}.orig sed -e 's: $(bindir): $(DESTDIR)/$(bindir):g' -e 's: $(kde_datadir): $(DESTDIR)/$(kde_datadir):g' -e 's: $(TIMID_DIR): $(DESTDIR)/$(TIMID_DIR):g' ${x}.orig > ${x} @@ -841,24 +887,23 @@ kde_sandbox_patch() { } +# @FUNCTION: kde_remove_flag +# @USAGE: < dir > < flag > +# @DESCRIPTION: # remove an optimization flag from a specific subdirectory's makefiles. # currently kdebase and koffice use it to compile certain subdirs without # -fomit-frame-pointer which breaks some things. -# Parameters: -# $1: subdirectory -# $2: flag to remove kde_remove_flag() { + debug-print-function $FUNCNAME "$@" - debug-print-function $FUNCNAME $* - - cd ${S}/${1} || die - [ -n "$2" ] || die + cd "${S}"/${1} || die "cd to '${S}/${1}' failed." + [[ -n "$2" ]] || die "missing argument to kde_remove_flag" cp Makefile Makefile.orig sed -e "/CFLAGS/ s/${2}//g /CXXFLAGS/ s/${2}//g" Makefile.orig > Makefile - cd $OLDPWD + cd "${OLDPWD}" } @@ -878,7 +923,7 @@ buildsycoca() { # before running kbuildsycoca. This makes sure they don't show up in the # 3.5 K-menu unless the user manually adds them. XDG_DATA_DIRS="/usr/share:${KDEDIR}/share:/usr/local/share" - ${KDEDIR}/bin/kbuildsycoca --global --noincremental &> /dev/null + "${KDEDIR}"/bin/kbuildsycoca --global --noincremental &> /dev/null eend $? fi } @@ -901,8 +946,8 @@ Hidden=true" echo "${uninstall_file}" | diff -qs ${entry} - &> /dev/null if [[ $? != 0 ]]; then if [[ ! -f ${D}${PREFIX}/share/applications/kde/$(basename ${entry}) ]]; then - dodir ${PREFIX}/share/applications/kde - mv ${entry} ${D}${PREFIX}/share/applications/kde + dodir "${PREFIX}"/share/applications/kde + mv ${entry} "${D}${PREFIX}"/share/applications/kde else ewarn "QA: $(basename ${entry}) already exists in ${PREFIX}/share/applications/kde." fi @@ -911,11 +956,12 @@ Hidden=true" fi fi - validate_desktop_entries ${PREFIX}/share/applications + validate_desktop_entries "${PREFIX}"/share/applications } # is this a kde-base ebuid? -if [ "${CATEGORY}" == "kde-base" ]; then +if [[ "${CATEGORY}" == "kde-base" ]]; then debug-print "${ECLASS}: KDEBASE ebuild recognized" export KDEBASE="true" fi + diff --git a/eclass/kde-meta.eclass b/eclass/kde-meta.eclass index 274d71d9adaa..a8be90b7d6a6 100644 --- a/eclass/kde-meta.eclass +++ b/eclass/kde-meta.eclass @@ -1,12 +1,19 @@ -# Copyright 1999-2004 Gentoo Foundation +# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/kde-meta.eclass,v 1.83 2008/01/15 21:47:59 drac Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/kde-meta.eclass,v 1.84 2008/02/20 20:59:43 philantrop Exp $ + +# @ECLASS: kde-meta.eclass +# @MAINTAINER: +# kde@gentoo.org # -# Author Dan Armak <danarmak@gentoo.org> +# Original authors: +# Dan Armak <danarmak@gentoo.org> # Simone Gotti <motaboy@gentoo.org> -# +# @BLURB: This is the kde-meta eclass which supports broken-up kde-base packages. +# @DESCRIPTION: # This is the kde-meta eclass which supports broken-up kde-base packages. + inherit kde multilib # only broken-up ebuilds can use this eclass @@ -52,31 +59,11 @@ if [[ "$KDEBASE" = "true" ]]; then *) die "$ECLASS: Error: unrecognized version $PV, could not set SRC_URI" ;; esac - # Base tarball and xdeltas for patch downloading style - # Note that we use XDELTA_BASE, XDELTA_DELTA again in src_unpack() - # For future versions, add all applicable xdeltas (from x.y.0) in correct order to XDELTA_DELTA - # For versions that don't have deltas, it's more efficient to leave XDELTA_BASE - # unset, making src_unpack extract directly from the tarball in distfiles - # Does anyone really want to make this code generic based on $TARBALLVER above? - case "$PV" in - 3.5.0_rc1) XDELTA_BASE="mirror://kde/unstable/3.4.91/src/$KMNAME-3.4.91.tar.bz2" - XDELTA_DELTA="mirror://kde/unstable/3.4.92/src/$KMNAME-3.4.91-3.4.92.tar.xdelta mirror://gentoo/$KMNAME-3.4.92-3.5.0_rc1.tar.xdelta" - ;; - 3.5.0) XDELTA_BASE="mirror://kde/stable/3.5/src/$KMNAME-3.5.0.tar.bz2" - XDELTA_DELTA="" - ;; - *) ;; - esac - elif [[ "$KMNAME" == "koffice" ]]; then SRC_PATH="mirror://kde/stable/koffice-$PV/src/koffice-$PV.tar.bz2" - XDELTA_BASE="" - XDELTA_DELTA="" case $PV in 1.3.5) SRC_PATH="mirror://kde/stable/koffice-$PV/src/koffice-$PV.tar.bz2" - XDELTA_BASE="mirror://kde/stable/koffice-1.3.4/src/koffice-1.3.4.tar.bz2" - XDELTA_DELTA="mirror://kde/stable/koffice-1.3.5/src/koffice-1.3.4-1.3.5.tar.xdelta" ;; 1.6_beta1) SRC_PATH="mirror://kde/unstable/koffice-${PV/_/-}/koffice-${TARBALLVER}.tar.bz2" @@ -90,52 +77,60 @@ elif [[ "$KMNAME" == "koffice" ]]; then esac fi -# Common xdelta code -if [[ -n "$XDELTA_BASE" ]]; then # depends on $PV only, so is safe to modify SRC_URI inside it - IUSE="${IUSE} kdexdeltas" - - # Necessary dep for xdeltas. Hope like hell it doesn't worm its way into RDEPEND - # through the sneaky eclass dep mangling portage does. - DEPEND="$DEPEND kdexdeltas? ( =dev-util/xdelta-1* )" - - SRC_URI="$SRC_URI kdexdeltas? ( $XDELTA_BASE " - for x in $XDELTA_DELTA; do - SRC_URI="$SRC_URI $x" - done - SRC_URI="$SRC_URI ) !kdexdeltas? ( $SRC_PATH )" -else # xdelta don't available, for example with kde 3.4 alpha/beta/rc ebuilds. - SRC_URI="$SRC_URI $SRC_PATH" -fi +SRC_URI="$SRC_URI $SRC_PATH" debug-print "$ECLASS: finished, SRC_URI=$SRC_URI" -# END adapted from kde-dist.eclass - # Add a blocking dep on the package we're derived from if [[ "${KMNAME}" != "koffice" ]]; then DEPEND="${DEPEND} !=$(get-parent-package ${CATEGORY}/${PN})-${SLOT}*" RDEPEND="${RDEPEND} !=$(get-parent-package ${CATEGORY}/${PN})-${SLOT}*" else - DEPEND="${DEPEND} !$(get-parent-package ${CATEGORY}/${PN})" - RDEPEND="${RDEPEND} !$(get-parent-package ${CATEGORY}/${PN})" + case ${EAPI:-0} in + # EAPIs without SLOT dependencies. + 0) DEPEND="${DEPEND} !=$(get-parent-package ${CATEGORY}/${PN})-${KDEMAJORVER}.${KDEMINORVER}*" + RDEPEND="${RDEPEND} !=$(get-parent-package ${CATEGORY}/${PN})-${KDEMAJORVER}.${KDEMINORVER}*" + ;; + # EAPIs with SLOT dependencies. + *) DEPEND="${DEPEND} !$(get-parent-package ${CATEGORY}/${PN}):${SLOT}" + RDEPEND="${RDEPEND} !$(get-parent-package ${CATEGORY}/${PN}):${SLOT}" + ;; + esac fi -# Set the following variables in the ebuild. Only KMNAME must be set, the rest are optional. -# A directory or file can be a path with any number of components (eg foo/bar/baz.h). +# @ECLASS-VARIABLE: KMNAME +# @DESCRIPTION: +# Name of the metapackage (eg kdebase, kdepim). Must be set before inheriting +# this eclass, since it affects $SRC_URI. This variable MUST be set. + +# @ECLASS-VARIABLE: KMNOMODULE +# @DESCRIPTION: +# Unless set to "true", then KMMODULE will be not defined and so also the docs. +# Useful when we want to installs subdirs of a subproject, like plugins, and we +# have to mark the topsubdir ad KMEXTRACTONLY. + +# @ECLASS-VARIABLE: KMMODULE +# @DESCRIPTION: +# Defaults to $PN. Specify one subdirectory of KMNAME. Is treated exactly like items in KMEXTRA. +# Fex., the ebuild name of kdebase/l10n is kdebase-l10n, because just 'l10n' would be too confusing. # Do not include the same item in more than one of KMMODULE, KMMEXTRA, KMCOMPILEONLY, KMEXTRACTONLY, KMCOPYLIB. + +# @ECLASS-VARIABLE: KMNODOCS +# @DESCRIPTION: +# Unless set to "true", 'doc/$KMMODULE' is added to KMEXTRA. Set for packages that don't have docs. + +# @ECLASS-VARIABLE: KMEXTRA +# @DESCRIPTION: +# Specify files/dirs to extract, compile and install. $KMMODULE is added to +# KMEXTRA automatically. So is doc/$KMMODULE (unless $KMNODOCS==true). Makefiles +# are created automagically to compile/install the correct files. Observe these +# rules: # -# KMNAME: name of the metapackage (eg kdebase, kdepim). Must be set before inheriting this eclass -# (unlike the other parameters here), since it affects $SRC_URI. -# KMNOMODULE: unless set to "true", then KMMODULE will be not defined and so also the docs. Useful when we want to installs subdirs of a subproject, like plugins, and we have to mark the topsubdir ad KMEXTRACTONLY. -# KMMODULE: Defaults to $PN. Specify one subdirectory of KMNAME. Is treated exactly like items in KMEXTRA. -# Fex., the ebuild name of kdebase/l10n is kdebase-l10n, because just 'l10n' would be too confusing. -# KMNODOCS: unless set to "true", 'doc/$KMMODULE' is added to KMEXTRA. Set for packages that don't have docs. -# KMEXTRA, KMCOMPILEONLY, KMEXTRACTONLY: specify files/dirs to extract, compile and install. $KMMODULE -# is added to $KMEXTRA automatically. So is doc/$KMMODULE (unless $KMNODOCS==true). -# Makefiles are created automagically to compile/install the correct files. Observe these rules: -# - Don't specify the same file in more than one of the three variables. +# - Don't specify the same file in more than one of three variables (KMEXTRA, +# KMCOMPILEONLY, and KMEXTRACTONLY) # - When using KMEXTRA, remember to add the doc/foo dir for the extra dirs if one exists. # - KMEXTRACTONLY take effect over an entire directory tree, you can override it defining +# # KMEXTRA, KMCOMPILEONLY for every subdir that must have a different behavior. # eg. you have this tree: # foo/bar @@ -147,44 +142,57 @@ fi # then the only directory compiled will be foo/bar/baz1 and not foo/bar/baz1/taz (also if it's a subdir of a KMEXTRA) or foo/bar/baz2 # # IMPORTANT!!! you can't define a KMCOMPILEONLY SUBDIR if its parents are defined as KMEXTRA or KMMODULE. or it will be installed anywhere. To avoid this probably are needed some chenges to the generated Makefile.in. -# -# KMCOPYLIB: Contains an even number of $IFS (i.e. whitespace) -separated words. +# Do not include the same item in more than one of KMMODULE, KMMEXTRA, KMCOMPILEONLY, KMEXTRACTONLY, KMCOPYLIB. + +# @ECLASS-VARIABLE: KMCOMPILEONLY +# @DESCRIPTION: +# Please see KMEXTRA + +# @ECLASS-VARIABLE: KMEXTRACTONLY +# @DESCRIPTION: +# Please see KMEXTRA + +# @ECLASS-VARIABLE: KMCOPYLIB +# @DESCRIPTION: +# Contains an even number of $IFS (i.e. whitespace) -separated words. # Each two consecutive words, libname and dirname, are considered. symlinks are created under $S/$dirname # pointing to $PREFIX/lib/libname*. +# Do not include the same item in more than one of KMMODULE, KMMEXTRA, KMCOMPILEONLY, KMEXTRACTONLY, KMCOPYLIB. + # ==================================================== +# @FUNCTION: create_fullpaths +# @DESCRIPTION: # create a full path vars, and remove ALL the endings "/" -function create_fullpaths() { +create_fullpaths() { for item in $KMMODULE; do - tmp=`echo $item | sed -e "s/\/*$//g"` - KMMODULEFULLPATH="$KMMODULEFULLPATH ${S}/$tmp" + KMMODULEFULLPATH="$KMMODULEFULLPATH ${S}/${item%/}" done for item in $KMEXTRA; do - tmp=`echo $item | sed -e "s/\/*$//g"` - KMEXTRAFULLPATH="$KMEXTRAFULLPATH ${S}/$tmp" + KMEXTRAFULLPATH="$KMEXTRAFULLPATH ${S}/${item%/}" done for item in $KMCOMPILEONLY; do - tmp=`echo $item | sed -e "s/\/*$//g"` - KMCOMPILEONLYFULLPATH="$KMCOMPILEONLYFULLPATH ${S}/$tmp" + KMCOMPILEONLYFULLPATH="$KMCOMPILEONLYFULLPATH ${S}/${item%/}" done for item in $KMEXTRACTONLY; do - tmp=`echo $item | sed -e "s/\/*$//g"` - KMEXTRACTONLYFULLPATH="$KMEXTRACTONLYFULLPATH ${S}/$tmp" + KMEXTRACTONLYFULLPATH="$KMEXTRACTONLYFULLPATH ${S}/${item%/}" done } +# @FUNCTION: change_makefiles +# @USAGE: < dir > < isextractonly > +# @DESCRIPTION: # Creates Makefile.am files in directories where we didn't extract the originals. -# Params: $1 = directory -# $2 = $isextractonly: true iff the parent dir was defined as KMEXTRACTONLY +# $isextractonly: true if the parent dir was defined as KMEXTRACTONLY # Recurses through $S and all subdirs. Creates Makefile.am with SUBDIRS=<list of existing subdirs> # or just empty all:, install: targets if no subdirs exist. -function change_makefiles() { - debug-print-function $FUNCNAME $* +change_makefiles() { + debug-print-function $FUNCNAME "$@" local dirlistfullpath dirlist directory isextractonly - cd $1 - debug-print "We are in `pwd`" + cd "${1}" + debug-print "We are in ${PWD}" # check if the dir is defined as KMEXTRACTONLY or if it was defined is KMEXTRACTONLY in the parent dir, this is valid only if it's not also defined as KMMODULE, KMEXTRA or KMCOMPILEONLY. They will ovverride KMEXTRACTONLY, but only in the current dir. isextractonly="false" @@ -196,7 +204,7 @@ function change_makefiles() { dirlistfullpath= for item in *; do - if [[ -d "$item" ]] && [[ "$item" != "CVS" ]] && [[ "$S/$item" != "$S/admin" ]]; then + if [[ -d "${item}" && "${item}" != "CVS" && "${S}/${item}" != "${S}/admin" ]]; then # add it to the dirlist, with the FULL path and an ending "/" dirlistfullpath="$dirlistfullpath ${1}/${item}" fi @@ -215,7 +223,7 @@ function change_makefiles() { done cd $1 - debug-print "Come back to `pwd`" + debug-print "Come back to ${PWD}" debug-print "dirlist = $dirlistfullpath" if [[ $isextractonly = "true" ]] || [[ ! -f Makefile.am ]] ; then # if this is a latest subdir @@ -237,7 +245,7 @@ function change_makefiles() { fi } -function set_common_variables() { +set_common_variables() { # Overridable module (subdirectory) name, with default value if [[ "$KMNOMODULE" != "true" ]] && [[ -z "$KMMODULE" ]]; then KMMODULE=$PN @@ -250,10 +258,13 @@ function set_common_variables() { fi } +# @FUNCTION: kde-meta_src_unpack +# @USAGE: [ unpack ] [ makefiles ] +# @DESCRIPTION: # This has function sections now. Call unpack, apply any patches not in $PATCHES, # then call makefiles. -function kde-meta_src_unpack() { - debug-print-function $FUNCNAME $* +kde-meta_src_unpack() { + debug-print-function $FUNCNAME "$@" set_common_variables @@ -278,26 +289,10 @@ function kde-meta_src_unpack() { extractlist="$extractlist $KMNAME-$TARBALLDIRVER/${item%/}" done - # xdeltas require us to uncompress to a tar file first. # $KMTARPARAMS is also available for an ebuild to use; currently used by kturtle - if [[ -n "$XDELTA_BASE" ]] && useq kdexdeltas ; then - echo ">>> Base archive + xdelta patch mode enabled." - echo ">>> Uncompressing base archive..." - cd $T - RAWTARBALL=${TARBALL//.bz2} - bunzip2 -dkc ${DISTDIR}/${XDELTA_BASE/*\//} > $RAWTARBALL - for delta in $XDELTA_DELTA; do - deltafile="${delta/*\//}" - echo ">>> Applying xdelta: $deltafile" - xdelta patch ${DISTDIR}/$deltafile $RAWTARBALL $RAWTARBALL.1 - mv $RAWTARBALL.1 $RAWTARBALL - done - TARFILE=$T/$RAWTARBALL - else - TARFILE=$DISTDIR/$TARBALL - KMTARPARAMS="$KMTARPARAMS -j" - fi - cd $WORKDIR + TARFILE=$DISTDIR/$TARBALL + KMTARPARAMS="$KMTARPARAMS -j" + cd "${WORKDIR}" echo ">>> Unpacking parts of ${TARBALL} to ${WORKDIR}" # Note that KMTARPARAMS is also used by an ebuild @@ -312,8 +307,8 @@ function kde-meta_src_unpack() { fi # Default $S is based on $P not $myP; rename the extracted dir to fit $S - mv $KMNAME-$TARBALLDIRVER $P || die - S="${WORKDIR}/${P}" + mv $KMNAME-$TARBALLDIRVER $P || die "mv $KMNAME-$TARBallDIRVER failed." + S="${WORKDIR}"/${P} # Copy over KMCOPYLIB items libname="" @@ -322,13 +317,13 @@ function kde-meta_src_unpack() { libname=$x else dirname=$x - cd $S + cd "${S}" mkdir -p ${dirname} cd ${dirname} - search_path=$(echo ${PREFIX}/$(get_libdir)/{,kde3/{,plugins/{designer,styles}}}) + search_path=$(echo "${PREFIX}"/$(get_libdir)/{,kde3/{,plugins/{designer,styles}}}) if [[ ! "$(find ${search_path} -maxdepth 1 -name "${libname}*" 2>/dev/null)" == "" ]]; then echo "Symlinking library ${libname} under ${PREFIX}/$(get_libdir)/ in source dir" - ln -s ${PREFIX}/$(get_libdir)/${libname}* . + ln -s "${PREFIX}"/$(get_libdir)/${libname}* . else die "Can't find library ${libname} under ${PREFIX}/$(get_libdir)/" fi @@ -341,29 +336,32 @@ function kde-meta_src_unpack() { # kdebase: Remove the installation of the "startkde" script. if [[ "$KMNAME" == "kdebase" ]]; then - sed -i -e s:"bin_SCRIPTS = startkde"::g ${S}/Makefile.am.in + sed -i -e s:"bin_SCRIPTS = startkde"::g "${S}"/Makefile.am.in fi # for ebuilds with extended src_unpack - cd $S + cd "${S}" ;; makefiles) # Create Makefile.am files create_fullpaths - change_makefiles $S "false" + change_makefiles "${S}" "false" # for ebuilds with extended src_unpack - cd $S + cd "${S}" ;; esac done } -function kde-meta_src_compile() { - debug-print-function $FUNCNAME $* +# @FUNCTION: kde-meta_src_compile +# @DESCRIPTION: +# Does some checks before it invokes kde_src_compile +kde-meta_src_compile() { + debug-print-function $FUNCNAME "$@" set_common_variables @@ -377,11 +375,15 @@ function kde-meta_src_compile() { myconf="$myconf --disable-setgid" fi - kde_src_compile $* + kde_src_compile "$@" } -function kde-meta_src_install() { - debug-print-function $FUNCNAME $* +# @FUNCTION: kde-meta_src_install +# @USAGE: [ make ] [ dodoc ] [ all ] +# @DESCRIPTION: +# The kde-meta src_install function +kde-meta_src_install() { + debug-print-function $FUNCNAME "$@" set_common_variables @@ -392,9 +394,9 @@ function kde-meta_src_install() { case $1 in make) for dir in $KMMODULE $KMEXTRA $DOCS; do - if [[ -d $S/$dir ]]; then - cd $S/$dir - make DESTDIR=${D} destdir=${D} install || die + if [[ -d "${S}"/$dir ]]; then + cd "${S}"/$dir + emake DESTDIR="${D}" destdir="${D}" install || die "emake install failed." fi done ;; diff --git a/eclass/kde.eclass b/eclass/kde.eclass index 59dec1ca20c6..3bfe28b537df 100644 --- a/eclass/kde.eclass +++ b/eclass/kde.eclass @@ -1,11 +1,17 @@ -# Copyright 1999-2004 Gentoo Foundation +# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/kde.eclass,v 1.203 2008/01/26 23:21:03 zlin Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/kde.eclass,v 1.204 2008/02/20 20:59:43 philantrop Exp $ + +# @ECLASS: kde.eclass +# @MAINTAINER: +# kde@gentoo.org # -# Author Dan Armak <danarmak@gentoo.org> +# original author Dan Armak <danarmak@gentoo.org> # # Revisions Caleb Tennis <caleb@gentoo.org> -# The kde eclass is inherited by all kde-* eclasses. Few ebuilds inherit straight from here. +# @BLURB: The kde eclass is inherited by all kde-* eclasses. +# @DESCRIPTION: +# This eclass is inherited by all kde-* eclasses. Few ebuilds inherit straight from here. WANT_AUTOMAKE="1.9" @@ -23,6 +29,13 @@ if [[ ${CATEGORY} == "kde-base" ]]; then IUSE="${IUSE} kdeenablefinal" fi +# @ECLASS-VARIABLE: KDE_S +# @DESCRIPTION: +# Like the 'normal' ${S} this variable takes the path to the temporary build +# directory. If unset ${S} will be used. + +# @ECLASS-VARIABLE: USE_KEG_PACKAGING +# @DESCRIPTION: # Set USE_KEG_PACKAGING=1 before inheriting if the package use extragear-like # packaging and then supports ${LANGS} and ${LANGS_DOC} variables. if [[ -n ${USE_KEG_PACKAGING} && -n "${LANGS}${LANGS_DOC}" ]]; then @@ -51,6 +64,14 @@ fi # overridden in other places like kde-dist, kde-source and some individual ebuilds SLOT="0" +# @VARIABLE: ARTS_REQUIRED +# @DESCRIPTION: +# Is aRTs-support required or not? Possible values are 'yes', 'never'. Otherwise +# leave this variable unset. This results in an arts USE flag. + +# @FUNCTION: kde_pkg_setup +# @DESCRIPTION: +# Some basic test about arts-support. It also filters some compiler flags kde_pkg_setup() { if [[ ${PN} != "arts" ]] && [[ ${PN} != "kdelibs" ]] ; then if [[ ${ARTS_REQUIRED} == 'yes' ]] || \ @@ -74,7 +95,7 @@ kde_pkg_setup() { fi fi - if [ "${PN}" = "kdelibs" ] ; then + if [[ "${PN}" = "kdelibs" ]]; then use doc && if ! built_with_use =x11-libs/qt-3* doc ; then eerror "Building kdelibs with the doc USE flag requires qt to be built with the doc USE flag." eerror "Please re-emerge qt-3 with this USE flag enabled." @@ -86,13 +107,20 @@ kde_pkg_setup() { filter-flags -fvisibility=hidden -fvisibility-inlines-hidden } +# @FUNCTION: kde_src_unpack +# @DESCRIPTION: +# This function unpacks the sources and patches it. The patches need to be named +# $PN-$PV-*{diff,patch} +# +# This function also handles the linguas if extragear-like packaging is enabled. +# (See USE_KEG_PACKAGING) kde_src_unpack() { - debug-print-function $FUNCNAME $* + debug-print-function $FUNCNAME "$@" [[ -z ${KDE_S} ]] && KDE_S="${S}" local PATCHDIR="${WORKDIR}/patches/" - if [[ -z $* ]] ; then + if [[ -z "$@" ]] ; then # Unpack first and deal with KDE patches after examing possible patch sets. # To be picked up, patches need to be named $PN-$PV-*{diff,patch} and be # placed in $PATCHDIR. Monolithic ebuilds will use the split ebuild patches. @@ -115,7 +143,7 @@ kde_src_unpack() { else # Call base_src_unpack, which has sections, to do unpacking and patching # step by step transparently as defined in the ebuild. - base_src_unpack $* + base_src_unpack "$@" fi # if extragear-like packaging is enabled, set the translations and the @@ -150,12 +178,12 @@ kde_src_unpack() { # fix the 'languageChange undeclared' bug group: touch all .ui files, so that the # makefile regenerate any .cpp and .h files depending on them. cd "${KDE_S}" - debug-print "$FUNCNAME: Searching for .ui files in $PWD" - UIFILES="`find . -name '*.ui' -print`" + 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 + if [[ -n "$UIFILES" ]]; then debug-print "$FUNCNAME: touching .ui files..." touch $UIFILES fi @@ -168,10 +196,17 @@ kde_src_unpack() { fi } +# @FUNCTION: kde_src_compile +# @USAGE: [ myconf ] [ configure ] [ make ] [ all ] +# @DESCRIPTION: +# This function compiles the sources. It takes care of "cannot write to .kde or +# .qt"-problem due to sandbox and some other sandbox issues. +# +# If no argument is given, all is assumed. kde_src_compile() { + debug-print-function $FUNCNAME "$@" - debug-print-function $FUNCNAME $* - [ -z "$1" ] && kde_src_compile all + [[ -z "$1" ]] && kde_src_compile all [[ -z ${KDE_S} ]] && KDE_S="${S}" cd "${KDE_S}" @@ -182,9 +217,9 @@ kde_src_compile() { # 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" + 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 @@ -192,10 +227,10 @@ kde_src_compile() { unset KDEROOTHOME # things that should access the real homedir - [ -d "$REALHOME/.ccache" ] && ln -sf "$REALHOME/.ccache" "$HOME/" - [ -n "$UNSERMAKE" ] && addwrite "/usr/kde/unsermake" + [[ -d "$REALHOME/.ccache" ]] && ln -sf "$REALHOME/.ccache" "$HOME/" + [[ -n "$UNSERMAKE" ]] && addwrite "/usr/kde/unsermake" - while [ "$1" ]; do + while [[ "$1" ]]; do case $1 in myconf) @@ -229,7 +264,7 @@ kde_src_compile() { # rebuild configure script, etc # This can happen with e.g. a cvs snapshot - if [ ! -f "./configure" ] || [ -n "$UNSERMAKE" ]; then + if [[ ! -f "./configure" ]] || [[ -n "$UNSERMAKE" ]]; then # This is needed to fix building with autoconf 2.60. # Many thanks to who preferred such a stupid check rather # than a working arithmetic comparison. @@ -252,13 +287,13 @@ EOF fi for x in Makefile.cvs admin/Makefile.common; do - if [ -f "$x" ] && [ -z "$makefile" ]; then makefile="$x"; fi + if [[ -f "$x" && -z "$makefile" ]]; then makefile="$x"; fi done - if [ -f "$makefile" ]; then + if [[ -f "$makefile" ]]; then debug-print "$FUNCNAME: configure: generating configure script, running make -f $makefile" emake -j1 -f $makefile fi - [ -f "./configure" ] || die "no configure script found, generation unsuccessful" + [[ -f "./configure" ]] || die "no configure script found, generation unsuccessful" fi export PATH="${KDEDIR}/bin:${PATH}" @@ -329,7 +364,7 @@ EOF # Seems ./configure add -O2 by default but hppa don't want that but we need -ffunction-sections if [[ "${ARCH}" = "hppa" ]] then - einfo Fixating Makefiles + einfo "Fixing Makefiles" find ${KDE_S} -name Makefile -print0 | xargs -0 sed -i -e \ 's:-O2:-ffunction-sections:g' fi @@ -350,9 +385,17 @@ EOF } +# @FUNCTION: kde_src_install +# @USAGE: [ make ] [ dodoc ] [ all ] +# @DESCRIPTION: +# This installs the software, including the right handling of the +# "/usr/share/doc/kde"-dir, but it only installs AUTHORS, ChangeLog*, README*, +# NEWS, and TODO (if available) as docs. +# +# If no argument is given, all is assumed kde_src_install() { + debug-print-function $FUNCNAME "$@" - debug-print-function $FUNCNAME $* [[ -z "$1" ]] && kde_src_install all [[ -z ${KDE_S} ]] && KDE_S="${S}" @@ -363,12 +406,12 @@ kde_src_install() { case $1 in make) debug-print-section make - emake install DESTDIR=${D} destdir=${D} || die "died running make install, $FUNCNAME:make" + emake 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 + [[ -s "$doc" ]] && dodoc $doc done ;; all) @@ -388,7 +431,11 @@ kde_src_install() { fi } -# slot rebuild function, thanks to Carsten Lohrke in bug 98425. +# @FUNCTION: slot_rebuild +# @RETURN: False, if no rebuild is required +# +# @MAINTAINER: +# thanks to Carsten Lohrke in bug 98425. slot_rebuild() { local VDB_PATH="$(portageq vdb_path)" local REBUILD_LIST="" @@ -415,7 +462,7 @@ slot_rebuild() { eerror "Installation of ${j/${VDB_PATH}\//} is broken." BROKEN_PKGS="${BROKEN_PKGS} ${j/${VDB_PATH}\//}" else - if [[ $(cat ${m} | grep -co "${KDEDIR}") = 0 ]] ; then + if [[ $(cat ${m} | grep -co "${KDEDIR}") = 0 ]] ; then REBUILD_LIST="${REBUILD_LIST} =${j/${VDB_PATH}\//}" fi fi @@ -430,7 +477,7 @@ slot_rebuild() { if [[ -n "${REBUILD_LIST}" ]] ; then local temp="" - cd ${VDB_PATH} + 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})" @@ -442,24 +489,34 @@ slot_rebuild() { fi if [[ -n "${REBUILD_LIST}" ]] ; then - einfo "Please run \"emerge --oneshot ${REBUILD_LIST}\" before continuing.\n" + einfo "Please run \"emerge --oneshot ${REBUILD_LIST}\" before continuing." else - einfo "Done :), continuing...\n" + einfo "Done :), continuing..." return 1 fi echo } +# @FUNCTION: kde_pkg_preinst +# @DESCRIPTION: +# Calls postprocess_desktop_entries kde_pkg_preinst() { postprocess_desktop_entries } +# @FUNCTION: kde_pkg_postinst +# @DESCRIPTION: +# Calls buildsycoca kde_pkg_postinst() { buildsycoca } +# @FUNCTION: kde_pkg_postrm +# @DESCRIPTION: +# Calls buildsycoca kde_pkg_postrm() { buildsycoca } EXPORT_FUNCTIONS pkg_setup src_unpack src_compile src_install pkg_postinst pkg_postrm pkg_preinst + |