# Copyright 1999-2008 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Header: /var/cvsroot/gentoo-x86/eclass/base.eclass,v 1.38 2009/05/17 09:25:55 loki_val Exp $ # @ECLASS: base.eclass # @MAINTAINER: # Peter Alfredsen # # Original author Dan Armak # @BLURB: The base eclass defines some default functions and variables. # @DESCRIPTION: # The base eclass defines some default functions and variables. Nearly # everything else inherits from here. # # NOTE: You must define EAPI before inheriting from base, or the wrong functions # may be exported. inherit eutils case "${EAPI:-0}" in 2) EXPORT_FUNCTIONS src_unpack src_prepare src_configure src_compile src_install ;; *) EXPORT_FUNCTIONS src_unpack src_compile src_install ;; esac DESCRIPTION="Based on the $ECLASS eclass" # @FUNCTION: base_src_unpack # @USAGE: [ unpack ] [ patch ] [ autopatch ] [ all ] # @DESCRIPTION: # The base src_unpack function, which is exported. If no argument is given, # "all" is assumed if EAPI!=2, "unpack" if EAPI=2. base_src_unpack() { debug-print-function $FUNCNAME "$@" if [ -z "$1" ] ; then case "${EAPI:-0}" in 2) base_src_util unpack ;; *) base_src_util all ;; esac else base_src_util $@ fi } # @FUNCTION: base_src_prepare # @DESCRIPTION: # The base src_prepare function, which is exported when EAPI=2. Performs # "base_src_util autopatch". base_src_prepare() { debug-print-function $FUNCNAME "$@" base_src_util autopatch } # @FUNCTION: base_src_util # @USAGE: [ unpack ] [ patch ] [ autopatch ] [ all ] # @DESCRIPTION: # The base_src_util function is the grunt function for base src_unpack # and base src_prepare. base_src_util() { local x debug-print-function $FUNCNAME "$@" cd "${WORKDIR}" while [ "$1" ]; do case $1 in unpack) debug-print-section unpack if [ ! -z "$A" ] ; then unpack ${A} fi ;; patch) debug-print-section patch cd "${S}" epatch "${FILESDIR}/${P}-gentoo.diff" ;; autopatch) debug-print-section autopatch debug-print "$FUNCNAME: autopatch: PATCHES=$PATCHES, PATCHES1=$PATCHES1" cd "${S}" if [[ ${#PATCHES[@]} -gt 1 ]] ; then for x in "${PATCHES[@]}"; do debug-print "$FUNCNAME: autopatch: patching from ${x}" epatch "${x}" done else for x in ${PATCHES} ${PATCHES1}; do debug-print "$FUNCNAME: autopatch: patching from ${x}" epatch "${x}" done fi ;; all) debug-print-section all base_src_util unpack autopatch ;; esac shift done } # @FUNCTION: base_src_configure # @DESCRIPTION: # The base src_prepare function, which is exported when EAPI=2. Performs # "base_src_work configure". base_src_configure() { debug-print-function $FUNCNAME "$@" base_src_work configure } # @FUNCTION: base_src_compile # @USAGE: [ configure ] [ make ] [ all ] # @DESCRIPTION: # The base src_compile function, which is exported. If no argument is given, # "all" is assumed if EAPI!=2, "make" if EAPI=2. base_src_compile() { debug-print-function $FUNCNAME "$@" if [ -z "$1" ] then case "${EAPI:-0}" in 2) base_src_work make ;; *) base_src_work all ;; esac else base_src_work $@ fi } # @FUNCTION: base_src_work # @USAGE: [ configure ] [ make ] [ all ] # @DESCRIPTION: # The base_src_work function is the grunt function for base src_configure # and base src_compile. base_src_work() { debug-print-function $FUNCNAME "$@" cd "${S}" while [ "$1" ]; do case $1 in configure) debug-print-section configure if [[ -x ${ECONF_SOURCE:-.}/configure ]] then econf || die "died running econf, $FUNCNAME:configure" fi ;; make) debug-print-section make if [ -f Makefile ] || [ -f GNUmakefile ] || [ -f makefile ] then emake || die "died running emake, $FUNCNAME:make" fi ;; all) debug-print-section all base_src_work configure make ;; esac shift done } # @FUNCTION: base_src_install # @USAGE: [ make ] [ all ] # @DESCRIPTION: # The base src_install function, which is exported. If no argument is given, # "all" is assumed. base_src_install() { debug-print-function $FUNCNAME "$@" [ -z "$1" ] && base_src_install all cd "${S}" while [ "$1" ]; do case $1 in make) debug-print-section make make DESTDIR="${D}" install || die "died running make install, $FUNCNAME:make" ;; all) debug-print-section all base_src_install make ;; esac shift done }