ABI=ppc64
ALSA_PCM_PLUGINS='adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol'
APACHE2_MODULES='actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias'
ARCH=ppc64
AT_GNUCONF_UPDATE=no
AT_M4DIR=
CBUILD=powerpc64-unknown-linux-gnu
CDEFINE_default=__unix__
CDEFINE_ppc='!__powerpc64__'
CDEFINE_ppc64=__powerpc64__
CFLAGS='-O2 -pipe'
CFLAGS_default=
CFLAGS_ppc=-m32
CFLAGS_ppc64=-m64
CHOST=powerpc64-unknown-linux-gnu
CHOST_default=powerpc64-unknown-linux-gnu
CHOST_ppc=powerpc-unknown-linux-gnu
CHOST_ppc64=powerpc64-unknown-linux-gnu
CTARGET_default=powerpc64-unknown-linux-gnu
CVS_RSH=ssh
CXXFLAGS='-O2 -pipe'
DCCC_PATH=/usr/lib/distcc/bin
DEFAULT_ABI=ppc64
DEPEND=$'X? (\n\t\t\t\tx11-libs/libXmu\n\t\t\t\tx11-libs/libXp\n\t\t\t\tx11-libs/libXpm\n\t\t\t\tx11-libs/libICE\n\t\t\t\tx11-libs/libSM\n\t\t\t\tx11-libs/libXaw\n\t\t\t\tx11-libs/libXfont\n\t)\n\t!app-text/ptex\n\t!app-text/tetex\n\t!=media-libs/libpng-1.2.1\n\t=media-libs/freetype-2*\n\tmedia-libs/fontconfig\n\tapp-arch/unzip  =sys-devel/automake-1.10*\n\t>=sys-devel/autoconf-2.61\n\tsys-devel/libtool'
DESCRIPTION='A complete TeX distribution'
DESTTREE=/usr
DIROPTIONS=-m0755
EAPI=
ELIBC=glibc
ELIBTOOL_VERSION=2.0.2
ELT_APPLIED_PATCHES=
ELT_LTMAIN_SH=/var/tmp/portage/app-text/texlive-core-2007-r12/work/texk/xdvipdfmx/ltmain.sh
ELT_PATCH_DIR=/usr/portage/eclass/ELT-patches
EPATCH_EXCLUDE=
EPATCH_FORCE=no
EPATCH_MULTI_MSG='Applying various patches (bugfixes/updates) ...'
EPATCH_OPTS='-g0 -E --no-backup-if-mismatch'
EPATCH_SINGLE_MSG=
EPATCH_SOURCE=/var/tmp/portage/app-text/texlive-core-2007-r12/work/patch
EPATCH_SUFFIX=patch.bz2
EXEOPTIONS=-m0755
FEATURES='ccache distcc distlocks metadata-transfer parallel-fetch sandbox sfperms strict unmerge-orphans userfetch'
GCC_SPECS=
GDK_USE_XFT=1
HOMEPAGE=http://tug.org/texlive/
INHERITED='toolchain-funcs portability flag-o-matic multilib libtool texlive-common autotools eutils'
INPUT_DEVICES='keyboard mouse evdev'
INSDESTTREE=
INSOPTIONS=-m0644
IUSE=' X doc'
KERNEL=linux
KERNEL_ABI=ppc64
KEYWORDS='alpha amd64 hppa ia64 ~ppc ppc64 sparc x86 ~x86-fbsd'
KV=2.6.24-gentoo-r3
LANG=en_US.utf8
LCD_DEVICES='bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text'
LDFLAGS_default=
LDFLAGS_ppc='-m elf32ppc'
LDFLAGS_ppc64='-m elf64ppc'
LIBDIR_amd64=lib64
LIBDIR_default=lib
LIBDIR_ppc64=lib64
LIBOPTIONS=-m0644
LICENSE='GPL-2 LPPL-1.3c'
MAIL=/var/mail/root
MAKEOPTS=-j7
MODULAR_X_DEPEND=$'X? (\n\t\t\t\tx11-libs/libXmu\n\t\t\t\tx11-libs/libXp\n\t\t\t\tx11-libs/libXpm\n\t\t\t\tx11-libs/libICE\n\t\t\t\tx11-libs/libSM\n\t\t\t\tx11-libs/libXaw\n\t\t\t\tx11-libs/libXfont\n\t)'
MULTILIB_ABIS=ppc64
OPENGL_PROFILE=xorg-x11
PATCHLEVEL=6
PDEPEND=' '
PROFILE_ARCH=ppc64
PROVIDE=
PYTHONPATH=/usr/lib64/portage/pym
RDEPEND=$'X? (\n\t\t\t\tx11-libs/libXmu\n\t\t\t\tx11-libs/libXp\n\t\t\t\tx11-libs/libXpm\n\t\t\t\tx11-libs/libICE\n\t\t\t\tx11-libs/libSM\n\t\t\t\tx11-libs/libXaw\n\t\t\t\tx11-libs/libXfont\n\t)\n\t!app-text/ptex\n\t!app-text/tetex\n\t!=media-libs/libpng-1.2.1\n\t=media-libs/freetype-2*\n\tmedia-libs/fontconfig  '
RESTRICT=
S=/var/tmp/portage/app-text/texlive-core-2007-r12/work
SANDBOX_DENY=/etc/ld.so.preload
SANDBOX_PREDICT=:/dev/console:/dev/random:/proc/self/maps:/usr/lib64/portage/pym:/usr/lib/python2.0/:/usr/lib/python2.1/:/usr/lib/python2.2/:/usr/lib/python2.3/:/usr/lib/python2.4/:/usr/lib/python2.5/:/usr/lib/python3.0/:/var/cache/edb/dep:/var/db/aliases.db:/var/db/ethers.db:/var/db/group.db:/var/db/hosts.db:/var/db/netgroup.db:/var/db/netmasks.db:/var/db/networks.db:/var/db/passwd.db:/var/db/protocols.db:/var/db/rpc.db:/var/db/services.db:/var/tmp/portage/app-text/texlive-core-2007-r12/homedir/.:
SANDBOX_READ=:/:/dev/shm:/dev/stdin:/var/tmp:/var/tmp/ccache:
SANDBOX_WRITE=:/dev/console:/dev/fd:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/shm/ngpt:/dev/stderr:/dev/stdout:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp:/tmp/:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/lib/cf:/usr/lib/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/log/scrollkeeper.log:/var/tmp:/var/tmp/:/var/tmp/ccache:/var/tmp/portage/app-text/texlive-core-2007-r12/homedir/.bash_history:/var/tmp/portage/app-text/texlive-core-2007-r12/homedir/.gconfd/lock:
SLOT=0
SRC_URI=$'mirror://gentoo/texlive-core-2007.tar.bz2 mirror://gentoo/texlive-module-bin-bibtex-2007.zip mirror://gentoo/texlive-module-bin-dvipsk-2007.zip mirror://gentoo/texlive-module-bin-etex-2007.zip mirror://gentoo/texlive-module-bin-getnonfreefonts-2007.zip mirror://gentoo/texlive-module-bin-gsftopk-2007.zip mirror://gentoo/texlive-module-bin-kpathsea-2007.zip mirror://gentoo/texlive-module-bin-makeindex-2007.zip mirror://gentoo/texlive-module-bin-metafont-2007.zip mirror://gentoo/texlive-module-bin-mfware-2007.zip mirror://gentoo/texlive-module-bin-pdftex-2007.zip mirror://gentoo/texlive-module-bin-tetex-2007.zip mirror://gentoo/texlive-module-bin-tex-2007.zip mirror://gentoo/texlive-module-bin-texconfig-2007.zip mirror://gentoo/texlive-module-lib-regex-2007.zip mirror://gentoo/texlive-module-lib-zlib-2007.zip mirror://gentoo/texlive-module-bin-afm2pl-2007.zip mirror://gentoo/texlive-module-bin-fontware-2007.zip mirror://gentoo/texlive-module-bin-ps2pkm-2007.zip mirror://gentoo/texlive-module-fontinst-2007.zip mirror://gentoo/texlive-module-mft-2007.zip mirror://gentoo/texlive-module-bin-bibtex8-2007.zip mirror://gentoo/texlive-module-bin-chktex-2007.zip mirror://gentoo/texlive-module-bin-ctie-2007.zip mirror://gentoo/texlive-module-bin-cweb-2007.zip mirror://gentoo/texlive-module-bin-dtl-2007.zip mirror://gentoo/texlive-module-bin-dvi2tty-2007.zip mirror://gentoo/texlive-module-bin-dvicopy-2007.zip mirror://gentoo/texlive-module-bin-dvidvi-2007.zip mirror://gentoo/texlive-module-bin-dviljk-2007.zip mirror://gentoo/texlive-module-bin-lacheck-2007.zip mirror://gentoo/texlive-module-bin-patgen-2007.zip mirror://gentoo/texlive-module-bin-pdftools-2007.zip mirror://gentoo/texlive-module-bin-seetexk-2007.zip mirror://gentoo/texlive-module-bin-texdoc-2007.zip mirror://gentoo/texlive-module-bin-texware-2007.zip mirror://gentoo/texlive-module-bin-thumbpdf-2007.zip mirror://gentoo/texlive-module-bin-tie-2007.zip mirror://gentoo/texlive-module-bin-tpic2pdftex-2007.zip mirror://gentoo/texlive-module-bin-vpe-2007.zip mirror://gentoo/texlive-module-bin-web-2007.zip mirror://gentoo/texlive-module-bin-xpdf-2007.zip mirror://gentoo/texlive-module-cweb-2007.zip mirror://gentoo/texlive-module-mkind-english-2007.zip mirror://gentoo/texlive-module-bin-xetex-2007.zip mirror://gentoo/texlive-module-bin-aleph-2007.zip mirror://gentoo/texlive-module-bin-omega-2007.zip mirror://gentoo/texlive-core-2007-updated-config.ps.bz2 mirror://gentoo/texlive-core-patches-6.tar.bz2\n\tmirror://gentoo/texlive-core-2007-texmf.d-1.tar.bz2'
SSH_CLIENT='192.168.35.68 46493 22'
SSH_CONNECTION='192.168.35.68 46493 192.168.35.64 22'
SSH_TTY=/dev/pts/0
STAGE1_USE='nptl nptlonly unicode'
SYMLINK_LIB=yes
TEXLIVE_BASICBIN_CONTENTS='bin-bibtex bin-dvipsk bin-etex bin-getnonfreefonts bin-gsftopk bin-kpathsea bin-makeindex bin-metafont bin-mfware bin-pdftex bin-tetex bin-tex bin-texconfig lib-regex lib-zlib'
TEXLIVE_BINEXTRA_CONTENTS='bin-bibtex8 bin-chktex bin-ctie bin-cweb bin-dtl bin-dvi2tty bin-dvicopy bin-dvidvi bin-dviljk bin-lacheck bin-patgen bin-pdftools bin-seetexk bin-texdoc bin-texware bin-thumbpdf bin-tie bin-tpic2pdftex bin-vpe bin-web bin-xpdf cweb mkind-english'
TEXLIVE_CORE_EXTRA_BUILT_BINARIES='bin-xetex bin-aleph bin-omega'
TEXLIVE_CORE_INCLUDED_TEXMF='bin-bibtex bin-dvipsk bin-etex bin-getnonfreefonts bin-gsftopk bin-kpathsea bin-makeindex bin-metafont bin-mfware bin-pdftex bin-tetex bin-tex bin-texconfig lib-regex lib-zlib bin-afm2pl bin-fontware bin-ps2pkm fontinst mft bin-bibtex8 bin-chktex bin-ctie bin-cweb bin-dtl bin-dvi2tty bin-dvicopy bin-dvidvi bin-dviljk bin-lacheck bin-patgen bin-pdftools bin-seetexk bin-texdoc bin-texware bin-thumbpdf bin-tie bin-tpic2pdftex bin-vpe bin-web bin-xpdf cweb mkind-english bin-xetex bin-aleph bin-omega'
TEXLIVE_FONTBIN_CONTENTS='bin-afm2pl bin-fontware bin-ps2pkm fontinst mft'
TEXMFD_VERSION=1
TEXMF_DIST_PATH=/usr/share/texmf-dist
TEXMF_PATH=/usr/share/texmf
TEXMF_VAR_PATH=/var/lib/texmf
USE='elibc_glibc kernel_linux ppc64 userland_GNU'
USERLAND=GNU
VIDEO_CARDS='fbdev mach64 mga nv r128 radeon'
WANT_AUTOCONF=2.5
WANT_AUTOMAKE=1.10
_=_RC_GET_KV_CACHE
_E_DOCDESTTREE_=
_E_EXEDESTTREE_=
___ECLASS_RECUR_MULTILIB=yes
___ECLASS_RECUR_TOOLCHAIN_FUNCS=yes
_pipestatus='0 0'
conf=texlive-core-2007-r12
i=bin-omega
ELT_find_ltmain_sh () 
{ 
    local x=;
    local dirlist=;
    for x in $(find "${S}" -name 'ltmain.sh');
    do
        dirlist="${dirlist} ${x%/*}";
    done;
    echo "${dirlist}"
}
ELT_libtool_version () 
{ 
    local ltmain_sh=$1;
    local version=;
    version=$(eval $(grep -e '^[[:space:]]*VERSION=' "${ltmain_sh}"); 	                 echo "${VERSION}");
    [[ -z ${version} ]] && version="0";
    echo "${version}"
}
ELT_try_and_apply_patch () 
{ 
    local ret=0;
    local file=$1;
    local patch=$2;
    if patch -p0 --dry-run "${file}" "${patch}" >&"${T}/elibtool.log"; then
        einfo "  Applying $(basename "$(dirname "${patch}")")-${patch##*/}.patch ...";
        patch -p0 -g0 --no-backup-if-mismatch "${file}" "${patch}" >&"${T}/elibtool.log";
        ret=$?;
        export ELT_APPLIED_PATCHES="${ELT_APPLIED_PATCHES} ${patch##*/}";
    else
        ret=1;
    fi;
    return "${ret}"
}
ELT_walk_patches () 
{ 
    local x=;
    local y=;
    local ret=1;
    local file=$1;
    local patch_set=$2;
    local patch_dir=;
    local rem_int_dep=$3;
    if [[ -n ${patch_set} ]]; then
        if [[ -d ${ELT_PATCH_DIR}/${patch_set} ]]; then
            patch_dir="${ELT_PATCH_DIR}/${patch_set}";
        else
            return "${ret}";
        fi;
        for x in $(ls -d "${patch_dir}"/* 2> /dev/null | grep -v 'CVS' | sort -r);
        do
            if [[ -n ${x} && -f ${x} ]]; then
                if [[ -n ${rem_int_dep} ]]; then
                    sed -e "s|@REM_INT_DEP@|${rem_int_dep}|g" ${x} > "${T}/$$.rem_int_deps.patch";
                    x="${T}/$$.rem_int_deps.patch";
                fi;
                if ELT_try_and_apply_patch "${file}" "${x}"; then
                    ret=0;
                    break;
                fi;
            fi;
        done;
    fi;
    return "${ret}"
}
VER_major () 
{ 
    [[ -z $1 ]] && return 1;
    local VER=$@;
    echo "${VER%%[^[:digit:]]*}"
}
VER_micro () 
{ 
    [[ -z $1 ]] && return 1;
    local VER=$@;
    VER=${VER#*.*.};
    echo "${VER%%[^[:digit:]]*}"
}
VER_minor () 
{ 
    [[ -z $1 ]] && return 1;
    local VER=$@;
    VER=${VER#*.};
    echo "${VER%%[^[:digit:]]*}"
}
VER_to_int () 
{ 
    [[ -z $1 ]] && return 1;
    local VER_MAJOR=$(VER_major "$1");
    local VER_MINOR=$(VER_minor "$1");
    local VER_MICRO=$(VER_micro "$1");
    local VER_int=$(( VER_MAJOR * 65536 + VER_MINOR * 256 + VER_MICRO ));
    if [[ ${VER_int} -ge 65536 ]]; then
        echo "${VER_int}";
        return 0;
    fi;
    echo 1;
    return 1
}
_cdrom_locate_file_on_cd () 
{ 
    local mline="";
    local showedmsg=0 showjolietmsg=0;
    while [[ -z ${CDROM_ROOT} ]]; do
        local i=0;
        local -a cdset=(${*//:/ });
        if [[ -n ${CDROM_SET} ]]; then
            cdset=(${cdset[${CDROM_SET}]});
        fi;
        while [[ -n ${cdset[${i}]} ]]; do
            local dir=$(dirname ${cdset[${i}]});
            local file=$(basename ${cdset[${i}]});
            local point= node= fs= foo=;
            while read point node fs foo; do
                [[ " cd9660 iso9660 udf " != *" ${fs} "* ]] && ! [[ ${fs} == "subfs" && ",${opts}," == *",fs=cdfss,"* ]] && continue;
                point=${point//\040/ };
                [[ ! -d ${point}/${dir} ]] && continue;
                [[ -z $(find "${point}/${dir}" -maxdepth 1 -iname "${file}") ]] && continue;
                export CDROM_ROOT=${point};
                export CDROM_SET=${i};
                export CDROM_MATCH=${cdset[${i}]};
                return;
            done <<< "$(get_mounts)";
            ((++i));
        done;
        echo;
        if [[ ${showedmsg} -eq 0 ]]; then
            if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then
                if [[ -z ${CDROM_NAME} ]]; then
                    einfo "Please insert+mount the cdrom for ${PN} now !";
                else
                    einfo "Please insert+mount the ${CDROM_NAME} cdrom now !";
                fi;
            else
                if [[ -z ${CDROM_NAME_1} ]]; then
                    einfo "Please insert+mount cd #${CDROM_CURRENT_CD} for ${PN} now !";
                else
                    local var="CDROM_NAME_${CDROM_CURRENT_CD}";
                    einfo "Please insert+mount the ${!var} cdrom now !";
                fi;
            fi;
            showedmsg=1;
        fi;
        einfo "Press return to scan for the cd again";
        einfo "or hit CTRL+C to abort the emerge.";
        echo;
        if [[ ${showjolietmsg} -eq 0 ]]; then
            showjolietmsg=1;
        else
            ewarn "If you are having trouble with the detection";
            ewarn "of your CD, it is possible that you do not have";
            ewarn "Joliet support enabled in your kernel.  Please";
            ewarn "check that CONFIG_JOLIET is enabled in your kernel.";
            ebeep 5;
        fi;
        read || die "something is screwed with your system";
    done
}
_elibtoolize () 
{ 
    local opts;
    local lttest;
    lttest="$(autotools_check_macro "AC_PROG_LIBTOOL")$(autotools_check_macro "AM_PROG_LIBTOOL")";
    [[ -n $lttest ]] || return 0;
    [[ -f GNUmakefile.am || -f Makefile.am ]] && opts="--automake";
    [[ "${USERLAND}" == "Darwin" ]] && LIBTOOLIZE="glibtoolize";
    autotools_run_tool ${LIBTOOLIZE:-libtoolize} "$@" ${opts};
    eaclocal
}
_epatch_assert () 
{ 
    local _pipestatus=${PIPESTATUS[*]};
    [[ ${_pipestatus// /} -eq 0 ]]
}
_epatch_draw_line () 
{ 
    [[ -z $1 ]] && set "$(printf "%65s" '')";
    echo "${1//?/=}"
}
_filter-hardened () 
{ 
    local f;
    for f in "$@";
    do
        case "${f}" in 
            -fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie)
                gcc-specs-pie || continue;
                is-flagq -nopie || append-flags -nopie
            ;;
            -fstack-protector)
                gcc-specs-ssp || continue;
                is-flagq -fno-stack-protector || append-flags -fno-stack-protector
            ;;
            -fstack-protector-all)
                gcc-specs-ssp-to-all || continue;
                is-flagq -fno-stack-protector-all || append-flags -fno-stack-protector-all
            ;;
        esac;
    done
}
_filter-var () 
{ 
    local f x VAR VAL;
    declare -a new;
    VAR=$1;
    shift;
    eval VAL=\${${VAR}};
    for f in ${VAL};
    do
        for x in "$@";
        do
            [[ ${f} == ${x} ]] && continue 2;
        done;
        eval new\[\${\#new\[@]}]=\${f};
    done;
    eval export ${VAR}=\${new\[*]}
}
_gcc-install-dir () 
{ 
    echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null |		awk '$1=="install:" {print $2}')"
}
_gcc-specs-directive_raw () 
{ 
    local cc=$(tc-getCC);
    local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}');
    ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN	{ pspec=""; spec=""; outside=1 }
$1=="*"directive":"  { pspec=spec; spec=""; outside=0; next }
	outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next }
	spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next }
	{ spec=spec $0 }
END	{ print spec }';
    return 0
}
_gcc-specs-exists () 
{ 
    [[ -f $(_gcc-install-dir)/$1 ]]
}
_is_flagq () 
{ 
    local x;
    for x in ${!1};
    do
        [[ ${x} == $2 ]] && return 0;
    done;
    return 1
}
append-cppflags () 
{ 
    [[ -z $* ]] && return 0;
    export CPPFLAGS="${CPPFLAGS} $*";
    return 0
}
append-flags () 
{ 
    [[ -z $* ]] && return 0;
    export CFLAGS="${CFLAGS} $*";
    export CXXFLAGS="${CXXFLAGS} $*";
    return 0
}
append-ldflags () 
{ 
    [[ -z $* ]] && return 0;
    export LDFLAGS="${LDFLAGS} $*";
    return 0
}
append-lfs-flags () 
{ 
    [[ -n $@ ]] && die "append-lfs-flags takes no arguments";
    append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
}
autotools_check_macro () 
{ 
    [[ -f configure.ac || -f configure.in ]] && WANT_AUTOCONF="2.5" autoconf --trace=$1 2> /dev/null;
    return 0
}
autotools_get_auxdir () 
{ 
    local auxdir_scan_out;
    auxdir_scan_out=$(autotools_check_macro "AC_CONFIG_AUX_DIR");
    [[ -n ${auxdir_scan_out} ]] || return 0;
    echo ${auxdir_scan_out} | gawk '($0 !~ /^[[:space:]]*(#|dnl)/) {
		if (match($0, /AC_CONFIG_AUX_DIR:(.*)$/, res))
			print res[1]
	}' | uniq;
    return 0
}
autotools_get_subdirs () 
{ 
    local subdirs_scan_out;
    subdirs_scan_out=$(autotools_check_macro "AC_CONFIG_SUBDIRS");
    [[ -n ${subdirs_scan_out} ]] || return 0;
    echo "${subdirs_scan_out}" | gawk '($0 !~ /^[[:space:]]*(#|dnl)/) {
		if (match($0, /AC_CONFIG_SUBDIRS:(.*)$/, res))
			print res[1]
	}' | uniq;
    return 0
}
autotools_run_tool () 
{ 
    if [[ ${EBUILD_PHASE} != "unpack" ]]; then
        ewarn "QA Warning: running $1 in ${EBUILD_PHASE} phase";
    fi;
    local STDERR_TARGET="${T}/$$.out";
    local ris;
    printf "***** $1 *****\n***** $*\n\n" > "${STDERR_TARGET%/*}/$1-${STDERR_TARGET##*/}";
    ebegin "Running $@";
    "$@" >> "${STDERR_TARGET%/*}/$1-${STDERR_TARGET##*/}" 2>&1;
    ris=$?;
    eend ${ris};
    if [[ ${ris} != 0 && ${NO_FAIL} != 1 ]]; then
        echo;
        eerror "Failed Running $1 !";
        eerror;
        eerror "Include in your bugreport the contents of:";
        eerror;
        eerror "  ${STDERR_TARGET%/*}/$1-${STDERR_TARGET##*/}";
        echo;
        die "Failed Running $1 !";
    fi
}
bindnow-flags () 
{ 
    ewarn "QA: stop using the bindnow-flags function ... simply drop it from your ebuild" 1>&2;
    case $($(tc-getLD) -v 2>&1 &1  ${licmsg}  <<-EOF
**********************************************************
The following license outlines the terms of use of this
package.  You MUST accept this license for installation to
continue.  When you are done viewing, hit 'q'.	If you
CTRL+C out of this, the install will not run!
**********************************************************

EOF

    cat ${lic} >> ${licmsg};
    ${PAGER:-less} ${licmsg} || die "Could not execute pager (${PAGER}) to accept ${lic}";
    einfon "Do you accept the terms of this license (${l})? [yes/no] ";
    read alic;
    case ${alic} in 
        yes | Yes | y | Y)
            return 0
        ;;
        *)
            echo;
            echo;
            echo;
            eerror "You MUST accept the license to continue!  Exiting!";
            die "Failed to accept license"
        ;;
    esac
}
create_ml_includes () 
{ 
    local dest=$1;
    shift;
    local basedirs=$(create_ml_includes-listdirs "$@");
    create_ml_includes-makedestdirs ${dest} ${basedirs};
    local file;
    for file in $(create_ml_includes-allfiles ${basedirs});
    do
        ( echo "/* Autogenerated by create_ml_includes() in multilib.eclass */";
        local dir;
        for dir in ${basedirs};
        do
            if [[ -f ${D}/${dir}/${file} ]]; then
                echo "";
                local sym=$(create_ml_includes-sym_for_dir ${dir} "$@");
                if [[ ${sym/=} != "${sym}" ]]; then
                    echo "#if ${sym}";
                else
                    if [[ ${sym::1} == "!" ]]; then
                        echo "#ifndef ${sym:1}";
                    else
                        echo "#ifdef ${sym}";
                    fi;
                fi;
                echo "# include <$(create_ml_includes-absolute ${dir}/${file})>";
                echo "#endif /* ${sym} */";
            fi;
        done ) > "${D}/${dest}/${file}";
    done
}
create_ml_includes-absolute () 
{ 
    local dst="$(create_ml_includes-tidy_path $1)";
    dst=(${dst//\// });
    local i;
    for ((i=0; i<${#dst[*]}; i++))
    do
        [ "${dst[i]}" == "include" ] && break;
    done;
    local strip_upto=$i;
    for ((i=strip_upto+1; i<${#dst[*]}-1; i++))
    do
        echo -n ${dst[i]}/;
    done;
    echo -n ${dst[i]}
}
create_ml_includes-allfiles () 
{ 
    local basedir file;
    for basedir in "$@";
    do
        for file in $(find "${D}"/${basedir} -type f);
        do
            echo ${file/${D}\/${basedir}\//};
        done;
    done | sort | uniq
}
create_ml_includes-listdirs () 
{ 
    local dirs;
    local data;
    for data in "$@";
    do
        dirs="${dirs} ${data/*:/}";
    done;
    echo ${dirs:1}
}
create_ml_includes-makedestdirs () 
{ 
    local dest=$1;
    shift;
    local basedirs=$@;
    dodir ${dest};
    local basedir;
    for basedir in ${basedirs};
    do
        local dir;
        for dir in $(find ${D}/${basedir} -type d);
        do
            dodir ${dest}/${dir/${D}\/${basedir}/};
        done;
    done
}
create_ml_includes-sym_for_dir () 
{ 
    local dir=$1;
    shift;
    local data;
    for data in "$@";
    do
        if [[ ${data} == *:${dir} ]]; then
            echo ${data/:*/};
            return 0;
        fi;
    done;
    echo "Shouldn't be here -- create_ml_includes-sym_for_dir $1 $@";
    exit 1
}
create_ml_includes-tidy_path () 
{ 
    local removed=$1;
    if [ -n "${removed}" ]; then
        while [ "${removed}" != "${removed/\/\//\/}" ]; do
            removed=${removed/\/\//\/};
        done;
        while [ "${removed}" != "${removed//\/.\//\/}" ]; do
            removed=${removed//\/.\//\/};
        done;
        [ "${removed##*/}" = "." ] && removed=${removed%/*};
        while [ "${removed}" != "${removed//\/..\/}" ]; do
            local p1="${removed%%\/..\/*}";
            local p2="${removed#*\/..\/}";
            removed="${p1%\/*}/${p2}";
        done;
        [ "${removed##*/}" = ".." ] && removed=${removed%/*/*};
        [ "${removed##*/}" = "" ] && removed=${removed%/*};
        echo ${removed};
    fi
}
darwintoolize () 
{ 
    ewarn "darwintoolize() is deprecated, please just use elibtoolize()!";
    elibtoolize
}
dlopen_lib () 
{ 
    if [[ ${ELIBC} != *BSD ]]; then
        echo "-ldl";
    fi
}
doicon () 
{ 
    ( local i j ret;
    insinto /usr/share/pixmaps;
    for i in "$@";
    do
        if [[ -f ${i} ]]; then
            doins "${i}";
            ((ret+=$?));
        else
            if [[ -d ${i} ]]; then
                for j in "${i}"/*.png;
                do
                    doins "${j}";
                    ((ret+=$?));
                done;
            else
                ((++ret));
            fi;
        fi;
    done;
    exit ${ret} )
}
domenu () 
{ 
    ( local i j ret=0;
    insinto /usr/share/applications;
    for i in "$@";
    do
        if [[ -f ${i} ]]; then
            doins "${i}";
            ((ret+=$?));
        else
            if [[ -d ${i} ]]; then
                for j in "${i}"/*.desktop;
                do
                    doins "${j}";
                    ((ret+=$?));
                done;
            else
                ((++ret));
            fi;
        fi;
    done;
    exit ${ret} )
}
eaclocal () 
{ 
    local aclocal_opts;
    local amflags_file;
    for amflags_file in GNUmakefile.am Makefile.am GNUmakefile.in Makefile.in;
    do
        [[ -e ${amflags_file} ]] || continue;
        aclocal_opts=$(sed -n '/^ACLOCAL_AMFLAGS[[:space:]]*=/s:[^=]*=::p' ${amflags_file});
        eval aclocal_opts=\"${aclocal_opts}\";
        break;
    done;
    if [[ -n ${AT_M4DIR} ]]; then
        for x in ${AT_M4DIR};
        do
            case "${x}" in 
                "-I")

                ;;
                *)
                    [[ ! -d ${x} ]] && ewarn "eaclocal: '${x}' does not exist";
                    aclocal_opts="${aclocal_opts} -I ${x}"
                ;;
            esac;
        done;
    fi;
    [[ ! -f aclocal.m4 || -n $(grep -e 'generated.*by aclocal' aclocal.m4) ]] && autotools_run_tool aclocal "$@" ${aclocal_opts}
}
eautoconf () 
{ 
    if [[ ! -f configure.ac && ! -f configure.in ]]; then
        echo;
        eerror "No configure.{ac,in} present in '$(pwd | sed -e 's:.*/::')'!";
        echo;
        die "No configure.{ac,in} present!";
    fi;
    autotools_run_tool autoconf "$@"
}
eautoheader () 
{ 
    [[ -n $(autotools_check_macro "AC_CONFIG_HEADERS") ]] || return 0;
    NO_FAIL=1 autotools_run_tool autoheader "$@"
}
eautomake () 
{ 
    local extra_opts;
    local makefile_name;
    if [[ -f GNUmakefile.am ]]; then
        makefile_name="GNUmakefile";
    else
        if [[ -f Makefile.am ]]; then
            makefile_name="Makefile";
        else
            return 0;
        fi;
    fi;
    if [[ -z ${FROM_EAUTORECONF} && -f ${makefile_name}.in ]]; then
        local used_automake;
        local installed_automake;
        installed_automake=$(automake --version | head -n 1 | 			sed -e 's:.*(GNU automake) ::');
        used_automake=$(head -n 1 < ${makefile_name}.in | 			sed -e 's:.*by automake \(.*\) from .*:\1:');
        if [[ ${installed_automake} != ${used_automake} ]]; then
            einfo "Automake used for the package (${used_automake}) differs from";
            einfo "the installed version (${installed_automake}).";
            eautoreconf;
            return 0;
        fi;
    fi;
    [[ -f INSTALL && -f AUTHORS && -f ChangeLog && -f NEWS ]] || extra_opts="${extra_opts} --foreign";
    autotools_run_tool automake --add-missing --copy ${extra_opts} "$@"
}
eautoreconf () 
{ 
    local pwd=$(pwd) x auxdir;
    if [[ -z ${AT_NO_RECURSIVE} ]]; then
        for x in $(autotools_get_subdirs);
        do
            if [[ -d ${x} ]]; then
                cd "${x}";
                AT_NOELIBTOOLIZE="yes" eautoreconf;
                cd "${pwd}";
            fi;
        done;
    fi;
    auxdir=$(autotools_get_auxdir);
    einfo "Running eautoreconf in '$(pwd)' ...";
    [[ -n ${auxdir} ]] && mkdir -p ${auxdir};
    eaclocal;
    if ${LIBTOOLIZE:-libtoolize} -n --install >&/dev/null; then
        _elibtoolize --copy --force --install;
    else
        _elibtoolize --copy --force;
    fi;
    eautoconf;
    eautoheader;
    FROM_EAUTORECONF="yes" eautomake ${AM_OPTS};
    [[ ${AT_NOELIBTOOLIZE} == "yes" ]] && return 0;
    elibtoolize;
    return 0
}
ebeep () 
{ 
    local n;
    if [[ -z ${EBEEP_IGNORE} ]]; then
        for ((n=1 ; n <= ${1:-5} ; n++))
        do
            echo -ne "\a";
            sleep 0.1 >&/dev/null;
            sleep 0,1 >&/dev/null;
            echo -ne "\a";
            sleep 1;
        done;
    fi
}
ecvs_clean () 
{ 
    [[ -z $* ]] && set -- .;
    find "$@" -type d -name 'CVS' -prune -print0 | xargs -0 rm -rf;
    find "$@" -type f -name '.cvs*' -print0 | xargs -0 rm -rf
}
edos2unix () 
{ 
    echo "$@" | xargs sed -i 's/\r$//'
}
egetent () 
{ 
    case ${CHOST} in 
        *-darwin*)
            case "$2" in 
                *[!0-9]*)
                    nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }"
                ;;
                *)
                    nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }"
                ;;
            esac
        ;;
        *-freebsd* | *-dragonfly*)
            local opts action="user";
            [[ $1 == "passwd" ]] || action="group";
            if [[ $2 == [[:digit:]]* ]]; then
                [[ ${action} == "user" ]] && opts="-u" || opts="-g";
            fi;
            pw show ${action} ${opts} "$2" -q
        ;;
        *-netbsd* | *-openbsd*)
            grep "$2:\*:" /etc/$1
        ;;
        *)
            type -p nscd >&/dev/null && nscd -i "$1";
            getent "$1" "$2"
        ;;
    esac
}
egethome () 
{ 
    ent=$(egetent passwd $1);
    case ${CHOST} in 
        *-darwin* | *-freebsd* | *-dragonfly*)
            echo ${ent} | cut -d: -f9
        ;;
        *)
            echo ${ent} | cut -d: -f6
        ;;
    esac
}
egetshell () 
{ 
    ent=$(egetent passwd "$1");
    case ${CHOST} in 
        *-darwin* | *-freebsd* | *-dragonfly*)
            echo ${ent} | cut -d: -f10
        ;;
        *)
            echo ${ent} cut -d: -f7
        ;;
    esac
}
elibtoolize () 
{ 
    local x=;
    local y=;
    local do_portage="no";
    local do_reversedeps="no";
    local do_only_patches="no";
    local do_uclibc="yes";
    local deptoremove=;
    local my_dirlist=;
    local elt_patches="install-sh ltmain portage relink max_cmd_len sed test tmp";
    local start_dir=${PWD};
    my_dirlist=$(ELT_find_ltmain_sh);
    for x in "$@";
    do
        case "${x}" in 
            "--portage")
                do_portage="yes"
            ;;
            "--reverse-deps")
                do_reversedeps="yes";
                elt_patches="${elt_patches} fix-relink"
            ;;
            "--patch-only")
                do_only_patches="yes"
            ;;
            "^--remove-internal-dep="*)
                deptoremove=$(echo "${x}" | sed -e 's|--remove-internal-dep=||');
                [[ -n ${deptoremove} ]] && elt_patches="${elt_patches} rem-int-dep"
            ;;
            "--shallow")
                if [[ -f ${S}/ltmain.sh ]]; then
                    my_dirlist=${S};
                else
                    my_dirlist=;
                fi
            ;;
            "--no-uclibc")
                do_uclibc="no"
            ;;
            *)
                eerror "Invalid elibtoolize option: ${x}";
                die "elibtoolize called with ${x} ??"
            ;;
        esac;
    done;
    [[ ${do_uclibc} == "yes" ]] && elt_patches="${elt_patches} uclibc-conf uclibc-ltconf";
    [[ ${CHOST} == *"-freebsd"* ]] && elt_patches="${elt_patches} fbsd-conf fbsd-ltconf";
    [[ ${CHOST} == *"-darwin"* ]] && elt_patches="${elt_patches} darwin-ltconf darwin-ltmain";
    for x in ${my_dirlist};
    do
        local tmp=$(echo "${x}" | sed -e "s|${WORKDIR}||");
        export ELT_APPLIED_PATCHES=;
        export ELT_LTMAIN_SH="${x}/ltmain.sh";
        [[ -f ${x}/.elibtoolized ]] && continue;
        cd ${x};
        einfo "Running elibtoolize in: $(echo "/${tmp}" | sed -e 's|//|/|g; s|^/||')";
        for y in ${elt_patches};
        do
            local ret=0;
            case "${y}" in 
                "portage")
                    if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]]; then
                        ELT_walk_patches "${x}/ltmain.sh" "${y}";
                        ret=$?;
                    fi
                ;;
                "rem-int-dep")
                    ELT_walk_patches "${x}/ltmain.sh" "${y}" "${deptoremove}";
                    ret=$?
                ;;
                "fix-relink")
                    if [[ -n $(grep 'inst_prefix_dir' "${x}/ltmain.sh") ]]; then
                        ELT_walk_patches "${x}/ltmain.sh" "${y}";
                        ret=$?;
                    fi
                ;;
                "max_cmd_len")
                    if [[ -n $(grep 'max_cmd_len' "${x}/ltmain.sh") ]]; then
                        ELT_walk_patches "${x}/ltmain.sh" "${y}";
                        ret=$?;
                    fi
                ;;
                "uclibc-conf")
                    if [[ -e ${x}/configure && -n $(grep 'Transform linux' "${x}/configure") ]]; then
                        ELT_walk_patches "${x}/configure" "${y}";
                        ret=$?;
                    else
                        if [[ ! -e ${x}/configure && -e ${x}/../configure && -n $(grep 'Transform linux' "${x}/../configure") ]]; then
                            ELT_walk_patches "${x}/../configure" "${y}";
                            ret=$?;
                        fi;
                    fi
                ;;
                "uclibc-ltconf")
                    if [[ -s ${x}/ltconfig ]]; then
                        ELT_walk_patches "${x}/ltconfig" "${y}";
                        ret=$?;
                    fi
                ;;
                "fbsd-conf")
                    if [[ -e ${x}/configure && -n $(grep 'version_type=freebsd-' "${x}/configure") ]]; then
                        ELT_walk_patches "${x}/configure" "${y}";
                        ret=$?;
                    else
                        if [[ ! -e ${x}/configure && -e ${x}/../configure && -n $(grep 'version_type=freebsd-' "${x}/../configure") ]]; then
                            ELT_walk_patches "${x}/../configure" "${y}";
                            ret=$?;
                        fi;
                    fi
                ;;
                "fbsd-ltconf")
                    if [[ -s ${x}/ltconfig ]]; then
                        ELT_walk_patches "${x}/ltconfig" "${y}";
                        ret=$?;
                    fi
                ;;
                "darwin-ltconf")
                    if [[ -s ${x}/ltconfig ]]; then
                        ELT_walk_patches "${x}/ltconfig" "${y}";
                        ret=$?;
                    fi
                ;;
                "install-sh")
                    ELT_walk_patches "${x}/install-sh" "${y}";
                    ret=$?
                ;;
                *)
                    ELT_walk_patches "${x}/ltmain.sh" "${y}";
                    ret=$?
                ;;
            esac;
            if [[ ${ret} -ne 0 ]]; then
                case ${y} in 
                    "relink")
                        local version=$(ELT_libtool_version "${x}/ltmain.sh");
                        if [[ -z $(grep 'inst_prefix_dir' "${x}/ltmain.sh") && $(VER_to_int "${version}") -ge $(VER_to_int "1.4.0") ]]; then
                            ewarn "  Could not apply relink.patch!";
                        fi
                    ;;
                    "portage")
                        if [[ ${do_portage} == "yes" ]]; then
                            if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]]; then
                                echo;
                                eerror "Portage patch requested, but failed to apply!";
                                eerror "Please bug azarah or vapier to add proper patch.";
                                die "Portage patch requested, but failed to apply!";
                            fi;
                        else
                            if [[ -n $(grep 'We do not want portage' "${x}/ltmain.sh") ]]; then
                                :;
                            else
                                local version=$( 									eval $(grep -e '^[[:space:]]*VERSION=' "${x}/ltmain.sh"); 									echo "${VERSION}");
                                echo;
                                eerror "Portage patch failed to apply (ltmain.sh version ${version})!";
                                eerror "Please bug azarah or vapier to add proper patch.";
                                die "Portage patch failed to apply!";
                            fi;
                            ELT_APPLIED_PATCHES="portage";
                        fi
                    ;;
                    "uclibc-"*)
                        [[ ${CHOST} == *"-uclibc" ]] && ewarn "  uClibc patch set '${y}' failed to apply!"
                    ;;
                    "fbsd-"*)
                        if [[ ${CHOST} == *"-freebsd"* ]]; then
                            if [[ -z $(grep 'Handle Gentoo/FreeBSD as it was Linux' 								"${x}/configure" "${x}/../configure" 2>/dev/null) ]]; then
                                eerror "  FreeBSD patch set '${y}' failed to apply!";
                                die "FreeBSD patch set '${y}' failed to apply!";
                            fi;
                        fi
                    ;;
                    "darwin-"*)
                        [[ ${CHOST} == *"-darwin"* ]] && ewarn "  Darwin patch set '${y}' failed to apply!"
                    ;;
                esac;
            fi;
        done;
        if [[ -z ${ELT_APPLIED_PATCHES} ]]; then
            if [[ ${do_portage} == "no" && ${do_reversedeps} == "no" && ${do_only_patches} == "no" && ${deptoremove} == "" ]]; then
                ewarn "Cannot apply any patches, please file a bug about this";
                die;
            fi;
        fi;
        [[ -f ${x}/libtool ]] && rm -f "${x}/libtool";
        touch "${x}/.elibtoolized";
    done;
    cd "${start_dir}"
}
emktemp () 
{ 
    local exe="touch";
    [[ $1 == -d ]] && exe="mkdir" && shift;
    local topdir=$1;
    if [[ -z ${topdir} ]]; then
        [[ -z ${T} ]] && topdir="/tmp" || topdir=${T};
    fi;
    if ! type -P mktemp > /dev/null; then
        local tmp=/;
        while [[ -e ${tmp} ]]; do
            tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM};
        done;
        ${exe} "${tmp}" || ${exe} -p "${tmp}";
        echo "${tmp}";
    else
        if [[ ${exe} == "touch" ]]; then
            TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX;
        else
            TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX;
        fi;
    fi
}
enewgroup () 
{ 
    case ${EBUILD_PHASE} in 
        unpack | compile | test | install)
            eerror "'enewgroup()' called from '${EBUILD_PHASE}()' which is not a pkg_* function.";
            eerror "Package fails at QA and at life.  Please file a bug.";
            die "Bad package!  enewgroup is only for use in pkg_* functions!"
        ;;
    esac;
    local egroup="$1";
    shift;
    if [ -z "${egroup}" ]; then
        eerror "No group specified !";
        die "Cannot call enewgroup without a group";
    fi;
    if [[ -n $(egetent group "${egroup}") ]]; then
        return 0;
    fi;
    einfo "Adding group '${egroup}' to your system ...";
    local opts=;
    local egid="$1";
    shift;
    if [ ! -z "${egid}" ]; then
        if [ "${egid}" -gt 0 ]; then
            if [ -z "`egetent group ${egid}`" ]; then
                if [[ "${CHOST}" == *-darwin* ]]; then
                    opts="${opts} ${egid}";
                else
                    opts="${opts} -g ${egid}";
                fi;
            else
                egid="next available; requested gid taken";
            fi;
        else
            eerror "Groupid given but is not greater than 0 !";
            die "${egid} is not a valid GID";
        fi;
    else
        egid="next available";
    fi;
    einfo " - Groupid: ${egid}";
    local eextra="$@";
    opts="${opts} ${eextra}";
    local oldsandbox="${SANDBOX_ON}";
    export SANDBOX_ON="0";
    case ${CHOST} in 
        *-darwin*)
            if [ ! -z "${eextra}" ]; then
                einfo "Extra options are not supported on Darwin/OS X yet";
                einfo "Please report the ebuild along with the info below";
                einfo "eextra: ${eextra}";
                die "Required function missing";
            fi;
            case ${egid} in 
                *[!0-9]*)
                    for ((egid = 101; egid <= 999; egid++))
                    do
                        [[ -z $(egetent group ${egid}) ]] && break;
                    done
                ;;
            esac;
            dscl . create /groups/${egroup} gid ${egid};
            dscl . create /groups/${egroup} passwd '*'
        ;;
        *-freebsd* | *-dragonfly*)
            case ${egid} in 
                *[!0-9]*)
                    for ((egid = 101; egid <= 999; egid++))
                    do
                        [[ -z $(egetent group ${egid}) ]] && break;
                    done
                ;;
            esac;
            pw groupadd ${egroup} -g ${egid} || die "enewgroup failed"
        ;;
        *-netbsd*)
            case ${egid} in 
                *[!0-9]*)
                    for ((egid = 101; egid <= 999; egid++))
                    do
                        [[ -z $(egetent group ${egid}) ]] && break;
                    done
                ;;
            esac;
            groupadd -g ${egid} ${egroup} || die "enewgroup failed"
        ;;
        *)
            groupadd ${opts} ${egroup} || die "enewgroup failed"
        ;;
    esac;
    export SANDBOX_ON="${oldsandbox}"
}
enewuser () 
{ 
    case ${EBUILD_PHASE} in 
        unpack | compile | test | install)
            eerror "'enewuser()' called from '${EBUILD_PHASE}()' which is not a pkg_* function.";
            eerror "Package fails at QA and at life.  Please file a bug.";
            die "Bad package!  enewuser is only for use in pkg_* functions!"
        ;;
    esac;
    local euser=$1;
    shift;
    if [[ -z ${euser} ]]; then
        eerror "No username specified !";
        die "Cannot call enewuser without a username";
    fi;
    if [[ -n $(egetent passwd "${euser}") ]]; then
        return 0;
    fi;
    einfo "Adding user '${euser}' to your system ...";
    local opts=;
    local euid=$1;
    shift;
    if [[ -n ${euid} && ${euid} != -1 ]]; then
        if [[ ${euid} -gt 0 ]]; then
            if [[ -n $(egetent passwd ${euid}) ]]; then
                euid="next";
            fi;
        else
            eerror "Userid given but is not greater than 0 !";
            die "${euid} is not a valid UID";
        fi;
    else
        euid="next";
    fi;
    if [[ ${euid} == "next" ]]; then
        for ((euid = 101; euid <= 999; euid++))
        do
            [[ -z $(egetent passwd ${euid}) ]] && break;
        done;
    fi;
    opts="${opts} -u ${euid}";
    einfo " - Userid: ${euid}";
    local eshell=$1;
    shift;
    if [[ ! -z ${eshell} ]] && [[ ${eshell} != "-1" ]]; then
        if [[ ! -e ${ROOT}${eshell} ]]; then
            eerror "A shell was specified but it does not exist !";
            die "${eshell} does not exist in ${ROOT}";
        fi;
        if [[ ${eshell} == */false || ${eshell} == */nologin ]]; then
            eerror "Do not specify ${eshell} yourself, use -1";
            die "Pass '-1' as the shell parameter";
        fi;
    else
        for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null;
        do
            [[ -x ${ROOT}${shell} ]] && break;
        done;
        if [[ ${shell} == "/dev/null" ]]; then
            eerror "Unable to identify the shell to use, proceeding with userland default.";
            case ${USERLAND} in 
                GNU)
                    shell="/bin/false"
                ;;
                BSD)
                    shell="/sbin/nologin"
                ;;
                Darwin)
                    shell="/usr/sbin/nologin"
                ;;
                *)
                    die "Unable to identify the default shell for userland ${USERLAND}"
                ;;
            esac;
        fi;
        eshell=${shell};
    fi;
    einfo " - Shell: ${eshell}";
    opts="${opts} -s ${eshell}";
    local ehome=$1;
    shift;
    if [[ -z ${ehome} ]] || [[ ${ehome} == "-1" ]]; then
        ehome="/dev/null";
    fi;
    einfo " - Home: ${ehome}";
    opts="${opts} -d ${ehome}";
    local egroups=$1;
    shift;
    if [[ ! -z ${egroups} ]]; then
        local oldifs=${IFS};
        local defgroup="" exgroups="";
        export IFS=",";
        for g in ${egroups};
        do
            export IFS=${oldifs};
            if [[ -z $(egetent group "${g}") ]]; then
                eerror "You must add group ${g} to the system first";
                die "${g} is not a valid GID";
            fi;
            if [[ -z ${defgroup} ]]; then
                defgroup=${g};
            else
                exgroups="${exgroups},${g}";
            fi;
            export IFS=",";
        done;
        export IFS=${oldifs};
        opts="${opts} -g ${defgroup}";
        if [[ ! -z ${exgroups} ]]; then
            opts="${opts} -G ${exgroups:1}";
        fi;
    else
        egroups="(none)";
    fi;
    einfo " - Groups: ${egroups}";
    local oldsandbox=${SANDBOX_ON};
    export SANDBOX_ON="0";
    case ${CHOST} in 
        *-darwin*)
            if [[ -z $@ ]]; then
                dscl . create /users/${euser} uid ${euid};
                dscl . create /users/${euser} shell ${eshell};
                dscl . create /users/${euser} home ${ehome};
                dscl . create /users/${euser} realname "added by portage for ${PN}";
                local oldifs=${IFS};
                export IFS=",";
                for g in ${egroups};
                do
                    dscl . merge /groups/${g} users ${euser};
                done;
                export IFS=${oldifs};
            else
                einfo "Extra options are not supported on Darwin yet";
                einfo "Please report the ebuild along with the info below";
                einfo "eextra: $@";
                die "Required function missing";
            fi
        ;;
        *-freebsd* | *-dragonfly*)
            if [[ -z $@ ]]; then
                pw useradd ${euser} ${opts} -c "added by portage for ${PN}" die "enewuser failed";
            else
                einfo " - Extra: $@";
                pw useradd ${euser} ${opts} "$@" || die "enewuser failed";
            fi
        ;;
        *-netbsd*)
            if [[ -z $@ ]]; then
                useradd ${opts} ${euser} || die "enewuser failed";
            else
                einfo " - Extra: $@";
                useradd ${opts} ${euser} "$@" || die "enewuser failed";
            fi
        ;;
        *-openbsd*)
            if [[ -z $@ ]]; then
                useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} || die "enewuser failed";
            else
                einfo " - Extra: $@";
                useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} "$@" || die "enewuser failed";
            fi
        ;;
        *)
            if [[ -z $@ ]]; then
                useradd ${opts} ${euser} -c "added by portage for ${PN}" || die "enewuser failed";
            else
                einfo " - Extra: $@";
                useradd ${opts} ${euser} "$@" || die "enewuser failed";
            fi
        ;;
    esac;
    if [[ ! -e ${ROOT}/${ehome} ]]; then
        einfo " - Creating ${ehome} in ${ROOT}";
        mkdir -p "${ROOT}/${ehome}";
        chown ${euser} "${ROOT}/${ehome}";
        chmod 755 "${ROOT}/${ehome}";
    fi;
    export SANDBOX_ON=${oldsandbox}
}
epatch () 
{ 
    function _epatch_draw_line () 
    { 
        [[ -z $1 ]] && set "$(printf "%65s" '')";
        echo "${1//?/=}"
    };
    function _epatch_assert () 
    { 
        local _pipestatus=${PIPESTATUS[*]};
        [[ ${_pipestatus// /} -eq 0 ]]
    };
    local PIPE_CMD="";
    local STDERR_TARGET="${T}/$$.out";
    local PATCH_TARGET="${T}/$$.patch";
    local PATCH_SUFFIX="";
    local SINGLE_PATCH="no";
    local x="";
    unset P4CONFIG P4PORT P4USER;
    if [ "$#" -gt 1 ]; then
        local m="";
        for m in "$@";
        do
            epatch "${m}";
        done;
        return 0;
    fi;
    if [ -n "$1" -a -f "$1" ]; then
        SINGLE_PATCH="yes";
        local EPATCH_SOURCE="$1";
        local EPATCH_SUFFIX="${1##*\.}";
    else
        if [ -n "$1" -a -d "$1" ]; then
            if [ "${EPATCH_FORCE}" = "yes" ] && [ -z "${EPATCH_SUFFIX}" ]; then
                local EPATCH_SOURCE="$1/*";
            else
                local EPATCH_SOURCE="$1/*.${EPATCH_SUFFIX}";
            fi;
        else
            if [[ ! -d ${EPATCH_SOURCE} ]] || [[ -n $1 ]]; then
                if [ -n "$1" -a "${EPATCH_SOURCE}" = "${WORKDIR}/patch" ]; then
                    EPATCH_SOURCE="$1";
                fi;
                echo;
                eerror "Cannot find \$EPATCH_SOURCE!  Value for \$EPATCH_SOURCE is:";
                eerror;
                eerror "  ${EPATCH_SOURCE}";
                eerror "  ( ${EPATCH_SOURCE##*/} )";
                echo;
                die "Cannot find \$EPATCH_SOURCE!";
            fi;
            local EPATCH_SOURCE="${EPATCH_SOURCE}/*.${EPATCH_SUFFIX}";
        fi;
    fi;
    case ${EPATCH_SUFFIX##*\.} in 
        bz2)
            PIPE_CMD="bzip2 -dc";
            PATCH_SUFFIX="bz2"
        ;;
        gz | Z | z)
            PIPE_CMD="gzip -dc";
            PATCH_SUFFIX="gz"
        ;;
        ZIP | zip)
            PIPE_CMD="unzip -p";
            PATCH_SUFFIX="zip"
        ;;
        *)
            PIPE_CMD="cat";
            PATCH_SUFFIX="patch"
        ;;
    esac;
    if [ "${SINGLE_PATCH}" = "no" ]; then
        einfo "${EPATCH_MULTI_MSG}";
    fi;
    for x in ${EPATCH_SOURCE};
    do
        if [ -f ${x} ] && ( [ "${SINGLE_PATCH}" = "yes" -o "${x/_all_}" != "${x}" -o "${x/_${ARCH}_}" != "${x}" ] || [ "${EPATCH_FORCE}" = "yes" ] ); then
            local count=0;
            local popts="${EPATCH_OPTS}";
            local patchname=${x##*/};
            if [ -n "${EPATCH_EXCLUDE}" ]; then
                if [ "${EPATCH_EXCLUDE/${patchname}}" != "${EPATCH_EXCLUDE}" ]; then
                    continue;
                fi;
            fi;
            if [ "${SINGLE_PATCH}" = "yes" ]; then
                if [ -n "${EPATCH_SINGLE_MSG}" ]; then
                    einfo "${EPATCH_SINGLE_MSG}";
                else
                    einfo "Applying ${patchname} ...";
                fi;
            else
                einfo "  ${patchname} ...";
            fi;
            echo "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
            echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
            while [ "${count}" -lt 5 ]; do
                _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                if [ "${PATCH_SUFFIX}" != "patch" ]; then
                    echo -n "PIPE_COMMAND:	" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                    echo "${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                else
                    PATCH_TARGET="${x}";
                fi;
                echo -n "PATCH COMMAND:	 " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                if [ "${PATCH_SUFFIX}" != "patch" ]; then
                    if ! ( ${PIPE_CMD} ${x} > ${PATCH_TARGET} ) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1; then
                        echo;
                        eerror "Could not extract patch!";
                        count=5;
                        break;
                    fi;
                fi;
                if ( cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f;
                _epatch_assert ) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1; then
                    _epatch_draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
                    echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
                    echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
                    echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
                    _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
                    cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1;
                    _epatch_assert;
                    if [ "$?" -ne 0 ]; then
                        cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                        echo;
                        eerror "A dry-run of patch command succeeded, but actually";
                        eerror "applying the patch failed!";
                        count=5;
                    fi;
                    rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
                    break;
                fi;
                count=$((count + 1));
            done;
            if [ "${PATCH_SUFFIX}" != "patch" ]; then
                rm -f ${PATCH_TARGET};
            fi;
            if [ "${count}" -eq 5 ]; then
                echo;
                eerror "Failed Patch: ${patchname} !";
                eerror " ( ${PATCH_TARGET} )";
                eerror;
                eerror "Include in your bugreport the contents of:";
                eerror;
                eerror "  ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}";
                echo;
                die "Failed Patch: ${patchname}!";
            fi;
            rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
            eend 0;
        fi;
    done;
    if [ "${SINGLE_PATCH}" = "no" ]; then
        einfo "Done with patching";
    fi
}
epause () 
{ 
    [[ -z ${EPAUSE_IGNORE} ]] && sleep ${1:-5}
}
epunt_cxx () 
{ 
    local dir=$1;
    [[ -z ${dir} ]] && dir=${S};
    ebegin "Removing useless C++ checks";
    local f;
    find "${dir}" -name configure | while read f; do
        patch --no-backup-if-mismatch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null;
    done;
    eend 0
}
esvn_clean () 
{ 
    [[ -z $* ]] && set -- .;
    find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
}
etexlinks () 
{ 
    texlive-common_do_symlinks $(sed '/^[      ]*#/d; /^[      ]*$/d' "$1" | awk '{print $1, $2}')
}
filter-flags () 
{ 
    _filter-hardened "$@";
    _filter-var CFLAGS "$@";
    _filter-var CPPFLAGS "$@";
    _filter-var CXXFLAGS "$@";
    return 0
}
filter-ldflags () 
{ 
    _filter-var LDFLAGS "$@";
    return 0
}
filter-lfs-flags () 
{ 
    [[ -n $@ ]] && die "filter-lfs-flags takes no arguments";
    filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE
}
filter-mfpmath () 
{ 
    local orig_mfpmath new_math prune_math;
    orig_mfpmath=$(get-flag -mfpmath);
    new_math=$(get-flag mfpmath);
    new_math=" ${new_math//,/ } ";
    prune_math="";
    for prune_math in "$@";
    do
        new_math=${new_math/ ${prune_math} / };
    done;
    new_math=$(echo ${new_math});
    new_math=${new_math// /,};
    if [[ -z ${new_math} ]]; then
        filter-flags ${orig_mfpmath};
    else
        replace-flags ${orig_mfpmath} -mfpmath=${new_math};
    fi;
    return 0
}
find_unpackable_file () 
{ 
    local src=$1;
    if [[ -z ${src} ]]; then
        src=${DISTDIR}/${A};
    else
        if [[ -e ${DISTDIR}/${src} ]]; then
            src=${DISTDIR}/${src};
        else
            if [[ -e ${PWD}/${src} ]]; then
                src=${PWD}/${src};
            else
                if [[ -e ${src} ]]; then
                    src=${src};
                fi;
            fi;
        fi;
    fi;
    [[ ! -e ${src} ]] && return 1;
    echo "${src}"
}
gcc-fullversion () 
{ 
    $(tc-getCC "$@") -dumpversion
}
gcc-major-version () 
{ 
    gcc-version "$@" | cut -f1 -d.
}
gcc-micro-version () 
{ 
    gcc-fullversion "$@" | cut -f3 -d. | cut -f1 -d-
}
gcc-minor-version () 
{ 
    gcc-version "$@" | cut -f2 -d.
}
gcc-specs-directive () 
{ 
    local directive subdname subdirective;
    directive="$(_gcc-specs-directive_raw $1)";
    while [[ ${directive} == *%\(*\)* ]]; do
        subdname=${directive/*%\(};
        subdname=${subdname/\)*};
        subdirective="$(_gcc-specs-directive_raw ${subdname})";
        directive="${directive//\%(${subdname})/${subdirective}}";
    done;
    echo "${directive}";
    return 0
}
gcc-specs-now () 
{ 
    local directive;
    directive=$(gcc-specs-directive link_command);
    return $([[ ${directive/\{!nonow:} != ${directive} ]])
}
gcc-specs-pie () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    return $([[ ${directive/\{!nopie:} != ${directive} ]])
}
gcc-specs-relro () 
{ 
    local directive;
    directive=$(gcc-specs-directive link_command);
    return $([[ ${directive/\{!norelro:} != ${directive} ]])
}
gcc-specs-ssp () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    return $([[ ${directive/\{!fno-stack-protector:} != ${directive} ]])
}
gcc-specs-ssp-to-all () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    return $([[ ${directive/\{!fno-stack-protector-all:} != ${directive} ]])
}
gcc-version () 
{ 
    gcc-fullversion "$@" | cut -f1,2 -d.
}
gen_usr_ldscript () 
{ 
    local lib libdir=$(get_libdir) output_format="";
    dodir /usr/${libdir};
    output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p');
    [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )";
    for lib in "$@";
    do
        if [[ ${USERLAND} == "Darwin" ]]; then
            ewarn "Not creating fake dynamic library for $lib on Darwin;";
            ewarn "making a symlink instead.";
            dosym "/${libdir}/${lib}" "/usr/${libdir}/${lib}";
        else
            cat > "${D}/usr/${libdir}/${lib}"  <<-END_LDSCRIPT
/* GNU ld script
   Since Gentoo has critical dynamic libraries
   in /lib, and the static versions in /usr/lib,
   we need to have a "fake" dynamic lib in /usr/lib,
   otherwise we run into linking problems.

   See bug http://bugs.gentoo.org/4411 for more info.
 */
${output_format}
GROUP ( /${libdir}/${lib} )
END_LDSCRIPT

        fi
        fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
    done
}
get-flag () 
{ 
    local f findflag="$1";
    for f in ${CFLAGS} ${CXXFLAGS};
    do
        if [ "${f/${findflag}}" != "${f}" ]; then
            printf "%s\n" "${f/-${findflag}=}";
            return 0;
        fi;
    done;
    return 1
}
get_abi_ASFLAGS () 
{ 
    get_abi_var ASFLAGS "$@"
}
get_abi_CDEFINE () 
{ 
    get_abi_var CDEFINE "$@"
}
get_abi_CFLAGS () 
{ 
    get_abi_var CFLAGS "$@"
}
get_abi_CHOST () 
{ 
    get_abi_var CHOST "$@"
}
get_abi_CTARGET () 
{ 
    get_abi_var CTARGET "$@"
}
get_abi_FAKE_TARGETS () 
{ 
    get_abi_var FAKE_TARGETS "$@"
}
get_abi_LDFLAGS () 
{ 
    get_abi_var LDFLAGS "$@"
}
get_abi_LIBDIR () 
{ 
    get_abi_var LIBDIR "$@"
}
get_abi_var () 
{ 
    local flag=$1;
    local abi;
    if [ $# -gt 1 ]; then
        abi=${2};
    else
        if [ -n "${ABI}" ]; then
            abi=${ABI};
        else
            if [ -n "${DEFAULT_ABI}" ]; then
                abi=${DEFAULT_ABI};
            else
                abi="default";
            fi;
        fi;
    fi;
    local var="${flag}_${abi}";
    echo ${!var}
}
get_all_abis () 
{ 
    local order="";
    if [[ -z ${MULTILIB_ABIS} ]]; then
        echo "default";
        return 0;
    fi;
    for x in ${MULTILIB_ABIS};
    do
        if [[ ${x} != ${DEFAULT_ABI} ]]; then
            order="${order:+${order} }${x}";
        fi;
    done;
    order="${order:+${order} }${DEFAULT_ABI}";
    echo ${order};
    return 0
}
get_all_libdirs () 
{ 
    local libdirs="lib";
    local abi;
    local dir;
    for abi in ${MULTILIB_ABIS};
    do
        [ "$(get_abi_LIBDIR ${abi})" != "lib" ] && libdirs="${libdirs} $(get_abi_LIBDIR ${abi})";
    done;
    echo "${libdirs}"
}
get_bmake () 
{ 
    if [[ ${USERLAND} == *BSD ]]; then
        echo make;
    else
        if [[ ${USERLAND} == "Darwin" ]]; then
            echo bsdmake;
        else
            echo pmake;
        fi;
    fi
}
get_install_abis () 
{ 
    local order="";
    if [[ -z ${MULTILIB_ABIS} ]]; then
        echo "default";
        return 0;
    fi;
    if [[ ${EMULTILIB_PKG} == "true" ]]; then
        for x in ${MULTILIB_ABIS};
        do
            if [[ ${x} != "${DEFAULT_ABI}" ]]; then
                hasq ${x} ${ABI_DENY} || ordera="${ordera} ${x}";
            fi;
        done;
        hasq ${DEFAULT_ABI} ${ABI_DENY} || order="${ordera} ${DEFAULT_ABI}";
        if [[ -n ${ABI_ALLOW} ]]; then
            local ordera="";
            for x in ${order};
            do
                if hasq ${x} ${ABI_ALLOW}; then
                    ordera="${ordera} ${x}";
                fi;
            done;
            order=${ordera};
        fi;
    else
        order=${DEFAULT_ABI};
    fi;
    if [[ -z ${order} ]]; then
        die "The ABI list is empty.  Are you using a proper multilib profile?  Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package.";
    fi;
    echo ${order};
    return 0
}
get_libdir () 
{ 
    local CONF_LIBDIR;
    if [ -n "${CONF_LIBDIR_OVERRIDE}" ]; then
        echo ${CONF_LIBDIR_OVERRIDE};
    else
        get_abi_LIBDIR;
    fi
}
get_libdir_override () 
{ 
    if has_multilib_profile; then
        eerror "get_libdir_override called, but it shouldn't be needed with the new multilib approach.  Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org";
        exit 1;
    fi;
    CONF_LIBDIR="$1";
    CONF_LIBDIR_OVERRIDE="$1";
    LIBDIR_default="$1"
}
get_libname () 
{ 
    local libname;
    local ver=$1;
    case ${CHOST} in 
        mingw* | *-mingw*)
            libname="dll"
        ;;
        *-darwin*)
            libname="dylib"
        ;;
        *)
            libname="so"
        ;;
    esac;
    if [[ -z $* ]]; then
        echo ".${libname}";
    else
        for ver in "$@";
        do
            case ${CHOST} in 
                *-darwin*)
                    echo ".${ver}.${libname}"
                ;;
                *)
                    echo ".${libname}.${ver}"
                ;;
            esac;
        done;
    fi
}
get_ml_incdir () 
{ 
    local dir=/usr/include;
    if [[ $# -gt 0 ]]; then
        incdir=$1;
        shift;
    fi;
    if [[ -z "${MULTILIB_ABIS}" ]]; then
        echo ${incdir};
        return 0;
    fi;
    local abi=${ABI-${DEFAULT_ABI}};
    if [[ $# -gt 0 ]]; then
        abi=$1;
        shift;
    fi;
    if [[ -d "${dir}/gentoo-multilib/${abi}" ]]; then
        echo ${dir}/gentoo-multilib/${abi};
    else
        echo ${dir};
    fi
}
get_mounts () 
{ 
    local point= node= fs= opts= foo=;
    if [[ $(uname -s) == "Linux" ]]; then
        while read node point fs opts foo; do
            echo "${point} ${node} ${fs} ${opts}";
        done < /proc/mounts;
        return;
    fi;
    local IFS='	';
    LC_ALL=C mount -p | while read node point fs foo; do
        opts=${fs#* };
        fs=${fs%% *};
        echo "${point// /\040} ${node// /\040} ${fs%% *} ${opts// /\040}";
    done
}
get_multilibdir () 
{ 
    if has_multilib_profile; then
        eerror "get_multilibdir called, but it shouldn't be needed with the new multilib approach.  Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org";
        exit 1;
    fi;
    echo ${CONF_MULTILIBDIR:=lib32}
}
has_hardened () 
{ 
    ewarn "has_hardened: deprecated, please use gcc-specs-{relro,now}()!" 1>&2;
    test_version_info Hardened && return 0;
    [[ -f ${GCC_SPECS} && ${GCC_SPECS} != ${GCC_SPECS/hardened/} ]]
}
has_m32 () 
{ 
    [ "$(tc-arch)" = "amd64" ] && has_multilib_profile && return 0;
    local temp=$(emktemp);
    echo "int main() { return(0); }" > "${temp}".c;
    MY_CC=$(tc-getCC);
    ${MY_CC/ .*/} -m32 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1;
    local ret=$?;
    rm -f "${temp}".c;
    [[ ${ret} != 1 ]] && return 0;
    return 1
}
has_m64 () 
{ 
    local temp="$(emktemp)";
    echo "int main() { return(0); }" > "${temp}".c;
    MY_CC=$(tc-getCC);
    ${MY_CC/ .*/} -m64 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1;
    local ret=$?;
    rm -f "${temp}".c;
    [[ ${ret} != 1 ]] && return 0;
    return 1
}
has_multilib_profile () 
{ 
    [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
}
has_pic () 
{ 
    ewarn "has_pic: deprecated, please use gcc-specs-pie()!" 1>&2;
    [[ ${CFLAGS/-fPIC} != ${CFLAGS} || ${CFLAGS/-fpic} != ${CFLAGS} ]] || gcc-specs-pie
}
has_pie () 
{ 
    ewarn "has_pie: deprecated, please use gcc-specs-pie()!" 1>&2;
    [[ ${CFLAGS/-fPIE} != ${CFLAGS} || ${CFLAGS/-fpie} != ${CFLAGS} ]] || gcc-specs-pie
}
has_ssp () 
{ 
    ewarn "has_ssp: deprecated, please use gcc-specs-ssp()!" 1>&2;
    [[ ${CFLAGS/-fstack-protector} != ${CFLAGS} || -n $(echo | $(tc-getCC) ${CFLAGS} -E -dM - | grep __SSP__) ]] || gcc-specs-ssp
}
has_ssp_all () 
{ 
    ewarn "has_ssp_all: deprecated, please use gcc-specs-ssp()!" 1>&2;
    [[ ${CFLAGS/-fstack-protector-all} != ${CFLAGS} || -n $(echo | $(tc-getCC) ${CFLAGS} -E -dM - | grep __SSP_ALL__) ]] || gcc-specs-ssp-all
}
is-flag () 
{ 
    is-flagq "$@" && echo true
}
is-flagq () 
{ 
    [[ -n $2 ]] && die "Usage: is-flag ";
    _is_flagq CFLAGS $1 || _is_flagq CXXFLAGS $1
}
is-ldflag () 
{ 
    is-ldflagq "$@" && echo true
}
is-ldflagq () 
{ 
    [[ -n $2 ]] && die "Usage: is-ldflag ";
    _is_flagq LDFLAGS $1
}
is-login-disabled () 
{ 
    shell=$(egetshell "$1");
    case ${shell} in 
        /bin/false | /usr/bin/false | /sbin/nologin | /usr/sbin/nologin)
            return 0
        ;;
        *)
            return 1
        ;;
    esac
}
is_final_abi () 
{ 
    has_multilib_profile || return 0;
    local ALL_ABIS=$(get_install_abis);
    local LAST_ABI=${ALL_ABIS/* /};
    [[ ${LAST_ABI} == ${ABI} ]]
}
make_desktop_entry () 
{ 
    [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1;
    local exec=${1};
    local name=${2:-${PN}};
    local icon=${3:-${PN}};
    local type=${4};
    local path=${5};
    if [[ -z ${type} ]]; then
        local catmaj=${CATEGORY%%-*};
        local catmin=${CATEGORY##*-};
        case ${catmaj} in 
            app)
                case ${catmin} in 
                    accessibility)
                        type=Accessibility
                    ;;
                    admin)
                        type=System
                    ;;
                    antivirus)
                        type=System
                    ;;
                    arch)
                        type=Archiving
                    ;;
                    backup)
                        type=Archiving
                    ;;
                    cdr)
                        type=DiscBurning
                    ;;
                    dicts)
                        type=Dictionary
                    ;;
                    doc)
                        type=Documentation
                    ;;
                    editors)
                        type=TextEditor
                    ;;
                    emacs)
                        type=TextEditor
                    ;;
                    emulation)
                        type=Emulator
                    ;;
                    laptop)
                        type=HardwareSettings
                    ;;
                    office)
                        type=Office
                    ;;
                    pda)
                        type=PDA
                    ;;
                    vim)
                        type=TextEditor
                    ;;
                    xemacs)
                        type=TextEditor
                    ;;
                    *)
                        type=
                    ;;
                esac
            ;;
            dev)
                type="Development"
            ;;
            games)
                case ${catmin} in 
                    action | fps)
                        type=ActionGame
                    ;;
                    arcade)
                        type=ArcadeGame
                    ;;
                    board)
                        type=BoardGame
                    ;;
                    emulation)
                        type=Emulator
                    ;;
                    kids)
                        type=KidsGame
                    ;;
                    puzzle)
                        type=LogicGame
                    ;;
                    roguelike)
                        type=RolePlaying
                    ;;
                    rpg)
                        type=RolePlaying
                    ;;
                    simulation)
                        type=Simulation
                    ;;
                    sports)
                        type=SportsGame
                    ;;
                    strategy)
                        type=StrategyGame
                    ;;
                    *)
                        type=
                    ;;
                esac;
                type="Game;${type}"
            ;;
            gnome)
                type="Gnome;GTK"
            ;;
            kde)
                type="KDE;Qt"
            ;;
            mail)
                type="Network;Email"
            ;;
            media)
                case ${catmin} in 
                    gfx)
                        type=Graphics
                    ;;
                    radio)
                        type=Tuner
                    ;;
                    sound)
                        type=Audio
                    ;;
                    tv)
                        type=TV
                    ;;
                    video)
                        type=Video
                    ;;
                    *)
                        type=
                    ;;
                esac;
                type="AudioVideo;${type}"
            ;;
            net)
                case ${catmin} in 
                    dialup)
                        type=Dialup
                    ;;
                    ftp)
                        type=FileTransfer
                    ;;
                    im)
                        type=InstantMessaging
                    ;;
                    irc)
                        type=IRCClient
                    ;;
                    mail)
                        type=Email
                    ;;
                    news)
                        type=News
                    ;;
                    nntp)
                        type=News
                    ;;
                    p2p)
                        type=FileTransfer
                    ;;
                    *)
                        type=
                    ;;
                esac;
                type="Network;${type}"
            ;;
            sci)
                case ${catmin} in 
                    astro*)
                        type=Astronomy
                    ;;
                    bio*)
                        type=Biology
                    ;;
                    calc*)
                        type=Calculator
                    ;;
                    chem*)
                        type=Chemistry
                    ;;
                    elec*)
                        type=Electronics
                    ;;
                    geo*)
                        type=Geology
                    ;;
                    math*)
                        type=Math
                    ;;
                    physics)
                        type=Physics
                    ;;
                    visual*)
                        type=DataVisualization
                    ;;
                    *)
                        type=
                    ;;
                esac;
                type="Science;${type}"
            ;;
            sys)
                type="System"
            ;;
            www)
                case ${catmin} in 
                    client)
                        type=WebBrowser
                    ;;
                    *)
                        type=
                    ;;
                esac;
                type="Network"
            ;;
            *)
                type=
            ;;
        esac;
    fi;
    if [ "${SLOT}" == "0" ]; then
        local desktop_name="${PN}";
    else
        local desktop_name="${PN}-${SLOT}";
    fi;
    local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop";
    cat > "${desktop}"  <<-EOF
[Desktop Entry]
Version=1.0
Name=${name}
Type=Application
Comment=${DESCRIPTION}
Exec=${exec}
TryExec=${exec%% *}
Icon=${icon}
Categories=${type};
EOF

    [[ -n ${path} ]] && echo "Path=${path}" >> "${desktop}";
    ( insinto /usr/share/applications;
    doins "${desktop}" )
}
make_session_desktop () 
{ 
    [[ -z $1 ]] && eerror "make_session_desktop: You must specify the title" && return 1;
    [[ -z $2 ]] && eerror "make_session_desktop: You must specify the command" && return 1;
    local title=$1;
    local command=$2;
    local desktop=${T}/${wm}.desktop;
    cat > "${desktop}"  <<-EOF
[Desktop Entry]
Name=${title}
Comment=This session logs you into ${title}
Exec=${command}
TryExec=${command}
Type=Application
EOF

    ( insinto /usr/share/xsessions;
    doins "${desktop}" )
}
make_wrapper () 
{ 
    local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5;
    local tmpwrapper=$(emktemp);
    cat > "${tmpwrapper}"  < [more libraries to preserve]";
    has preserve-libs ${FEATURES} && return 0;
    local lib dir;
    for lib in "$@";
    do
        [[ -e ${ROOT}/${lib} ]] || continue;
        dir=${lib%/*};
        dodir ${dir} || die "dodir ${dir} failed";
        cp "${ROOT}"/${lib} "${D}"/${lib} || die "cp ${lib} failed";
        touch "${D}"/${lib};
    done
}
preserve_old_lib_notify () 
{ 
    if [[ ${EBUILD_PHASE} != "postinst" ]]; then
        eerror "preserve_old_lib_notify() must be called from pkg_postinst() only";
        die "Invalid preserve_old_lib_notify() usage";
    fi;
    has preserve-libs ${FEATURES} && return 0;
    local lib notice=0;
    for lib in "$@";
    do
        [[ -e ${ROOT}/${lib} ]] || continue;
        if [[ ${notice} -eq 0 ]]; then
            notice=1;
            ewarn "Old versions of installed libraries were detected on your system.";
            ewarn "In order to avoid breaking packages that depend on these old libs,";
            ewarn "the libraries are not being removed.  You need to run revdep-rebuild";
            ewarn "in order to remove these old dependencies.  If you do not have this";
            ewarn "helper program, simply emerge the 'gentoolkit' package.";
            ewarn;
        fi;
        ewarn "  # revdep-rebuild --library ${lib##*/}";
    done;
    if [[ ${notice} -eq 1 ]]; then
        ewarn;
        ewarn "Once you've finished running revdep-rebuild, it should be safe to";
        ewarn "delete the old libraries.  Here is a copy & paste for the lazy:";
        for lib in "$@";
        do
            ewarn "  # rm '${lib}'";
        done;
    fi
}
raw-ldflags () 
{ 
    local x input="$@";
    [[ -z ${input} ]] && input=${LDFLAGS};
    set --;
    for x in ${input};
    do
        x=${x#-Wl,};
        set -- "$@" ${x//,/ };
    done;
    echo "$@"
}
replace-cpu-flags () 
{ 
    local newcpu="$#";
    newcpu="${!newcpu}";
    while [ $# -gt 1 ]; do
        replace-flags "-march=${1}" "-march=${newcpu}";
        replace-flags "-mcpu=${1}" "-mcpu=${newcpu}";
        replace-flags "-mtune=${1}" "-mtune=${newcpu}";
        shift;
    done;
    return 0
}
replace-flags () 
{ 
    [[ $# != 2 ]] && echo && eerror "Usage: replace-flags  " && die "replace-flags takes 2 arguments, not $#";
    local f fset;
    declare -a new_CFLAGS new_CXXFLAGS;
    for fset in CFLAGS CXXFLAGS;
    do
        for f in ${!fset};
        do
            [[ ${f} == ${1} ]] && f=${2};
            eval new_${fset}\[\${\#new_${fset}\[@]}]=\${f};
        done;
        eval export ${fset}=\${new_${fset}\[*]};
    done;
    return 0
}
replace-sparc64-flags () 
{ 
    local SPARC64_CPUS="ultrasparc3 ultrasparc v9";
    if [ "${CFLAGS/mtune}" != "${CFLAGS}" ]; then
        for x in ${SPARC64_CPUS};
        do
            CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8}";
        done;
    else
        for x in ${SPARC64_CPUS};
        do
            CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
        done;
    fi;
    if [ "${CXXFLAGS/mtune}" != "${CXXFLAGS}" ]; then
        for x in ${SPARC64_CPUS};
        do
            CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8}";
        done;
    else
        for x in ${SPARC64_CPUS};
        do
            CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}";
        done;
    fi;
    export CFLAGS CXXFLAGS
}
seq () 
{ 
    local p=$(type -P seq);
    case $# in 
        1)
            min=1 max=$1 step=1
        ;;
        2)
            min=$1 max=$2 step=1
        ;;
        3)
            min=$1 max=$3 step=$2
        ;;
        *)
            die "seq called with wrong number of arguments"
        ;;
    esac;
    if [[ -z ${p} ]]; then
        local reps;
        if [[ ${step} != 0 ]]; then
            reps=$(( ($max-$min) / $step +1 ));
        else
            reps=0;
        fi;
        jot $reps $min $max $step;
    else
        "${p}" $min $step $max;
    fi
}
setup-allowed-flags () 
{ 
    if [[ -z ${ALLOWED_FLAGS} ]]; then
        export ALLOWED_FLAGS="-pipe";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -O -O0 -O1 -O2 -mcpu -march -mtune";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fstack-protector -fstack-protector-all";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fbounds-checking";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-PIE -fno-pie -fno-unit-at-a-time";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident";
        export ALLOWED_FLAGS="${ALLOWED_FLAGS} -W* -w";
    fi;
    ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-stack-protector -fno-stack-protector-all 		-fno-strict-aliasing -fno-bounds-checking";
    ALLOWED_FLAGS="${ALLOWED_FLAGS} -mregparm -mno-app-regs -mapp-regs 		-mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow 		-mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 		-msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu 		-mieee -mieee-with-inexact -mschedule 		-mtls-direct-seg-refs -mno-tls-direct-seg-refs 		-mflat -mno-flat -mno-faster-structs -mfaster-structs 		-m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC 		-mlive-g0 -mcmodel -mstack-bias -mno-stack-bias 		-msecure-plt -D*";
    export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks";
    return 0
}
src_compile () 
{ 
    local my_conf;
    export LC_ALL=C;
    tc-export CC CXX;
    econf --bindir=/usr/bin --datadir="${S}" --with-system-freetype2 --with-freetype2-include=/usr/include --with-system-zlib --with-system-pnglib --without-texinfo --without-dialog --without-texi2html --disable-multiplatform --with-epsfwin --with-mftalkwin --with-regiswin --with-tektronixwin --with-unitermwin --with-ps=gs --without-psutils --without-sam2p --without-t1utils --enable-ipc --without-etex --with-xetex --without-dvipng --without-dvipdfm --without-dvipdfmx --without-xdvipdfmx --without-lcdf-typetools --without-pdfopen --without-ps2eps --without-detex --without-ttf2pk --without-tex4htk --without-cjkutils --without-xdvik --without-oxdvik --enable-shared $(use_with X x) ${my_conf} || die "econf failed";
    cd "${S}/libs/icu-xetex";
    emake -j1 texmf=${TEXMF_PATH:-/usr/share/texmf} || die "emake of icu-xetex failed";
    cd "${S}";
    emake texmf=${TEXMF_PATH:-/usr/share/texmf} || die "emake failed";
    for i in `egrep '^(Mixed)?Map' "texmf/web2c/updmap.cfg" | sed 's@.* @@'`;
    do
        texlive-common_is_file_present_in_texmf "$i" || echo "$i";
    done > "${T}/updmap_update";
    { 
        sed 's@/@\\/@g; s@^@/^MixedMap[     ]*@; s@$@$/s/^/#! /@' < "${T}/updmap_update";
        sed 's@/@\\/@g; s@^@/^Map[  ]*@; s@$@$/s/^/#! /@' < "${T}/updmap_update"
    } > "${T}/updmap_update2";
    sed -f "${T}/updmap_update2" "texmf/web2c/updmap.cfg" > "${T}/updmap_update3" && cat "${T}/updmap_update3" > "texmf/web2c/updmap.cfg"
}
src_install () 
{ 
    insinto /usr/share;
    doins -r texmf texmf-dist;
    dodir ${TEXMF_PATH:-/usr/share/texmf}/web2c;
    einstall bindir="${D}/usr/bin" texmf="${D}${TEXMF_PATH:-/usr/share/texmf}" || die "einstall failed";
    dosbin "${FILESDIR}/texmf-update";
    use X || dosym mf /usr/bin/mf-nowin;
    docinto texk;
    cd "${S}/texk";
    dodoc ChangeLog README;
    docinto kpathesa;
    cd "${S}/texk/kpathsea";
    dodoc BUGS ChangeLog NEWS PROJECTS README;
    docinto dviljk;
    cd "${S}/texk/dviljk";
    dodoc ChangeLog README NEWS;
    docinto dvipsk;
    cd "${S}/texk/dvipsk";
    dodoc ChangeLog README;
    docinto makeindexk;
    cd "${S}/texk/makeindexk";
    dodoc ChangeLog NEWS NOTES README;
    docinto ps2pkm;
    cd "${S}/texk/ps2pkm";
    dodoc ChangeLog README README.14m;
    docinto web2c;
    cd "${S}/texk/web2c";
    dodoc ChangeLog NEWS PROJECTS README;
    use doc || rm -rf "${D}/usr/share/texmf/doc";
    use doc || rm -rf "${D}/usr/share/texmf-dist/doc";
    dodir /var/cache/fonts;
    dodir /etc/env.d;
    echo 'CONFIG_PROTECT_MASK="/etc/texmf/web2c"' > "${D}/etc/env.d/98texlive";
    keepdir /etc/texmf/web2c;
    dodir /etc/texmf/{updmap.d,fmtutil.d,texmf.d};
    rm -f "${D}${TEXMF_PATH}/web2c/fmtutil.cnf";
    rm -f "${D}${TEXMF_PATH}/web2c/texmf.cnf";
    insinto /etc/texmf/texmf.d;
    doins "${WORKDIR}/texmf.d/"*.cnf;
    mv "${D}${TEXMF_PATH}/web2c/updmap.cfg" "${D}/etc/texmf/updmap.d/00updmap.cfg" || die "moving updmap.cfg failed";
    keepdir /etc/texmf/dvips/config;
    dodir /etc/texmf/dvips.d;
    mv "${D}${TEXMF_PATH}/dvips/config/config.ps" "${D}/etc/texmf/dvips.d/00${PN}-config.ps" || die "moving config.ps failed";
    cd "${S}";
    for i in texmf/fmtutil/format*.cnf;
    do
        [ -f "${i}" ] && etexlinks "${i}";
    done;
    texlive-common_handle_config_files;
    keepdir /usr/share/texmf-site;
    dosym /etc/texmf/web2c/fmtutil.cnf ${TEXMF_PATH}/web2c/fmtutil.cnf;
    dosym /etc/texmf/web2c/texmf.cnf ${TEXMF_PATH}/web2c/texmf.cnf;
    dosym /etc/texmf/web2c/updmap.cfg ${TEXMF_PATH}/web2c/updmap.cfg;
    dosym /etc/texmf/dvips/config/config.ps ${TEXMF_PATH}/dvips/config/config.ps;
    dosym tex /usr/bin/virtex;
    dosym pdftex /usr/bin/pdfvirtex
}
src_test () 
{ 
    ewarn "Due to modular layout of texlive ebuilds,";
    ewarn "It would not make much sense to use tests into the ebuild";
    ewarn "And tests would fail anyway";
    ewarn "Alternatively you can try to compile any tex file";
    ewarn "Tex warnings should be considered as errors and reported";
    ewarn "You can also run fmtutil-sys --all and check for errors/warnings there"
}
src_unpack () 
{ 
    unpack ${A};
    cd "${S}";
    EPATCH_SUFFIX="patch" epatch "${WORKDIR}/patches";
    sed -i -e "/mktexlsr/,+3d" -e "s/\(updmap-sys\)/\1 --nohash/" Makefile.in || die "sed failed";
    elibtoolize;
    cd libs/teckit;
    eautoreconf;
    cp -f "${WORKDIR}/${P}-updated-config.ps" "${S}/texmf/dvips/config/config.ps"
}
strip-flags () 
{ 
    local x y flag NEW_CFLAGS NEW_CXXFLAGS;
    setup-allowed-flags;
    local NEW_CFLAGS="";
    local NEW_CXXFLAGS="";
    if has ~$(tc-arch) ${ACCEPT_KEYWORDS}; then
        ALLOWED_FLAGS="${ALLOWED_FLAGS} ${UNSTABLE_FLAGS}";
    fi;
    set -f;
    for x in ${CFLAGS};
    do
        for y in ${ALLOWED_FLAGS};
        do
            flag=${x%%=*};
            if [ "${flag%%${y}}" = "" ]; then
                NEW_CFLAGS="${NEW_CFLAGS} ${x}";
                break;
            fi;
        done;
    done;
    for x in ${CXXFLAGS};
    do
        for y in ${ALLOWED_FLAGS};
        do
            flag=${x%%=*};
            if [ "${flag%%${y}}" = "" ]; then
                NEW_CXXFLAGS="${NEW_CXXFLAGS} ${x}";
                break;
            fi;
        done;
    done;
    if [ "${CFLAGS/-O}" != "${CFLAGS}" -a "${NEW_CFLAGS/-O}" = "${NEW_CFLAGS}" ]; then
        NEW_CFLAGS="${NEW_CFLAGS} -O2";
    fi;
    if [ "${CXXFLAGS/-O}" != "${CXXFLAGS}" -a "${NEW_CXXFLAGS/-O}" = "${NEW_CXXFLAGS}" ]; then
        NEW_CXXFLAGS="${NEW_CXXFLAGS} -O2";
    fi;
    set +f;
    export CFLAGS="${NEW_CFLAGS}";
    export CXXFLAGS="${NEW_CXXFLAGS}";
    return 0
}
strip-linguas () 
{ 
    local ls newls nols;
    if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then
        local op=$1;
        shift;
        ls=$(find "$1" -name '*.po' -exec basename {} .po \;);
        shift;
        local d f;
        for d in "$@";
        do
            if [[ ${op} == "-u" ]]; then
                newls=${ls};
            else
                newls="";
            fi;
            for f in $(find "$d" -name '*.po' -exec basename {} .po \;);
            do
                if [[ ${op} == "-i" ]]; then
                    hasq ${f} ${ls} && newls="${newls} ${f}";
                else
                    hasq ${f} ${ls} || newls="${newls} ${f}";
                fi;
            done;
            ls=${newls};
        done;
    else
        ls="$@";
    fi;
    nols="";
    newls="";
    for f in ${LINGUAS};
    do
        if hasq ${f} ${ls}; then
            newls="${newls} ${f}";
        else
            nols="${nols} ${f}";
        fi;
    done;
    [[ -n ${nols} ]] && ewarn "Sorry, but ${PN} does not support the LINGUAs:" ${nols};
    export LINGUAS=${newls:1}
}
strip-unsupported-flags () 
{ 
    export CFLAGS=$(test-flags-CC ${CFLAGS});
    export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS})
}
tc-arch () 
{ 
    tc-ninja_magic_to_arch portage "$@"
}
tc-arch-kernel () 
{ 
    tc-ninja_magic_to_arch kern "$@"
}
tc-endian () 
{ 
    local host=$1;
    [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
    host=${host%%-*};
    case ${host} in 
        alpha*)
            echo big
        ;;
        arm*b*)
            echo big
        ;;
        arm*)
            echo little
        ;;
        cris*)
            echo little
        ;;
        hppa*)
            echo big
        ;;
        i?86*)
            echo little
        ;;
        ia64*)
            echo little
        ;;
        m68*)
            echo big
        ;;
        mips*l*)
            echo little
        ;;
        mips*)
            echo big
        ;;
        powerpc*)
            echo big
        ;;
        s390*)
            echo big
        ;;
        sh*b*)
            echo big
        ;;
        sh*)
            echo little
        ;;
        sparc*)
            echo big
        ;;
        x86_64*)
            echo little
        ;;
        *)
            echo wtf
        ;;
    esac
}
tc-export () 
{ 
    local var;
    for var in "$@";
    do
        eval tc-get${var} > /dev/null;
    done
}
tc-getAR () 
{ 
    tc-getPROG AR ar "$@"
}
tc-getAS () 
{ 
    tc-getPROG AS as "$@"
}
tc-getBUILD_CC () 
{ 
    local v;
    for v in CC_FOR_BUILD BUILD_CC HOSTCC;
    do
        if [[ -n ${!v} ]]; then
            export BUILD_CC=${!v};
            echo "${!v}";
            return 0;
        fi;
    done;
    local search=;
    if [[ -n ${CBUILD} ]]; then
        search=$(type -p ${CBUILD}-gcc);
        search=${search##*/};
    fi;
    search=${search:-gcc};
    export BUILD_CC=${search};
    echo "${search}"
}
tc-getCC () 
{ 
    tc-getPROG CC gcc "$@"
}
tc-getCPP () 
{ 
    tc-getPROG CPP cpp "$@"
}
tc-getCXX () 
{ 
    tc-getPROG CXX g++ "$@"
}
tc-getF77 () 
{ 
    tc-getPROG F77 f77 "$@"
}
tc-getF90 () 
{ 
    tc-getPROG F90 gfortran "$@"
}
tc-getFORTRAN () 
{ 
    tc-getPROG FORTRAN gfortran "$@"
}
tc-getGCJ () 
{ 
    tc-getPROG GCJ gcj "$@"
}
tc-getLD () 
{ 
    tc-getPROG LD ld "$@"
}
tc-getNM () 
{ 
    tc-getPROG NM nm "$@"
}
tc-getPROG () 
{ 
    local var=$1;
    local prog=$2;
    if [[ -n ${!var} ]]; then
        echo "${!var}";
        return 0;
    fi;
    local search=;
    [[ -n $3 ]] && search=$(type -p "$3-${prog}");
    [[ -z ${search} && -n ${CHOST} ]] && search=$(type -p "${CHOST}-${prog}");
    [[ -n ${search} ]] && prog=${search##*/};
    export ${var}=${prog};
    echo "${!var}"
}
tc-getRANLIB () 
{ 
    tc-getPROG RANLIB ranlib "$@"
}
tc-getSTRIP () 
{ 
    tc-getPROG STRIP strip "$@"
}
tc-is-cross-compiler () 
{ 
    return $([[ ${CBUILD:-${CHOST}} != ${CHOST} ]])
}
tc-is-softfloat () 
{ 
    case ${CTARGET} in 
        bfin* | h8300*)
            echo "only"
        ;;
        *)
            [[ ${CTARGET//_/-} == *-softfloat-* ]] && echo "yes" || echo "no"
        ;;
    esac
}
tc-ninja_magic_to_arch () 
{ 
    function ninj () 
    { 
        [[ ${type} == "kern" ]] && echo $1 || echo $2
    };
    local type=$1;
    local host=$2;
    [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
    case ${host} in 
        alpha*)
            echo alpha
        ;;
        arm*)
            echo arm
        ;;
        avr*)
            ninj avr32 avr
        ;;
        bfin*)
            ninj blackfin bfin
        ;;
        cris*)
            echo cris
        ;;
        hppa*)
            ninj parisc hppa
        ;;
        i?86*)
            if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -lt $(KV_to_int 2.6.24) ]]; then
                echo i386;
            else
                echo x86;
            fi
        ;;
        ia64*)
            echo ia64
        ;;
        m68*)
            echo m68k
        ;;
        mips*)
            echo mips
        ;;
        nios2*)
            echo nios2
        ;;
        nios*)
            echo nios
        ;;
        powerpc*)
            if [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.16) ]] && [[ ${type} == "kern" ]]; then
                echo powerpc;
            else
                if [[ $(KV_to_int ${KV}) -eq $(KV_to_int 2.6.15) ]] && [[ ${type} == "kern" ]]; then
                    if [[ ${host} == powerpc64* ]] || [[ ${PROFILE_ARCH} == "ppc64" ]]; then
                        echo powerpc;
                    else
                        echo ppc;
                    fi;
                else
                    if [[ ${host} == powerpc64* ]]; then
                        echo ppc64;
                    else
                        if [[ ${PROFILE_ARCH} == "ppc64" ]]; then
                            ninj ppc64 ppc;
                        else
                            echo ppc;
                        fi;
                    fi;
                fi;
            fi
        ;;
        s390*)
            echo s390
        ;;
        sh64*)
            ninj sh64 sh
        ;;
        sh*)
            echo sh
        ;;
        sparc64*)
            ninj sparc64 sparc
        ;;
        sparc*)
            [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc
        ;;
        vax*)
            echo vax
        ;;
        x86_64*)
            if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.24) ]]; then
                echo x86;
            else
                ninj x86_64 amd64;
            fi
        ;;
        *)
            echo unknown
        ;;
    esac
}
test-flag-CC () 
{ 
    test-flag-PROG "CC" "$1"
}
test-flag-CXX () 
{ 
    test-flag-PROG "CXX" "$1"
}
test-flag-PROG () 
{ 
    local comp=$1;
    local flags="$2";
    [[ -z ${comp} || -z ${flags} ]] && return 1;
    local PROG=$(tc-get${comp});
    ${PROG} ${flags} -S -o /dev/null -xc /dev/null > /dev/null 2>&1
}
test-flags () 
{ 
    test-flags-CC "$@"
}
test-flags-CC () 
{ 
    test-flags-PROG "CC" "$@"
}
test-flags-CXX () 
{ 
    test-flags-PROG "CXX" "$@"
}
test-flags-PROG () 
{ 
    local comp=$1;
    local flags;
    local x;
    shift;
    [[ -z ${comp} ]] && return 1;
    x="";
    for x in "$@";
    do
        test-flag-${comp} "${x}" && flags="${flags}${flags:+ }${x}";
    done;
    echo "${flags}";
    [[ -n ${flags} ]]
}
test_flag () 
{ 
    ewarn "test_flag: deprecated, please use test-flags()!" 1>&2;
    test-flags-CC "$@"
}
test_version_info () 
{ 
    if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then
        return 0;
    else
        return 1;
    fi
}
texlive-common_do_symlinks () 
{ 
    while [ $# != 0 ]; do
        case $1 in 
            cont-?? | metafun | mptopdf)
                elog "Symlink $1 skipped (special case)"
            ;;
            *)
                if [ $1 = $2 ]; then
                    elog "Symlink $1 -> $2 skipped";
                else
                    if [ -e "${D}/usr/bin/$1" ]; then
                        elog "Symlink $1 skipped (file exists)";
                    else
                        elog "Making symlink from $1 to $2";
                        dosym $2 /usr/bin/$1;
                    fi;
                fi
            ;;
        esac;
        shift;
        shift;
    done
}
texlive-common_handle_config_files () 
{ 
    cd "${D}${TEXMF_PATH}";
    for f in $(find . -name '*.cnf' -o -name '*.cfg' -type f | sed -e "s:\./::g");
    do
        if [ "${f#*config}" != "${f}" ]; then
            continue;
        fi;
        dodir /etc/texmf/$(dirname ${f}).d;
        mv "${D}/${TEXMF_PATH}/${f}" "${D}/etc/texmf/$(dirname ${f}).d" || die "mv ${f} failed.";
        dosym /etc/texmf/$(dirname ${f}).d/$(basename ${f}) ${TEXMF_PATH}/${f};
    done
}
texlive-common_is_file_present_in_texmf () 
{ 
    local mark="${T}/$1.found";
    find texmf -name $1 -exec touch "${mark}" \;;
    find texmf-dist -name $1 -exec touch "${mark}" \;;
    [ -f "${mark}" ]
}
treecopy () 
{ 
    dest=${!#};
    files_count=$#;
    while (( $# > 1 )); do
        dirstruct=$(dirname "$1");
        mkdir -p "${dest}/${dirstruct}";
        cp -pPR "$1" "${dest}/${dirstruct}";
        shift;
    done
}
uclibctoolize () 
{ 
    ewarn "uclibctoolize() is deprecated, please just use elibtoolize()!";
    elibtoolize
}
unpack_makeself () 
{ 
    local src_input=${1:-${A}};
    local src=$(find_unpackable_file "${src_input}");
    local skip=$2;
    local exe=$3;
    [[ -z ${src} ]] && die "Could not locate source for '${src_input}'";
    local shrtsrc=$(basename "${src}");
    echo ">>> Unpacking ${shrtsrc} to ${PWD}";
    if [[ -z ${skip} ]]; then
        local ver=$(grep -a '#.*Makeself' "${src}" | awk '{print $NF}');
        local skip=0;
        exe=tail;
        case ${ver} in 
            1.5.* | 1.6.0-nv)
                skip=$(grep -a ^skip= "${src}" | cut -d= -f2)
            ;;
            2.0 | 2.0.1)
                skip=$(grep -a ^'	'tail "${src}" | awk '{print $2}' | cut -b2-)
            ;;
            2.1.1)
                skip=$(grep -a ^offset= "${src}" | awk '{print $2}' | cut -b2-);
                let skip="skip + 1"
            ;;
            2.1.2)
                skip=$(grep -a ^offset= "${src}" | awk '{print $3}' | head -n 1);
                let skip="skip + 1"
            ;;
            2.1.3)
                skip=`grep -a ^offset= "${src}" | awk '{print $3}'`;
                let skip="skip + 1"
            ;;
            2.1.4 | 2.1.5)
                skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1);
                skip=$(head -n ${skip} "${src}" | wc -c);
                exe="dd"
            ;;
            *)
                eerror "I'm sorry, but I was unable to support the Makeself file.";
                eerror "The version I detected was '${ver}'.";
                eerror "Please file a bug about the file ${shrtsrc} at";
                eerror "http://bugs.gentoo.org/ so that support can be added.";
                die "makeself version '${ver}' not supported"
            ;;
        esac;
        debug-print "Detected Makeself version ${ver} ... using ${skip} as offset";
    fi;
    case ${exe} in 
        tail)
            exe="tail -n +${skip} '${src}'"
        ;;
        dd)
            exe="dd ibs=${skip} skip=1 obs=1024 conv=sync if='${src}'"
        ;;
        *)
            die "makeself cant handle exe '${exe}'"
        ;;
    esac;
    local tmpfile=$(emktemp);
    eval ${exe} 2> /dev/null | head -c 512 > "${tmpfile}";
    local filetype=$(file -b "${tmpfile}");
    case ${filetype} in 
        *tar\ archive*)
            eval ${exe} | tar --no-same-owner -xf -
        ;;
        bzip2*)
            eval ${exe} | bzip2 -dc | tar --no-same-owner -xf -
        ;;
        gzip*)
            eval ${exe} | tar --no-same-owner -xzf -
        ;;
        compress*)
            eval ${exe} | gunzip | tar --no-same-owner -xf -
        ;;
        *)
            eerror "Unknown filetype \"${filetype}\" ?";
            false
        ;;
    esac;
    _pipestatus="${PIPESTATUS[*]}";
    [[ "${_pipestatus// /}" -eq 0 ]] || die "failure unpacking (${filetype}) makeself ${shrtsrc} ('${ver}' +${skip})"
}
unpack_pdv () 
{ 
    local src=$(find_unpackable_file "$1");
    local sizeoff_t=$2;
    [[ -z ${src} ]] && die "Could not locate source for '$1'";
    [[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this pdv :(";
    local shrtsrc=$(basename "${src}");
    echo ">>> Unpacking ${shrtsrc} to ${PWD}";
    local metaskip=$(tail -c ${sizeoff_t} "${src}" | hexdump -e \"%i\");
    local tailskip=$(tail -c $((${sizeoff_t}*2)) "${src}" | head -c ${sizeoff_t} | hexdump -e \"%i\");
    local metafile=$(emktemp);
    tail -c +$((${metaskip}+1)) "${src}" > "${metafile}";
    local datafile=$(tail -c +$((${metaskip}+1)) "${src}" | strings | head -n 1);
    datafile=$(basename "${datafile}");
    local tmpfile=$(emktemp);
    tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c 512 > ${tmpfile};
    local iscompressed=$(file -b "${tmpfile}");
    if [[ ${iscompressed:0:8} == "compress" ]]; then
        iscompressed=1;
        mv ${tmpfile}{,.Z};
        gunzip ${tmpfile};
    else
        iscompressed=0;
    fi;
    local istar=$(file -b "${tmpfile}");
    if [[ ${istar:0:9} == "POSIX tar" ]]; then
        istar=1;
    else
        istar=0;
    fi;
    if [ ${iscompressed} -eq 1 ]; then
        if [ ${istar} -eq 1 ]; then
            tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar -xzf -;
        else
            tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | gzip -dc > ${datafile};
        fi;
    else
        if [ ${istar} -eq 1 ]; then
            tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar --no-same-owner -xf -;
        else
            tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) > ${datafile};
        fi;
    fi;
    true
}
validate_desktop_entries () 
{ 
    if [[ -x /usr/bin/desktop-file-validate ]]; then
        einfo "Checking desktop entry validity";
        local directories="";
        for d in /usr/share/applications $@;
        do
            [[ -d ${D}${d} ]] && directories="${directories} ${D}${d}";
        done;
        if [[ -n ${directories} ]]; then
            for FILE in $(find ${directories} -name "*\.desktop" 							-not -path '*.hidden*' | sort -u 2>/dev/null);
            do
                local temp=$(desktop-file-validate ${FILE} | grep -v "warning:" | 								sed -e "s|error: ||" -e "s|${FILE}:|--|g" );
                [[ -n $temp ]] && elog ${temp/--/${FILE/${D}/}:};
            done;
        fi;
        echo "";
    else
        einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo.";
    fi
}
declare -x ABI="ppc64"
declare -x ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mulaw multi null plug rate route share shm softvol"
declare -x APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias"
declare -x ARCH="ppc64"
declare -x CBUILD="powerpc64-unknown-linux-gnu"
declare -x CDEFINE_default="__unix__"
declare -x CDEFINE_ppc="!__powerpc64__"
declare -x CDEFINE_ppc64="__powerpc64__"
declare -x CFLAGS="-O2 -pipe"
declare -x CFLAGS_default=""
declare -x CFLAGS_ppc="-m32"
declare -x CFLAGS_ppc64="-m64"
declare -x CHOST="powerpc64-unknown-linux-gnu"
declare -x CHOST_default="powerpc64-unknown-linux-gnu"
declare -x CHOST_ppc="powerpc-unknown-linux-gnu"
declare -x CHOST_ppc64="powerpc64-unknown-linux-gnu"
declare -x CTARGET_default="powerpc64-unknown-linux-gnu"
declare -x CVS_RSH="ssh"
declare -x CXXFLAGS="-O2 -pipe"
declare -x DCCC_PATH="/usr/lib/distcc/bin"
declare -x DEFAULT_ABI="ppc64"
declare -x DESTTREE="/usr"
declare -x DIROPTIONS="-m0755"
declare -x ELIBC="glibc"
declare -x ELT_APPLIED_PATCHES=""
declare -x ELT_LTMAIN_SH="/var/tmp/portage/app-text/texlive-core-2007-r12/work/texk/xdvipdfmx/ltmain.sh"
declare -x EXEOPTIONS="-m0755"
declare -x FEATURES="ccache distcc distlocks metadata-transfer parallel-fetch sandbox sfperms strict unmerge-orphans userfetch"
declare -x GCC_SPECS=""
declare -x GDK_USE_XFT="1"
declare -x INHERITED="toolchain-funcs portability flag-o-matic multilib libtool texlive-common autotools eutils"
declare -x INPUT_DEVICES="keyboard mouse evdev"
declare -x INSDESTTREE=""
declare -x INSOPTIONS="-m0644"
declare -x IUSE=" X doc"
declare -x KERNEL="linux"
declare -x KERNEL_ABI="ppc64"
declare -x KV="2.6.24-gentoo-r3"
declare -x LANG="en_US.utf8"
declare -x LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text"
declare -x LDFLAGS_default=""
declare -x LDFLAGS_ppc="-m elf32ppc"
declare -x LDFLAGS_ppc64="-m elf64ppc"
declare -x LIBDIR_amd64="lib64"
declare -x LIBDIR_default="lib"
declare -x LIBDIR_ppc64="lib64"
declare -x LIBOPTIONS="-m0644"
declare -x MAIL="/var/mail/root"
declare -x MAKEOPTS="-j7"
declare -x MULTILIB_ABIS="ppc64"
declare -x OPENGL_PROFILE="xorg-x11"
declare -x PROFILE_ARCH="ppc64"
declare -x PYTHONPATH="/usr/lib64/portage/pym"
declare -x RESTRICT=""
declare -x S="/var/tmp/portage/app-text/texlive-core-2007-r12/work"
declare -x SANDBOX_DENY="/etc/ld.so.preload"
declare -x SANDBOX_PREDICT=":/dev/console:/dev/random:/proc/self/maps:/usr/lib64/portage/pym:/usr/lib/python2.0/:/usr/lib/python2.1/:/usr/lib/python2.2/:/usr/lib/python2.3/:/usr/lib/python2.4/:/usr/lib/python2.5/:/usr/lib/python3.0/:/var/cache/edb/dep:/var/db/aliases.db:/var/db/ethers.db:/var/db/group.db:/var/db/hosts.db:/var/db/netgroup.db:/var/db/netmasks.db:/var/db/networks.db:/var/db/passwd.db:/var/db/protocols.db:/var/db/rpc.db:/var/db/services.db:/var/tmp/portage/app-text/texlive-core-2007-r12/homedir/.:"
declare -x SANDBOX_READ=":/:/dev/shm:/dev/stdin:/var/tmp:/var/tmp/ccache:"
declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/shm/ngpt:/dev/stderr:/dev/stdout:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/proc/self/fd:/tmp:/tmp/:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/lib/cf:/usr/lib/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/log/scrollkeeper.log:/var/tmp:/var/tmp/:/var/tmp/ccache:/var/tmp/portage/app-text/texlive-core-2007-r12/homedir/.bash_history:/var/tmp/portage/app-text/texlive-core-2007-r12/homedir/.gconfd/lock:"
declare -x SLOT="0"
declare -x SSH_CLIENT="192.168.35.68 46493 22"
declare -x SSH_CONNECTION="192.168.35.68 46493 192.168.35.64 22"
declare -x SSH_TTY="/dev/pts/0"
declare -x STAGE1_USE="nptl nptlonly unicode"
declare -x SYMLINK_LIB="yes"
declare -x USE="elibc_glibc kernel_linux ppc64 userland_GNU"
declare -x USERLAND="GNU"
declare -x VIDEO_CARDS="fbdev mach64 mga nv r128 radeon"
declare -x WANT_AUTOCONF="2.5"
declare -x WANT_AUTOMAKE="1.10"
declare -x _E_DOCDESTTREE_=""
declare -x _E_EXEDESTTREE_=""

    Source: geocities.com/trigggl/Linux_Files

               ( geocities.com/trigggl)