# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/kde-functions.eclass,v 1.76 2004/12/13 00:43:01 motaboy Exp $
+# $Header: /var/cvsroot/gentoo-x86/eclass/kde-functions.eclass,v 1.77 2004/12/25 14:47:44 danarmak Exp $
#
# Author Dan Armak <danarmak@gentoo.org>
#
}
+# Usage: deprange minver maxver package [...]
+# 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.
+# Note that only the kde versioning scheme is supported - ie x.y, and we only iterate through y
+# (i.e. x can contain more . separators).
+deprange() {
+
+ # Assign, parse params
+ local MINVER=$1
+ local MAXVER=$2
+ shift; shift
+
+ local BASEVER=${MINVER%.*}
+ local MINMINOR=${MINVER##*.}
+ local MAXMINOR=${MAXVER##*.}
+
+ while [ -n "$1" ]; do
+ local PACKAGE=$1
+ shift
+
+ # If min version has -rN component, separate it
+ if [ "$MINMINOR" != "${MINMINOR/-r}" ]; then
+ local MINREV=${MINMINOR##*-r}
+ MINMINOR=${MINMINOR%-r*}
+ fi
+
+ # If min or max version has a _alpha/beta/pre/rc suffix, separate it.
+ # To understand why we initialize MINALPHA etc the way we do, see the loops
+ # that use them as bounds.
+ local MINALPHA=11
+ local MINBETA=11
+ local MINPRE=11
+ local MINRC=11
+ if [ "$MINMINOR" != "${MINMINOR/_}" ]; then
+ local MINSUFFIX="${MINMINOR##*_}"
+ MINMINOR="${MINMINOR%_*}"
+ if [ "$MINSUFFIX" != "${MINSUFFIX/alpha}" ]; then
+ MINALPHA="${MINSUFFIX##alpha}"
+ MINBETA=1
+ MINPRE=1
+ MINRC=1
+ elif [ "$MINSUFFIX" != "${MINSUFFIX/beta}" ]; then
+ MINBETA="${MINSUFFIX##beta}"
+ MINPRE=1
+ MINRC=1
+ elif [ "$MINSUFFIX" != "${MINSUFFIX/pre}" ]; then
+ MINPRE="${MINSUFFIX##pre}"
+ MINRC=1
+ elif [ "$MINSUFFIX" != "${MINSUFFIX/rc}" ]; then
+ MINRC="${MINSUFFIX##rc}"
+ else
+ eerror "deprange(): version suffix $MINSUFFIX (probably _pN) not supported"
+ return
+ fi
+ fi
+
+ local MAXALPHA=0
+ local MAXBETA=0
+ local MAXPRE=0
+ local MAXRC=0
+ if [ "$MAXMINOR" != "${MAXMINOR/_}" ]; then
+ local MAXSUFFIX="${MAXMINOR##*_}"
+ MAXMINOR="${MAXMINOR%_*}"
+ if [ "$MAXSUFFIX" != "${MAXSUFFIX/alpha}" ]; then
+ MAXALPHA="${MAXSUFFIX##alpha}"
+ elif [ "$MAXSUFFIX" != "${MAXSUFFIX/beta}" ]; then
+ MAXBETA="${MAXSUFFIX##beta}"
+ MAXALPHA=10
+ elif [ "$MAXSUFFIX" != "${MAXSUFFIX/pre}" ]; then
+ MAXPRE="${MAXSUFFIX##pre}"
+ MAXALPHA=10
+ MAXBETA=10
+ elif [ "$MAXSUFFIX" != "${MAXSUFFIX/rc}" ]; then
+ MAXRC="${MAXSUFFIX##rc}"
+ MAXALPHA=10
+ MAXBETA=10
+ MAXPRE=10
+ else
+ eerror "deprange(): version suffix $MAXSUFFIX (probably _pN) not supported"
+ return
+ fi
+ fi
+
+ # If we stripped a revision number from MINMINOR earlier, increase the main loop's lower bound,
+ # as we don't want to include a ~$PACKAGE-$BASEVER.$MINMINOR option.
+ # If the lower bound has a suffix, we want to increase the suffix and not MINMINOR itself.
+ if [ -n "$MINREV" ]; then
+ if [ -z "$MINSUFFIX" ]; then
+ let MINMINOR++
+ elif [ -n "$MINRC" ]; then
+ let MINRC++
+ elif [ -n "$MINPRE" ]; then
+ let MINPRE++
+ elif [ -n "$MINBETA" ]; then
+ let MINBETA++
+ elif [ -n "$MINALPHA" ]; then
+ let MINALPHA++
+ fi
+ fi
+
+ # If we stripped a suffix from MAXMINOR, decrease it, since MAXMINOR without a suffix
+ # is outside the requested range
+ if [ -n "$MAXSUFFIX" ]; then
+ let MAXMINOR--
+ fi
+
+ # Build list of versions in descending order:
+ # from upper suffix to highest normal (suffixless) version, then just normal versions,
+ # then from lowest normal version to lowest suffix.
+ # Cf. the blocks that initialize MAXALPHA, MINBETA etc above to understand why
+ # the loops below work.
+ local NEWDEP="|| ( "
+ local i
+
+ # max version's allowed suffixes
+ for (( i=$MAXRC ; $i > 0 ; i-- )) ; do
+ NEWDEP="$NEWDEP =$PACKAGE-$BASEVER.${MAXMINOR}_rc$i"
+ done
+ for (( i=$MAXPRE ; $i > 0 ; i-- )) ; do
+ NEWDEP="$NEWDEP =$PACKAGE-$BASEVER.${MAXMINOR}_pre$i"
+ done
+ for (( i=$MAXBETA ; $i > 0 ; i-- )) ; do
+ NEWDEP="$NEWDEP =$PACKAGE-$BASEVER.${MAXMINOR}_beta$i"
+ done
+ for (( i=$MAXALPHA ; $i > 0 ; i-- )) ; do
+ NEWDEP="$NEWDEP =$PACKAGE-$BASEVER.${MAXMINOR}_alpha$i"
+ done
+
+ # allowed normal versions
+ for (( i=$MAXMINOR ; $i >= $MINMINOR ; i-- )) ; do
+ NEWDEP="$NEWDEP ~$PACKAGE-$BASEVER.$i"
+ done
+
+ # min version's allowed suffixes
+ for (( i=10 ; $i >= $MINRC ; i-- )) ; do
+ NEWDEP="$NEWDEP =$PACKAGE-$BASEVER.${MINMINOR}_rc$i"
+ done
+ for (( i=10 ; $i >= $MINPRE ; i-- )) ; do
+ NEWDEP="$NEWDEP =$PACKAGE-$BASEVER.${MINMINOR}_pre$i"
+ done
+ for (( i=10 ; $i >= $MINBETA ; i-- )) ; do
+ NEWDEP="$NEWDEP =$PACKAGE-$BASEVER.${MINMINOR}_beta$i"
+ done
+ for (( i=10 ; $i >= $MINALPHA ; i-- )) ; do
+ NEWDEP="$NEWDEP =$PACKAGE-$BASEVER.${MINMINOR}_alpha$i"
+ done
+
+ # If min verson had -rN component, add all revisions from r99 to it in descending order
+ if [ -n "$MINREV" ]; then
+ let MINMINOR--
+ if [ -n "$MINSUFFIX" ]; then
+ BASEMINVER="$PACKAGE-$BASEVER.${MINMINOR}_$MINSUFFIX"
+ else
+ BASEMINVER="$PACKAGE-$BASEVER.${MINMINOR}"
+ fi
+ for (( i=99 ; $i >= $MINREV ; i-- )) ; do
+ NEWDEP="$NEWDEP =$BASEMINVER-r$i"
+ done
+ fi
+
+ NEWDEP="$NEWDEP ) "
+ echo -n $NEWDEP
+ done
+}
# ---------------------------------------------------------------
# kde/qt directory management etc. functions, was kde-dirs.ebuild
if [ -n "$NEED_KDE_DONT_ADD_KDELIBS_DEP" ]; then
# do nothing
debug-print "$FUNCNAME: NEED_KDE_DONT_ADD_KDELIBS_DEP set, complying with request"
- elif [ "${INHERITED//kde-dist}" != "$INHERITED" ]; then
- # if we're a kde-base package, we need an exact version of kdelibs
- # to compile correctly.
- # all kinds of special cases live here.
- # goes to show this code is awfully inflexible, i guess.
- # maybe i should look at relocating it...
-
- RDEPEND="${RDEPEND} ~kde-base/kdelibs-${KDEVER}"
- DEPEND="${DEPEND} ~kde-base/kdelibs-${KDEVER}"
-
+ elif [ -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.
+ # KM_DEPRANGE should contain 2nd and 3rd parameter to deprange:
+ # max and min KDE versions. E.g. KM_DEPRANGE="3.3.4 $PV".
+ if [ -n "$KM_DEPRANGE" ]; then
+ DEPEND="$DEPEND $(deprange $KM_DEPRANGE kde-base/kdelibs)"
+ RDEPEND="$RDEPEND $(deprange $KM_DEPRANGE kde-base/kdelibs)"
+ else
+ DEPEND="${DEPEND} ~kde-base/kdelibs-$PV"
+ RDEPEND="${RDEPEND} ~kde-base/kdelibs-$PV"
+ fi
else
- # everything else only needs a minimum version
+ # Things outside kde-base only need a minimum version
min-kde-ver $KDEVER
RDEPEND="${RDEPEND} >=kde-base/kdelibs-${selected_version}"
DEPEND="${DEPEND} >=kde-base/kdelibs-${selected_version}"
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/eclass/kde-meta.eclass,v 1.6 2004/11/28 12:12:21 motaboy Exp $
+# $Header: /var/cvsroot/gentoo-x86/eclass/kde-meta.eclass,v 1.7 2004/12/25 14:47:44 danarmak Exp $
#
# Author Dan Armak <danarmak@gentoo.org>
# Simone Gotti <simone.gotti@email.it>
fi
myPN="$KMNAME"
-myP="$myPN-$PV"
-myPV="$PV"
+case "$PV" in
+ 3.4.0_alpha1) myPV="${PV/3.4.0_alpha1/3.3.90}" ;;
+ 3.4.0_alpha2) myPV="${PV/3.4.0_alpha1/3.3.91}" ;;
+ *) myPV="$PV" ;;
+esac
+myP="$myPN-$myPV"
+
# is this a kde-base ebuild, vs eg koffice
case "$myPN" in kde-i18n|arts|kdeaccessibility|kdeaddons|kdeadmin|kdeartwork|kdebase|kdebindings|kdeedu|kdegames|kdegraphics|kdelibs|kdemultimedia|kdenetwork|kdepim|kdesdk|kdetoys|kdeutils|kdewebdev|kdelibs-apidocs)
debug-print "$ECLASS: KDEBASE ebuild recognized"
if [ "$KDEBASE" = "true" ]; then
unset SRC_URI
- need-kde $myPV
+ need-kde $PV
- DESCRIPTION="KDE ${myPV} - "
+ DESCRIPTION="KDE ${PV} - "
HOMEPAGE="http://www.kde.org/"
LICENSE="GPL-2"
SLOT="$KDEMAJORVER.$KDEMINORVER"
# Main tarball for normal downloading style
case "$myPV" in
+ 3.3.9?) SRC_PATH="unstable/${myPV}/src/${myPN}-${myPV}.tar.bz2" ;;
3.3.0) SRC_PATH="stable/3.3/src/${myP}.tar.bz2" ;;
3*) SRC_PATH="stable/${myPV}/src/${myP}.tar.bz2" ;;
5) SRC_URI="" # cvs ebuilds, no SRC_URI needed
3.3.1) XDELTA_BASE="stable/3.3/src/${myPN}-3.3.0.tar.bz2"
XDELTA_DELTA="stable/3.3.1/src/${myPN}-3.3.0-3.3.1.tar.xdelta"
;;
- *) die "$ECLASS: Error: unrecognized version ${myPV}, could not set SRC_URI"
+ 3.3.2) XDELTA_BASE="stable/3.3/src/${myPN}-3.3.0.tar.bz2"
+ XDELTA_DELTA="stable/3.3.1/src/${myPN}-3.3.0-3.3.1.tar.xdelta stable/3.3.2/src/${myPN}-3.3.1-3.3.2.tar.xdelta"
;;
+ *) ;;
esac
elif [ "$KMNAME" == "koffice" ]; then
SRC_URI="$SRC_URI mirror://kde/$x"
done
SRC_URI="$SRC_URI ) !kdexdeltas? ( mirror://kde/$SRC_PATH )"
+else # xdelta don't available, for example with kde 3.4 alpha/beta/rc ebuilds.
+ SRC_URI="$SRC_URI mirror://kde/$SRC_PATH"
fi
debug-print "$ECLASS: finished, SRC_URI=$SRC_URI"
# END adapted from kde-dist.eclass
-# prepackaged makefiles for broken-up ebuilds. Ebuild can define KM_MAKEFILESREV to be >=1 to
-# use a newer tarball without increasing the ebuild revision.
-MAKEFILESTARBALL="$PN-$PVR-${KM_MAKEFILESREV:-0}-makefiles.tar.bz2"
-SRC_URI="$SRC_URI usepackagedmakefiles? ( mirror://gentoo/$MAKEFILESTARBALL )"
+# Don't support prepackaged Makefiles with alpha/beta/rc version.
+case $myPV in
+ 3.3.0 | 3.3.1 | 3.3.2)
+ # prepackaged makefiles for broken-up ebuilds. Ebuild can define KM_MAKEFILESREV to be >=1 to
+ # use a newer tarball without increasing the ebuild revision.
+ MAKEFILESTARBALL="$PN-$PVR-${KM_MAKEFILESREV:-0}-makefiles.tar.bz2"
+ SRC_URI="$SRC_URI usepackagedmakefiles? ( mirror://gentoo/$MAKEFILESTARBALL )"
+ ;;
+
+ *) ;;
+esac
# TODO FIX: Temporary place for code common to all ebuilds derived from any one metapackage.
fi
}
+function set_common_variables() {
+ # Overridable module (subdirectory) name, with default value
+ if [ "$KMNOMODULE" != "true" ] && [ -z "$KMMODULE" ]; then
+ KMMODULE=$PN
+ fi
+
+ # Unless disabled, docs are also extracted, compiled and installed
+ DOCS=""
+ if [ "$KMNOMODULE" != "true" ] && [ "$KMNODOCS" != "true" ]; then
+ DOCS="doc/$KMMODULE"
+ fi
+}
+
# 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 $*
+ set_common_variables
+
sections="$@"
[ -z "$sections" ] && sections="unpack makefiles"
for section in $sections; do
case $section in
unpack)
- # Overridable module (subdirectory) name, with default value
- if [ "$KMNOMODULE" != "true" ] && [ -z "$KMMODULE" ]; then
- KMMODULE=$PN
- fi
-
- # Unless disabled, docs are also extracted, compiled and installed
- DOCS=""
- if [ "$KMNOMODULE" != "true" ] && [ "$KMNODOCS" != "true" ]; then
- DOCS="doc/$KMMODULE"
- fi
+
# Create final list of stuff to extract
extractlist=""
KMTARPARAMS="$KMTARPARAMS -j"
fi
cd $WORKDIR
+
echo ">>> Extracting from tarball..."
# Note that KMTARPARAMS is also used by an ebuild
tar -xpf $TARFILE $KMTARPARAMS $extractlist
libname=""
for x in $KMCOPYLIB; do
if [ "$libname" == "" ]; then
- libname=$x
+ libname=$x
else
- dirname=$x
- cd $S
- mkdir -p ${dirname}
- cd ${dirname}
- ln -s ${PREFIX}/lib/${libname}* .
- libname=""
+ dirname=$x
+ cd $S
+ mkdir -p ${dirname}
+ cd ${dirname}
+ if [ ! "$(find ${PREFIX}/lib/ -name "${libname}*")" == "" ]; then
+ echo "Symlinking library ${libname} under ${PREFIX}/lib/ in source dir"
+ ln -s ${PREFIX}/lib/${libname}* .
+ else
+ die "Can't find library ${libname} under ${PREFIX}/lib/"
+ fi
+ libname=""
fi
done
# apply any patches
kde_src_unpack autopatch
+ # kdebase: Remove the installation of the "startkde" script.
+ if [ "$KMNAME" == "kdebase" ]; then
+ sed -i -e s:"bin_SCRIPTS = startkde"::g ${S}/Makefile.am.in
+ fi
+
# for ebuilds with extended src_unpack
cd $S
function kde-meta_src_compile() {
debug-print-function $FUNCNAME $*
+
+ set_common_variables
# kdebase: all configure.in's talk about java. Need to investigate which ones
# actually need it.
function kde-meta_src_install() {
debug-print-function $FUNCNAME $*
+ set_common_variables
+
if [ "$1" == "" ]; then
kde-meta_src_install make dodoc
fi