A=mpd-0.12.1.tar.bz2 AA=mpd-0.12.1.tar.bz2 ABI=amd64 ACCEPT_KEYWORDS=amd64 ALSA_CARDS='ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci' 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' ANT_HOME=/usr/share/ant-core ARCH=amd64 ASFLAGS_x86=--32 AUTOCLEAN=yes BAD=$'\E[31;01m' BASH=/bin/bash BASH_ARGC=([0]="1") BASH_ARGV=([0]="unpack") BASH_ENV=/etc/spork/is/not/valid/profile.env BASH_LINENO=([0]="0") BASH_SOURCE=([0]="/usr/lib/portage/bin/ebuild.sh") BASH_VERSINFO=([0]="3" [1]="2" [2]="15" [3]="1" [4]="release" [5]="x86_64-pc-linux-gnu") BASH_VERSION='3.2.15(1)-release' BRACKET=$'\E[34;01m' BUILD_PREFIX=/tmp/portage CATEGORY=media-sound CBUILD=x86_64-pc-linux-gnu CCACHE_DISABLE=1 CDEFINE_amd64=__x86_64__ CDEFINE_default=__unix__ CDEFINE_x86=__i386__ CFLAGS='-march=athlon64 -O3 -pipe -msse3 -fomit-frame-pointer -funroll-loops -fforce-mem -fforce-addr' CFLAGS_default= CFLAGS_x86='-m32 -L/emul/linux/x86/lib -L/emul/linux/x86/usr/lib' CHOST=x86_64-pc-linux-gnu CHOST_amd64=x86_64-pc-linux-gnu CHOST_default=x86_64-pc-linux-gnu CHOST_x86=i686-pc-linux-gnu CLASSPATH=. CLEAN_DELAY=5 COLS=150 CONFIG_PROTECT='/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config' CONFIG_PROTECT_MASK='/etc/env.d /etc/env.d/java/ /etc/gconf /etc/revdep-rebuild /etc/terminfo' CTARGET_default=x86_64-pc-linux-gnu CVS_RSH=ssh CXXFLAGS='-march=athlon64 -O3 -pipe -msse3 -fomit-frame-pointer -funroll-loops -fforce-mem -fforce-addr' D=/tmp/portage/media-sound/mpd-0.12.1/image/ DEFAULT_ABI=amd64 DEPEND=$'dev-util/gperf\n\t!media-sound/mpd-svn\n\t!sys-cluster/mpich2\n\tsys-libs/zlib\n\taac? ( >=media-libs/faad2-2.0_rc2 )\n\talsa? ( media-sound/alsa-utils )\n\tao? ( >=media-libs/libao-0.8.4 )\n\taudiofile? ( media-libs/audiofile )\n\tflac? ( ~media-libs/flac-1.1.2 )\n\ticecast? ( media-libs/libshout )\n\tmp3? ( media-libs/libmad\n\t media-libs/libid3tag )\n\tmikmod? ( media-libs/libmikmod )\n\tmusepack? ( media-libs/libmpcdec )\n\tpulseaudio? ( media-sound/pulseaudio )\n\tvorbis? ( media-libs/libvorbis ) ' DESCRIPTION='A development version of Music Player Daemon (mpd)' DESTTREE=/usr DIROPTIONS=-m0755 DIRSTACK=() DISTDIR=/tmp/portage/media-sound/mpd-0.12.1/distdir DOCDESTTREE= EBUILD=/usr/portage/media-sound/mpd/mpd-0.12.1.ebuild EBUILD_MASTER_PID=10877 EBUILD_PHASE=unpack EBUILD_SH_ARGS=unpack ECLASS= ECLASSDIR=/usr/portage/eclass ECLASS_DEPTH=0 ELIBC=glibc EMERGE_FROM=ebuild EMERGE_WARNING_DELAY=10 ENDCOL=$'\E[A\E[150C' 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=/tmp/portage/media-sound/mpd-0.12.1/work/patch EPATCH_SUFFIX=patch.bz2 EUID=0 EXEDESTTREE= EXEOPTIONS=-m0755 FEATURES='distlocks metadata-transfer parallel-fetch sandbox sfperms strict' FETCHCOMMAND='/usr/bin/wget -t 5 -T 60 --passive-ftp -P ${DISTDIR} ${URI}' FILESDIR=/usr/portage/media-sound/mpd/files GCC_PATH=/usr/x86_64-pc-linux-gnu/gcc-bin/3.4.6 GCC_SPECS= GDK_USE_XFT=1 GENERATION=2 GENTOO_MIRRORS='ftp://ftp.ucsb.edu/pub/mirrors/linux/gentoo/ http://ftp.snt.utwente.nl/pub/os/linux/gentoo http://gentoo.tiscali.nl/ ftp://gentoo.tiscali.nl/pub/mirror/gentoo/ http://linuv.uv.es/mirror/gentoo/ ' GOOD=$'\E[32;01m' GROUPS=([0]="0" [1]="1" [2]="2" [3]="3" [4]="4" [5]="6" [6]="10" [7]="11" [8]="20" [9]="26" [10]="27") G_BROKEN_FILENAMES=1 G_FILENAME_ENCODING=UTF-8 HILITE=$'\E[36m' HOME=/tmp/portage/media-sound/mpd-0.12.1/homedir HOMEPAGE=http://www.musicpd.org HOSTNAME=localhost HOSTTYPE=x86_64 IFS=$' \t\n' INFOPATH=/usr/share/info:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.16.1/info:/usr/share/gcc-data/x86_64-pc-linux-gnu/3.4.6/info INHERITED='multilib toolchain-funcs eutils portability' INPUT_DEVICES='keyboard mouse' INSDESTTREE= INSOPTIONS=-m0644 IUSE=' aac alsa ao audiofile flac icecast ipv6 mp3 mikmod mp3 musepack oss pulseaudio unicode vorbis' JAVAC=/opt/blackdown-jdk-1.4.2.03/bin/javac JAVA_HOME=/opt/blackdown-jdk-1.4.2.03 JDK_HOME=/opt/blackdown-jdk-1.4.2.03 KDEDIRS=/usr/kde/3.5:/usr:/usr/local KERNEL=linux KERNEL_ABI=amd64 KEYWORDS='amd64 arm hppa ppc ~ppc64 sh sparc x86 ~x86-fbsd' KV=2.6.20-gentoo-r7 LANG=ru_RU.UTF-8 LAST_E_CMD=einfo LCD_DEVICES='bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text' LC_ALL= LDFLAGS_default= LDFLAGS_x86='-m elf_i386 -L/emul/linux/x86/lib -L/emul/linux/x86/usr/lib' LD_PRELOAD=libsandbox.so LESS='-R -M --shift 5' LESSOPEN='|lesspipe.sh %s' LIBDIR_amd64=lib64 LIBDIR_default=lib LIBDIR_x86=lib32 LIBOPTIONS=-m0644 LICENSE=GPL-2 LINGUAS=ru LOGNAME=root MACHTYPE=x86_64-pc-linux-gnu MAKEOPTS=-j3 MANPATH=/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.16.1/man:/usr/share/gcc-data/x86_64-pc-linux-gnu/3.4.6/man:/opt/blackdown-jdk-1.4.2.03/man:/etc/java-config/system-vm/man/:/usr/qt/3/doc/man:/opt/vmware/workstation/man MOPREFIX=mpd MULTILIB_ABIS='amd64 x86' MULTILIB_STRICT_DENY='64-bit.*shared object' MULTILIB_STRICT_DIRS='/lib /usr/lib /usr/kde/*/lib /usr/qt/*/lib /usr/X11R6/lib' MULTILIB_STRICT_EXEMPT='(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|ROX-CLib)' NORMAL=$'\E[0m' O=/usr/portage/media-sound/mpd OCC= OCXX= OLDPWD=/tmp/portage/media-sound/mpd-0.12.1/work/mpd-0.12.1 OPENGL_PROFILE=nvidia OPTERR=1 OPTIND=1 OSTYPE=linux-gnu P=mpd-0.12.1 PAGER=/usr/bin/less PATH=/usr/local/sbin:/sbin:/usr/sbin:/usr/lib/portage/bin:/usr/local/bin:/bin:/usr/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/3.4.6:/opt/blackdown-jdk-1.4.2.03/bin:/opt/blackdown-jdk-1.4.2.03/jre/bin:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin:/opt/vmware/workstation/bin PDEPEND=' ' PF=mpd-0.12.1 PIPESTATUS=([0]="0") PKGDIR=/usr/portage/packages PKGUSE= PKG_CONFIG_PATH=/usr/qt/3/lib64/pkgconfig PKG_LOGDIR=/tmp/portage/media-sound/mpd-0.12.1/temp/logging PKG_TMPDIR=/tmp/binpkgs PN=mpd PORTAGE_ACTUAL_DISTDIR=/usr/portage/distfiles PORTAGE_ARCHLIST='ppc s390 amd64 x86 ppc64 x86-fbsd m68k arm sparc sh mips ia64 alpha ppc-macos hppa sparc-fbsd' PORTAGE_BASHRC=/etc/portage/bashrc PORTAGE_BINHOST_CHUNKSIZE=3000 PORTAGE_BIN_PATH=/usr/lib/portage/bin PORTAGE_BUILDDIR=/tmp/portage/media-sound/mpd-0.12.1 PORTAGE_COLORMAP=$'GOOD=$\'\E[32;01m\'\nWARN=$\'\E[33;01m\'\nBAD=$\'\E[31;01m\'\nHILITE=$\'\E[36m\'\nBRACKET=$\'\E[34;01m\'' PORTAGE_CONFIGROOT=/ PORTAGE_DEBUG=0 PORTAGE_DEPCACHEDIR=/var/cache/edb/dep PORTAGE_ELOG_CLASSES='log warn error' PORTAGE_ELOG_MAILFROM=portage PORTAGE_ELOG_MAILSUBJECT='[portage] ebuild log for ${PACKAGE} on ${HOST}' PORTAGE_ELOG_MAILURI=root PORTAGE_GID=250 PORTAGE_INST_GID=0 PORTAGE_INST_UID=0 PORTAGE_LOG_FILE=/tmp/portage/media-sound/mpd-0.12.1/temp/build.log PORTAGE_MASTER_PID=10741 PORTAGE_PYM_PATH=/usr/lib/portage/pym PORTAGE_RSYNC_OPTS='--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*' PORTAGE_RSYNC_RETRIES=3 PORTAGE_TMPDIR=/tmp PORTAGE_WORKDIR_MODE=0700 PORTDIR=/usr/portage PORTDIR_OVERLAY=/usr/portage/local/layman/xeffects PPID=10876 PR=r0 PRELINK_PATH_MASK=/usr/lib/gstreamer-0.10 PROFILE_PATHS=$'/usr/portage/profiles/base\n/usr/portage/profiles/default-linux\n/usr/portage/profiles/default-linux/amd64\n/usr/portage/profiles/default-linux/amd64/2007.0\n/etc/portage/profile\n/etc/portage/profile' PROVIDE= PS4='+ ' PV=0.12.1 PVR=0.12.1 PWD=/tmp/portage/media-sound/mpd-0.12.1 PYTHONPATH=/usr/lib64/portage/pym QA_INTERCEPTORS='javac java-config python python-config perl grep egrep fgrep sed gcc g++ cc bash awk nawk gawk pkg-config' QMAKESPEC=linux-g++ QTDIR=/usr/qt/3 RC_DEFAULT_INDENT=2 RC_DOT_PATTERN= RC_ENDCOL=yes RC_INDENTATION= RDEPEND=$'dev-util/gperf\n\t!media-sound/mpd-svn\n\t!sys-cluster/mpich2\n\tsys-libs/zlib\n\taac? ( >=media-libs/faad2-2.0_rc2 )\n\talsa? ( media-sound/alsa-utils )\n\tao? ( >=media-libs/libao-0.8.4 )\n\taudiofile? ( media-libs/audiofile )\n\tflac? ( ~media-libs/flac-1.1.2 )\n\ticecast? ( media-libs/libshout )\n\tmp3? ( media-libs/libmad\n\t media-libs/libid3tag )\n\tmikmod? ( media-libs/libmikmod )\n\tmusepack? ( media-libs/libmpcdec )\n\tpulseaudio? ( media-sound/pulseaudio )\n\tvorbis? ( media-libs/libvorbis ) ' RESTRICT= RESUMECOMMAND='/usr/bin/wget -c -t 5 -T 60 --passive-ftp -P ${DISTDIR} ${URI}' ROOT=/ ROOTPATH=/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/3.4.6:/opt/blackdown-jdk-1.4.2.03/bin:/opt/blackdown-jdk-1.4.2.03/jre/bin:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin:/opt/vmware/workstation/bin RPMDIR=/usr/portage/rpm S=/tmp/portage/media-sound/mpd-0.12.1/work/mpd-0.12.1 SHELL=/bin/bash SHELLOPTS=braceexpand:hashall:interactive-comments SHLVL=2 SLOT=0 SRC_URI=http://musicpd.org/uploads/files/mpd-0.12.1.tar.bz2 STAGE1_USE='nptl nptlonly unicode' STARTDIR=/home/vovka SUDO_COMMAND='/usr/bin/emerge mpd' SUDO_GID=1002 SUDO_UID=1002 SUDO_USER=vovka SYMLINK_LIB=yes SYNC=rsync://rsync.europe.gentoo.org/gentoo-portage T=/tmp/portage/media-sound/mpd-0.12.1/temp TERM=xterm TMP=/tmp/portage/media-sound/mpd-0.12.1/temp TMPDIR=/tmp/portage/media-sound/mpd-0.12.1/temp UID=0 USE='amd64 3dnow 3dnowext X acl alsa alsa_cards_ali5451 alsa_cards_als4000 alsa_cards_atiixp alsa_cards_atiixp-modem alsa_cards_bt87x alsa_cards_ca0106 alsa_cards_cmipci alsa_cards_emu10k1x alsa_cards_ens1370 alsa_cards_ens1371 alsa_cards_es1938 alsa_cards_es1968 alsa_cards_fm801 alsa_cards_hda-intel alsa_cards_intel8x0 alsa_cards_intel8x0m alsa_cards_maestro3 alsa_cards_trident alsa_cards_usb-audio alsa_cards_via82xx alsa_cards_via82xx-modem alsa_cards_ymfpci alsa_pcm_plugins_adpcm alsa_pcm_plugins_alaw alsa_pcm_plugins_asym alsa_pcm_plugins_copy alsa_pcm_plugins_dmix alsa_pcm_plugins_dshare alsa_pcm_plugins_dsnoop alsa_pcm_plugins_empty alsa_pcm_plugins_extplug alsa_pcm_plugins_file alsa_pcm_plugins_hooks alsa_pcm_plugins_iec958 alsa_pcm_plugins_ioplug alsa_pcm_plugins_ladspa alsa_pcm_plugins_lfloat alsa_pcm_plugins_linear alsa_pcm_plugins_meter alsa_pcm_plugins_mulaw alsa_pcm_plugins_multi alsa_pcm_plugins_null alsa_pcm_plugins_plug alsa_pcm_plugins_rate alsa_pcm_plugins_route alsa_pcm_plugins_share alsa_pcm_plugins_shm alsa_pcm_plugins_softvol berkdb bitmap-fonts cdr cli cracklib crypt cups dri dvdr elibc_glibc flac fortran gdbm gnome gpm gtk gtk2 iconv input_devices_keyboard input_devices_mouse isdnlog jpeg kernel_linux lcd_devices_bayrad lcd_devices_cfontz lcd_devices_cfontz633 lcd_devices_glk lcd_devices_hd44780 lcd_devices_lb216 lcd_devices_lcdm001 lcd_devices_mtxorb lcd_devices_ncurses lcd_devices_text libg++ linguas_ru mad midi mmx mmxext mp3 mudflap ncurses nls nptl nptlonly nvidia ogg opengl openmp oss pam pcre perl png pppd python readline reflection samba session smb spl sse sse2 ssl tcpd truetype truetype-fonts type1-fonts unicode userland_GNU userlocales video_cards_nvidia vorbis xorg xscreensaver zlib' USER=root USERLAND=GNU USE_EXPAND='ALSA_CARDS ALSA_PCM_PLUGINS CAMERAS CROSSCOMPILE_OPTS DVB_CARDS ELIBC FCDSL_CARDS FOO2ZJS_DEVICES FRITZCAPI_CARDS INPUT_DEVICES KERNEL LCD_DEVICES LINGUAS LIRC_DEVICES MISDN_CARDS USERLAND VIDEO_CARDS' USE_EXPAND_HIDDEN='CROSSCOMPILE_OPTS ELIBC KERNEL USERLAND' USE_ORDER=env:pkg:conf:defaults:pkginternal VIDEO_CARDS=nvidia VMHANDLE=blackdown-jdk-1.4.2 WARN=$'\E[33;01m' WORKDIR=/tmp/portage/media-sound/mpd-0.12.1/work XARGS='xargs -r' _=002 _RC_GET_KV_CACHE= ___ECLASS_RECUR_MULTILIB=yes ___ECLASS_RECUR_TOOLCHAIN_FUNCS=yes _pipestatus='0 0' conf=mpd-0.12.1-r0 dir=/etc/portage/profile srcdir=/tmp/portage/media-sound/mpd-0.12.1/distdir/ x=vorbis EXPORT_FUNCTIONS () { if [ -z "$ECLASS" ]; then echo "EXPORT_FUNCTIONS without a defined ECLASS" 1>&2; exit 1; fi; while [ "$1" ]; do debug-print "EXPORT_FUNCTIONS: ${1} -> ${ECLASS}_${1}"; eval "$1() { ${ECLASS}_$1 "\$@" ; }" > /dev/null; shift; done } KV_major () { [[ -z $1 ]] && return 1; local KV=$@; echo "${KV%%.*}" } KV_micro () { [[ -z $1 ]] && return 1; local KV=$@; KV=${KV#*.*.}; echo "${KV%%[^[:digit:]]*}" } KV_minor () { [[ -z $1 ]] && return 1; local KV=$@; KV=${KV#*.}; echo "${KV%%.*}" } KV_to_int () { [[ -z $1 ]] && return 1; local KV_MAJOR=$(KV_major "$1"); local KV_MINOR=$(KV_minor "$1"); local KV_MICRO=$(KV_micro "$1"); local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO )); if [[ ${KV_int} -ge 131584 ]]; then echo "${KV_int}"; return 0; fi; return 1 } _cdrom_locate_file_on_cd () { local mline=""; local showedmsg=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/ }; [[ -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; einfo "If you are having trouble with the detection"; einfo "of your CD, it is possible that you do not have"; einfo "Joliet support enabled in your kernel. Please"; einfo "check that CONFIG_JOLIET is enabled in your kernel."; read || diefunc "$FUNCNAME" "$LINENO" "$?" "something is screwed with your system"; done } _eend () { local retval=${1:-0} efunc=${2:-eerror} msg; shift 2; if [[ ${retval} == "0" ]]; then msg="${BRACKET}[ ${GOOD}ok${BRACKET} ]${NORMAL}"; else if [[ -n $* ]]; then ${efunc} "$*"; fi; msg="${BRACKET}[ ${BAD}!!${BRACKET} ]${NORMAL}"; fi; if [[ ${RC_ENDCOL} == "yes" ]]; then echo -e "${ENDCOL} ${msg}"; else [[ ${LAST_E_CMD} == ebegin ]] || LAST_E_LEN=0; printf "%$(( COLS - LAST_E_LEN - 6 ))s%b\n" '' "${msg}"; fi; return ${retval} } _epatch_assert () { local _pipestatus=${PIPESTATUS[*]}; [[ ${_pipestatus// /} -eq 0 ]] } _epatch_draw_line () { [[ -z $1 ]] && set "$(printf "%65s" '')"; echo "${1//?/=}" } _gcc-install-dir () { echo "$($(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 ]] } _tc_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}" || diefunc "$FUNCNAME" "$LINENO" "$?" "could not change perms on ${lib}"; done } abort_compile () { abort_handler "src_compile" $1; rm -f "${PORTAGE_BUILDDIR}/.compiled"; exit 1 } abort_handler () { local msg; if [ "$2" != "fail" ]; then msg="${EBUILD}: ${1} aborted; exiting."; else msg="${EBUILD}: ${1} failed; exiting."; fi; echo; echo "$msg"; echo; eval ${3}; trap SIGINT SIGQUIT } abort_install () { abort_handler "src_install" $1; rm -rf "${PORTAGE_BUILDDIR}/image"; exit 1 } abort_test () { abort_handler "dyn_test" $1; rm -f "${PORTAGE_BUILDDIR}/.tested"; exit 1 } adddeny () { [[ -z $1 || -n $2 ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Usage: adddeny "; export SANDBOX_DENY="$SANDBOX_DENY:$1" } addpredict () { [[ -z $1 || -n $2 ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Usage: addpredict "; export SANDBOX_PREDICT="$SANDBOX_PREDICT:$1" } addread () { [[ -z $1 || -n $2 ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Usage: addread "; export SANDBOX_READ="$SANDBOX_READ:$1" } addwrite () { [[ -z $1 || -n $2 ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Usage: addwrite "; export SANDBOX_WRITE="$SANDBOX_WRITE:$1" } bashrc_has () { [[ " ${*:2} " == *" $1 "* ]] } best_version () { if [ "${EBUILD_PHASE}" == "depend" ]; then diefunc "$FUNCNAME" "$LINENO" "$?" "portageq calls (best_version calls portageq) are not allowed in the global scope"; fi; "${PORTAGE_BIN_PATH}/portageq" 'best_version' "${ROOT}" "$1" } built_with_use () { local hidden="no"; if [[ $1 == "--hidden" ]]; then hidden="yes"; shift; fi; local missing_action="die"; if [[ $1 == "--missing" ]]; then missing_action=$2; shift; shift; case ${missing_action} in true | false | die) ;; *) diefunc "$FUNCNAME" "$LINENO" "$?" "unknown action '${missing_action}'" ;; esac; fi; local opt=$1; [[ ${opt:0:1} = "-" ]] && shift || opt="-a"; local PKG=$(best_version $1); [[ -z ${PKG} ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Unable to resolve $1 to an installed package"; shift; local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE; local IUSEFILE=${ROOT}/var/db/pkg/${PKG}/IUSE; if [[ ! -e ${USEFILE} ]] || [[ ! -e ${IUSEFILE} && ${hidden} == "no" ]]; then case ${missing_action} in true) return 0 ;; false) return 1 ;; die) diefunc "$FUNCNAME" "$LINENO" "$?" "Unable to determine what USE flags $PKG was built with" ;; esac; fi; if [[ ${hidden} == "no" ]]; then local IUSE_BUILT=$(<${IUSEFILE}); local expand; for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]'); do if [[ $1 == ${expand}_* ]]; then expand=""; break; fi; done; if [[ -n ${expand} ]]; then if ! has $1 ${IUSE_BUILT}; then case ${missing_action} in true) return 0 ;; false) return 1 ;; die) diefunc "$FUNCNAME" "$LINENO" "$?" "$PKG does not actually support the $1 USE flag!" ;; esac; fi; fi; fi; local USE_BUILT=$(<${USEFILE}); while [[ $# -gt 0 ]]; do if [[ ${opt} = "-o" ]]; then has $1 ${USE_BUILT} && return 0; else has $1 ${USE_BUILT} || return 1; fi; shift; done; [[ ${opt} = "-a" ]] } cdrom_get_cds () { local cdcnt=0; local f=; for f in "$@"; do ((++cdcnt)); export CDROM_CHECK_${cdcnt}="$f"; done; export CDROM_TOTAL_CDS=${cdcnt}; export CDROM_CURRENT_CD=1; if [[ -n ${CD_ROOT}${CD_ROOT_1} ]]; then local var=; cdcnt=0; while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do ((++cdcnt)); var="CD_ROOT_${cdcnt}"; [[ -z ${!var} ]] && var="CD_ROOT"; if [[ -z ${!var} ]]; then eerror "You must either use just the CD_ROOT"; eerror "or specify ALL the CD_ROOT_X variables."; eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables."; diefunc "$FUNCNAME" "$LINENO" "$?" "could not locate CD_ROOT_${cdcnt}"; fi; done; export CDROM_ROOT=${CD_ROOT_1:-${CD_ROOT}}; einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"; export CDROM_SET=-1; for f in ${CDROM_CHECK_1//:/ }; do ((++CDROM_SET)); [[ -e ${CD_ROOT}/${f} ]] && break; done; export CDROM_MATCH=${f}; return; fi; if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then einfo "This ebuild will need the ${CDROM_NAME:-cdrom for ${PN}}"; echo; einfo "If you do not have the CD, but have the data files"; einfo "mounted somewhere on your filesystem, just export"; einfo "the variable CD_ROOT so that it points to the"; einfo "directory containing the files."; echo; einfo "For example:"; einfo "export CD_ROOT=/mnt/cdrom"; echo; else if [[ -n ${CDROM_NAME_SET} ]]; then cdcnt=0; while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do ((++cdcnt)); export CDROM_NAME_${cdcnt}="${CDROM_NAME_SET[$((${cdcnt}-1))]}"; done; fi; einfo "This package will need access to ${CDROM_TOTAL_CDS} cds."; cdcnt=0; while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do ((++cdcnt)); var="CDROM_NAME_${cdcnt}"; [[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}"; done; echo; einfo "If you do not have the CDs, but have the data files"; einfo "mounted somewhere on your filesystem, just export"; einfo "the following variables so they point to the right place:"; einfon ""; cdcnt=0; while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do ((++cdcnt)); echo -n " CD_ROOT_${cdcnt}"; done; echo; einfo "Or, if you have all the files in the same place, or"; einfo "you only have one cdrom, you can export CD_ROOT"; einfo "and that place will be used as the same data source"; einfo "for all the CDs."; echo; einfo "For example:"; einfo "export CD_ROOT_1=/mnt/cdrom"; echo; fi; export CDROM_SET=""; export CDROM_CURRENT_CD=0; cdrom_load_next_cd } cdrom_load_next_cd () { local var; ((++CDROM_CURRENT_CD)); unset CDROM_ROOT; var=CD_ROOT_${CDROM_CURRENT_CD}; [[ -z ${!var} ]] && var="CD_ROOT"; if [[ -z ${!var} ]]; then var="CDROM_CHECK_${CDROM_CURRENT_CD}"; _cdrom_locate_file_on_cd ${!var}; else export CDROM_ROOT=${!var}; fi; einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}" } check_KV () { if [ -z "${KV}" ]; then eerror ""; eerror "Could not determine your kernel version."; eerror "Make sure that you have a /usr/src/linux symlink,"; eerror "and that the indicated kernel has been configured."; eerror "You can also simply run the following command"; eerror "in the directory referenced by /usr/src/linux:"; eerror " make include/linux/version.h"; eerror ""; diefunc "$FUNCNAME" "$LINENO" "$?"; fi } check_license () { local lic=$1; if [ -z "${lic}" ]; then lic="${PORTDIR}/licenses/${LICENSE}"; else if [ -e "${PORTDIR}/licenses/${lic}" ]; then lic="${PORTDIR}/licenses/${lic}"; else if [ -e "${PWD}/${lic}" ]; then lic="${PWD}/${lic}"; else if [ -e "${lic}" ]; then lic="${lic}"; fi; fi; fi; fi; [ ! -f "${lic}" ] && diefunc "$FUNCNAME" "$LINENO" "$?" "Could not find requested license ${lic}"; local l="`basename ${lic}`"; local shopts=$-; local alic; set -o noglob; for alic in ${ACCEPT_LICENSE}; do if [[ ${alic} == ${l} ]]; then set +o noglob; set -${shopts}; return 0; fi; done; set +o noglob; set -$shopts; local licmsg=$(emktemp); cat > ${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} || diefunc "$FUNCNAME" "$LINENO" "$?" "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!"; diefunc "$FUNCNAME" "$LINENO" "$?" "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 } debug-print () { [ ! -d "$T" ] && return 0; while [ "$1" ]; do if [ "$ECLASS_DEBUG_OUTPUT" == "on" ]; then echo "debug: $1"; else if [ -n "$ECLASS_DEBUG_OUTPUT" ]; then echo "debug: $1" >> $ECLASS_DEBUG_OUTPUT; fi; fi; echo "$1" >> "${T}/eclass-debug.log"; chmod g+w "${T}/eclass-debug.log" >&/dev/null; shift; done } debug-print-function () { str="$1: entering function"; shift; debug-print "$str, parameters: $*" } debug-print-section () { debug-print "now in section $*" } diefunc () { local funcname="$1" lineno="$2" exitcode="$3"; shift 3; echo 1>&2; echo "!!! ERROR: $CATEGORY/$PF failed." 1>&2; dump_trace 2 1>&2; echo " $(basename "${BASH_SOURCE[1]}"), line ${BASH_LINENO[0]}: Called die" 1>&2; echo 1>&2; echo "!!! ${*:-(no error message)}" 1>&2; echo "!!! If you need support, post the topmost build error, and the call stack if relevant." 1>&2; [ -n "${PORTAGE_LOG_FILE}" ] && echo "!!! A complete build log is located at '${PORTAGE_LOG_FILE}'." 1>&2; echo 1>&2; if [ -n "${EBUILD_OVERLAY_ECLASSES}" ]; then echo "This ebuild used the following eclasses from overlays:" 1>&2; echo 1>&2; for x in ${EBUILD_OVERLAY_ECLASSES}; do echo " ${x}" 1>&2; done; echo 1>&2; fi; if [ "${EBUILD_PHASE/depend}" == "${EBUILD_PHASE}" ]; then local x; for x in $EBUILD_DEATH_HOOKS; do ${x} "$@" 1>&2 1>&2; done; fi; kill -s SIGTERM ${EBUILD_MASTER_PID}; exit 1 } diropts () { export DIROPTIONS="$@" } dlopen_lib () { if [[ ${ELIBC} != *BSD ]]; then echo "-ldl"; fi } do_newdepend () { debug-print-function do_newdepend $*; [ -z "$1" ] && diefunc "$FUNCNAME" "$LINENO" "$?" "do_newdepend without arguments"; [[ ${ECLASS_DEPTH} > 0 ]] && TARGET="E_$1"; [[ ${ECLASS_DEPTH} > 0 ]] || TARGET="$1"; shift; while [ -n "$1" ]; do eval export ${TARGET}=\"\${${TARGET}} \$1\"; shift; done } docinto () { if [ "$1" == "/" ]; then export DOCDESTTREE=""; else export DOCDESTTREE="$1"; if [ ! -d "${D}usr/share/doc/${PF}/${DOCDESTTREE}" ]; then install -d "${D}usr/share/doc/${PF}/${DOCDESTTREE}"; fi; 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; 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; fi; fi; done; exit ${ret} ) } dump_trace () { local funcname="" sourcefile="" lineno="" n e s="yes"; declare -i strip=1; if [[ -n $1 ]]; then strip=$(( $1 )); fi; echo "Call stack:"; for ((n = ${#FUNCNAME[@]} - 1, p = ${#BASH_ARGV[@]} ; n > $strip ; n-- )) do funcname=${FUNCNAME[${n} - 1]}; sourcefile=$(basename ${BASH_SOURCE[${n}]}); lineno=${BASH_LINENO[${n} - 1]}; args=; if [[ -n "${BASH_ARGV[@]}" ]]; then for ((j = 1 ; j <= ${BASH_ARGC[${n} - 1]} ; ++j )) do newarg=${BASH_ARGV[$(( p - j - 1 ))]}; args="${args:+${args} }'${newarg}'"; done; (( p -= ${BASH_ARGC[${n} - 1]} )); fi; echo " ${sourcefile}, line ${lineno}: Called ${funcname}${args:+ ${args}}"; done } dyn_clean () { if [ -z "${PORTAGE_BUILDDIR}" ]; then echo "Aborting clean phase because PORTAGE_BUILDDIR is unset!"; return 1; fi; if type -P chflags > /dev/null; then chflags -R noschg,nouchg,nosappnd,nouappnd "${PORTAGE_BUILDDIR}"; chflags -R nosunlnk,nouunlnk "${PORTAGE_BUILDDIR}" 2> /dev/null; fi; rm -rf "${PORTAGE_BUILDDIR}/image" "${PORTAGE_BUILDDIR}/homedir"; if ! hasq keeptemp $FEATURES; then rm -rf "${T}"; else [ -e "${T}/environment" ] && mv "${T}/environment" "${T}/environment.keeptemp"; fi; if ! hasq keepwork $FEATURES; then rm -rf "${PORTAGE_BUILDDIR}/.logid"; rm -rf "${PORTAGE_BUILDDIR}/.unpacked"; rm -rf "${PORTAGE_BUILDDIR}/.compiled"; rm -rf "${PORTAGE_BUILDDIR}/.tested"; rm -rf "${PORTAGE_BUILDDIR}/.installed"; rm -rf "${PORTAGE_BUILDDIR}/.packaged"; rm -rf "${PORTAGE_BUILDDIR}/build-info"; rm -rf "${WORKDIR}"; fi; if [ -f "${PORTAGE_BUILDDIR}/.unpacked" ]; then find "${PORTAGE_BUILDDIR}" -type d ! -regex "^${WORKDIR}" | sort -r | tr "\n" "\0" | $XARGS -0 rmdir >&/dev/null; fi; rm -rf "${PORTAGE_BUILDDIR}/distdir"; if [ -z "$(find "${PORTAGE_BUILDDIR}" -mindepth 1 -maxdepth 1)" ]; then rmdir "${PORTAGE_BUILDDIR}"; fi; true } dyn_compile () { trap "abort_compile" SIGINT SIGQUIT; [ "$(type -t pre_src_compile)" == "function" ] && qa_call pre_src_compile; [ "${CFLAGS-unset}" != "unset" ] && export CFLAGS; [ "${CXXFLAGS-unset}" != "unset" ] && export CXXFLAGS; [ "${LIBCFLAGS-unset}" != "unset" ] && export LIBCFLAGS; [ "${LIBCXXFLAGS-unset}" != "unset" ] && export LIBCXXFLAGS; [ "${LDFLAGS-unset}" != "unset" ] && export LDFLAGS; [ "${ASFLAGS-unset}" != "unset" ] && export ASFLAGS; [ "${CCACHE_DIR-unset}" != "unset" ] && export CCACHE_DIR; [ "${CCACHE_SIZE-unset}" != "unset" ] && export CCACHE_SIZE; [ "${DISTCC_DIR-unset}" == "unset" ] && export DISTCC_DIR="${PORTAGE_TMPDIR}/.distcc"; [ ! -z "${DISTCC_DIR}" ] && addwrite "${DISTCC_DIR}"; LIBDIR_VAR="LIBDIR_${ABI}"; if [ -z "${PKG_CONFIG_PATH}" -a -n "${ABI}" -a -n "${!LIBDIR_VAR}" ]; then export PKG_CONFIG_PATH="/usr/${!LIBDIR_VAR}/pkgconfig"; fi; unset LIBDIR_VAR; if hasq noauto $FEATURES && [ ! -f ${PORTAGE_BUILDDIR}/.unpacked ]; then echo; echo "!!! We apparently haven't unpacked... This is probably not what you"; echo "!!! want to be doing... You are using FEATURES=noauto so I'll assume"; echo "!!! that you know what you are doing... You have 5 seconds to abort..."; echo; local x; for x in 1 2 3 4 5 6 7 8; do echo -ne "\a"; LC_ALL=C sleep 0.25; done; sleep 3; fi; local srcdir=${PORTAGE_BUILDDIR}; cd "${PORTAGE_BUILDDIR}"; if [ ! -e "build-info" ]; then mkdir build-info; fi; cp "${EBUILD}" "build-info/${PF}.ebuild"; if [[ ${PORTAGE_BUILDDIR}/.compiled -nt ${WORKDIR} ]]; then vecho ">>> It appears that '${PF}' is already compiled; skipping."; vecho ">>> Remove '${PORTAGE_BUILDDIR}/.compiled' to force compilation."; trap SIGINT SIGQUIT; [ "$(type -t post_src_compile)" == "function" ] && qa_call post_src_compile; return; fi; if [ -d "${S}" ]; then srcdir=${S}; cd "${S}"; fi; export S D; export PWORKDIR="$WORKDIR"; vecho ">>> Compiling source in ${srcdir} ..."; qa_call src_compile; vecho ">>> Source compiled."; cd "${PORTAGE_BUILDDIR}"; touch .compiled; cd build-info; set -f; for f in ASFLAGS CATEGORY CBUILD CC CFLAGS CHOST CTARGET CXX CXXFLAGS DEPEND EXTRA_ECONF EXTRA_EINSTALL EXTRA_MAKE FEATURES INHERITED IUSE LDFLAGS LIBCFLAGS LIBCXXFLAGS LICENSE PDEPEND PF PKGUSE PROVIDE RDEPEND RESTRICT SLOT KEYWORDS HOMEPAGE SRC_URI DESCRIPTION; do [ -n "${!f}" ] && echo $(echo "${!f}" | tr '\n,\r,\t' ' , , ' | sed s/' \+'/' '/g) > ${f}; done; echo "${USE}" > USE; echo "${EAPI:-0}" > EAPI; set +f; set > environment; export | sed 's:^declare -rx:declare -x:' >> environment; bzip2 -f9 environment; cp "${EBUILD}" "${PF}.ebuild"; if hasq nostrip ${FEATURES} ${RESTRICT} || hasq strip ${RESTRICT}; then touch DEBUGBUILD; fi; [ "$(type -t post_src_compile)" == "function" ] && qa_call post_src_compile; trap SIGINT SIGQUIT } dyn_help () { echo; echo "Portage"; echo "Copyright 1999-2006 Gentoo Foundation"; echo; echo "How to use the ebuild command:"; echo; echo "The first argument to ebuild should be an existing .ebuild file."; echo; echo "One or more of the following options can then be specified. If more"; echo "than one option is specified, each will be executed in order."; echo; echo " help : show this help screen"; echo " setup : execute package specific setup actions"; echo " fetch : download source archive(s) and patches"; echo " digest : create a digest and a manifest file for the package"; echo " manifest : create a manifest file for the package"; echo " unpack : unpack/patch sources (auto-fetch if needed)"; echo " compile : compile sources (auto-fetch/unpack if needed)"; echo " test : test package (auto-fetch/unpack/compile if needed)"; echo " preinst : execute pre-install instructions"; echo " postinst : execute post-install instructions"; echo " install : install the package to the temporary install directory"; echo " qmerge : merge image into live filesystem, recording files in db"; echo " merge : do fetch, unpack, compile, install and qmerge"; echo " prerm : execute pre-removal instructions"; echo " postrm : execute post-removal instructions"; echo " unmerge : remove package from live filesystem"; echo " config : execute package specific configuration actions"; echo " package : create a tarball package in ${PKGDIR}/All"; echo " rpm : build a RedHat RPM package"; echo " clean : clean up all source and temporary files"; echo; echo "The following settings will be used for the ebuild process:"; echo; echo " package : ${PF}"; echo " slot : ${SLOT}"; echo " category : ${CATEGORY}"; echo " description : ${DESCRIPTION}"; echo " system : ${CHOST}"; echo " c flags : ${CFLAGS}"; echo " c++ flags : ${CXXFLAGS}"; echo " make flags : ${MAKEOPTS}"; echo -n " build mode : "; if hasq nostrip ${FEATURES} ${RESTRICT} || hasq strip ${RESTRICT}; then echo "debug (large)"; else echo "production (stripped)"; fi; echo " merge to : ${ROOT}"; echo; if [ -n "$USE" ]; then echo "Additionally, support for the following optional features will be enabled:"; echo; echo " ${USE}"; fi; echo } dyn_install () { [ -z "$PORTAGE_BUILDDIR" ] && diefunc "$FUNCNAME" "$LINENO" "$?" "${FUNCNAME}: PORTAGE_BUILDDIR is unset"; if hasq noauto $FEATURES; then rm -f "${PORTAGE_BUILDDIR}/.installed"; else if [[ ${PORTAGE_BUILDDIR}/.installed -nt ${WORKDIR} ]]; then vecho ">>> It appears that '${PF}' is already installed; skipping."; vecho ">>> Remove '${PORTAGE_BUILDDIR}/.installed' to force install."; return 0; fi; fi; trap "abort_install" SIGINT SIGQUIT; [ "$(type -t pre_src_install)" == "function" ] && qa_call pre_src_install; rm -rf "${PORTAGE_BUILDDIR}/image"; mkdir "${PORTAGE_BUILDDIR}/image"; if [ -d "${S}" ]; then cd "${S}"; fi; vecho; vecho ">>> Install ${PF} into ${D} category ${CATEGORY}"; export S D; export PWORKDIR="$WORKDIR"; qa_call src_install; touch "${PORTAGE_BUILDDIR}/.installed"; vecho ">>> Completed installing ${PF} into ${D}"; vecho; cd ${PORTAGE_BUILDDIR}; [ "$(type -t post_src_install)" == "function" ] && qa_call post_src_install; trap SIGINT SIGQUIT } dyn_preinst () { if [ -z "$IMAGE" ]; then eerror "${FUNCNAME}: IMAGE is unset"; return 1; fi; [ "$(type -t pre_pkg_preinst)" == "function" ] && qa_call pre_pkg_preinst; declare -r D=${IMAGE}; pkg_preinst; [ "$(type -t post_pkg_preinst)" == "function" ] && qa_call post_pkg_preinst } dyn_setup () { [ "$(type -t pre_pkg_setup)" == "function" ] && qa_call pre_pkg_setup; qa_call pkg_setup; [ "$(type -t post_pkg_setup)" == "function" ] && qa_call post_pkg_setup } dyn_test () { [ "${EBUILD_FORCE_TEST}" == "1" ] && rm -f "${PORTAGE_BUILDDIR}/.tested"; [ "$(type -t pre_src_test)" == "function" ] && qa_call pre_src_test; if [ "${PORTAGE_BUILDDIR}/.tested" -nt "${WORKDIR}" ]; then vecho ">>> It appears that ${PN} has already been tested; skipping."; [ "$(type -t post_src_test)" == "function" ] && qa_call post_src_test; return; fi; trap "abort_test" SIGINT SIGQUIT; if [ -d "${S}" ]; then cd "${S}"; fi; if ! hasq test $FEATURES && [ "${EBUILD_FORCE_TEST}" != "1" ]; then vecho ">>> Test phase [not enabled]: ${CATEGORY}/${PF}"; else if ! hasq test ${USE} && [ "${EBUILD_FORCE_TEST}" != "1" ]; then ewarn "Skipping make test/check since USE=test is masked."; vecho ">>> Test phase [explicitly disabled]: ${CATEGORY}/${PF}"; else if hasq test $RESTRICT; then ewarn "Skipping make test/check due to ebuild restriction."; vecho ">>> Test phase [explicitly disabled]: ${CATEGORY}/${PF}"; else addpredict /; qa_call src_test; SANDBOX_PREDICT="${SANDBOX_PREDICT%:/}"; fi; fi; fi; cd "${PORTAGE_BUILDDIR}"; touch .tested || diefunc "$FUNCNAME" "$LINENO" "$?" "Failed to 'touch .tested' in ${PORTAGE_BUILDDIR}"; [ "$(type -t post_src_test)" == "function" ] && qa_call post_src_test; trap SIGINT SIGQUIT } dyn_unpack () { [ "$(type -t pre_src_unpack)" == "function" ] && qa_call pre_src_unpack; local newstuff="no"; if [ -e "${WORKDIR}" ]; then local x; local checkme; for x in ${AA}; do vecho ">>> Checking ${x}'s mtime..."; if [ "${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/${x}" -nt "${WORKDIR}" ]; then vecho ">>> ${x} has been updated; recreating WORKDIR..."; newstuff="yes"; break; fi; done; if [ "${EBUILD}" -nt "${WORKDIR}" ] && ! hasq keepwork ${FEATURES}; then vecho ">>> ${EBUILD} has been updated; recreating WORKDIR..."; newstuff="yes"; else if [ ! -f "${PORTAGE_BUILDDIR}/.unpacked" ]; then vecho ">>> Not marked as unpacked; recreating WORKDIR..."; newstuff="yes"; fi; fi; fi; if [ "${newstuff}" == "yes" ]; then rm -rf "${WORKDIR}"; if [ -d "${T}" ] && ! hasq keeptemp ${FEATURES}; then rm -rf "${T}" && mkdir "${T}"; else [ -e "${T}/environment" ] && mv "${T}/environment" "${T}/environment.keeptemp"; fi; fi; if [ -e "${WORKDIR}" ]; then if [ "$newstuff" == "no" ]; then vecho ">>> WORKDIR is up-to-date, keeping..."; [ "$(type -t post_src_unpack)" == "function" ] && qa_call post_src_unpack; return 0; fi; fi; if [ ! -d "${WORKDIR}" ]; then install -m${PORTAGE_WORKDIR_MODE:-0700} -d "${WORKDIR}" || diefunc "$FUNCNAME" "$LINENO" "$?" "Failed to create dir '${WORKDIR}'"; fi; cd "${WORKDIR}" || diefunc "$FUNCNAME" "$LINENO" "$?" "Directory change failed: \`cd '${WORKDIR}'\`"; vecho ">>> Unpacking source..."; qa_call src_unpack; touch "${PORTAGE_BUILDDIR}/.unpacked" || diefunc "$FUNCNAME" "$LINENO" "$?" "IO Failure -- Failed 'touch .unpacked' in ${PORTAGE_BUILDDIR}"; vecho ">>> Source unpacked."; cd "${PORTAGE_BUILDDIR}"; [ "$(type -t post_src_unpack)" == "function" ] && qa_call post_src_unpack } 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 } ebegin () { local msg="$*" dots spaces=${RC_DOT_PATTERN//?/ }; if [[ -n ${RC_DOT_PATTERN} ]]; then dots=$(printf "%$(( COLS - 3 - ${#RC_INDENTATION} - ${#msg} - 7 ))s" ''); dots=${dots//${spaces}/${RC_DOT_PATTERN}}; msg="${msg}${dots}"; else msg="${msg} ..."; fi; einfon "${msg}"; [[ ${RC_ENDCOL} == "yes" ]] && echo; LAST_E_LEN=$(( 3 + ${#RC_INDENTATION} + ${#msg} )); LAST_E_CMD="ebegin"; return 0 } econf () { local x; local LOCAL_EXTRA_ECONF="${EXTRA_ECONF}"; if [ -z "${ECONF_SOURCE}" ]; then ECONF_SOURCE="."; fi; if [ -x "${ECONF_SOURCE}/configure" ]; then if [ -e /usr/share/gnuconfig/ ]; then for x in $(find "${WORKDIR}" -type f '(' -name config.guess -o -name config.sub ')'); do vecho " * econf: updating ${x/${WORKDIR}\/} with /usr/share/gnuconfig/${x##*/}"; cp -f /usr/share/gnuconfig/${x##*/} ${x}; done; fi; if [ ! -z "${CBUILD}" ]; then LOCAL_EXTRA_ECONF="--build=${CBUILD} ${LOCAL_EXTRA_ECONF}"; fi; if [ ! -z "${CTARGET}" ]; then LOCAL_EXTRA_ECONF="--target=${CTARGET} ${LOCAL_EXTRA_ECONF}"; fi; LIBDIR_VAR="LIBDIR_${ABI}"; if [ -n "${ABI}" -a -n "${!LIBDIR_VAR}" ]; then CONF_LIBDIR="${!LIBDIR_VAR}"; fi; unset LIBDIR_VAR; if [ -n "${CONF_LIBDIR}" ] && [ "${*/--libdir}" == "$*" ]; then if [ "${*/--exec-prefix}" != "$*" ]; then local args="$(echo $*)"; local -a pref=($(echo ${args/*--exec-prefix[= ]})); CONF_PREFIX=${pref}; [ "${CONF_PREFIX:0:1}" != "/" ] && CONF_PREFIX="/${CONF_PREFIX}"; else if [ "${*/--prefix}" != "$*" ]; then local args="$(echo $*)"; local -a pref=($(echo ${args/*--prefix[= ]})); CONF_PREFIX=${pref}; [ "${CONF_PREFIX:0:1}" != "/" ] && CONF_PREFIX="/${CONF_PREFIX}"; else CONF_PREFIX="/usr"; fi; fi; export CONF_PREFIX; [ "${CONF_LIBDIR:0:1}" != "/" ] && CONF_LIBDIR="/${CONF_LIBDIR}"; CONF_LIBDIR_RESULT="$(strip_duplicate_slashes ${CONF_PREFIX}${CONF_LIBDIR})"; LOCAL_EXTRA_ECONF="--libdir=${CONF_LIBDIR_RESULT} ${LOCAL_EXTRA_ECONF}"; fi; local TMP_CONFCACHE_DIR CONFCACHE_ARG; if hasq confcache $FEATURES && ! hasq confcache $RESTRICT; then CONFCACHE="$(type -P confcache)"; if [ -z "${CONFCACHE}" ]; then ewarn "disabling confcache, binary cannot be found"; else CONFCACHE="${CONFCACHE/ /\ }"; TMP_CONFCACHE_DIR="${CONFCACHE:+${CONFCACHE_DIR:-${PORTAGE_TMPDIR}/confcache}}"; TMP_CONFCACHE_DIR="${TMP_CONFCACHE_DIR/ /\ }"; CONFCACHE_ARG="--confcache-dir"; local s; if [ -n "$CCACHE_DIR" ]; then s="$CCACHE_DIR"; fi; if [ -n "$DISTCC_DIR" ]; then s="${s:+${s}:}$DISTCC_DIR"; fi; if [ -n "$s" ]; then CONFCACHE_ARG="--confcache-ignore $s $CONFCACHE_ARG"; fi; fi; else CONFCACHE=; fi; vecho ${CONFCACHE} ${CONFCACHE_ARG} ${TMP_CONFCACHE_DIR} "${ECONF_SOURCE}/configure" --prefix=/usr --host=${CHOST} --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib "$@" ${LOCAL_EXTRA_ECONF}; if ! ${CONFCACHE} ${CONFCACHE_ARG} ${TMP_CONFCACHE_DIR} "${ECONF_SOURCE}/configure" --prefix=/usr --host=${CHOST} --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib "$@" ${LOCAL_EXTRA_ECONF}; then if [ -s config.log ]; then echo; echo "!!! Please attach the following file when filing a report to bugs.gentoo.org:"; echo "!!! ${PWD}/config.log"; fi; diefunc "$FUNCNAME" "$LINENO" "$?" "econf failed"; fi; else diefunc "$FUNCNAME" "$LINENO" "$?" "no configure script found"; fi } edos2unix () { echo "$@" | xargs sed -i 's/\r$//' } eend () { local retval=${1:-0}; shift; _eend ${retval} eerror "$*"; return ${retval} } eerror () { elog_base ERROR "$*"; [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; echo -e " ${BAD}*${NORMAL} ${RC_INDENTATION}$*"; LAST_E_CMD="eerror"; return 0 } 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 } einfo () { elog_base INFO "$*"; [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; echo -e " ${GOOD}*${NORMAL} $*"; LAST_E_CMD="einfo"; return 0 } einfon () { elog_base INFO "$*"; [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; echo -ne " ${GOOD}*${NORMAL} $*"; LAST_E_CMD="einfon"; return 0 } einstall () { LIBDIR_VAR="LIBDIR_${ABI}"; if [ -n "${ABI}" -a -n "${!LIBDIR_VAR}" ]; then CONF_LIBDIR="${!LIBDIR_VAR}"; fi; unset LIBDIR_VAR; if [ -n "${CONF_LIBDIR}" ] && [ "${CONF_PREFIX:-unset}" != "unset" ]; then EI_DESTLIBDIR="${D}/${CONF_PREFIX}/${CONF_LIBDIR}"; EI_DESTLIBDIR="$(strip_duplicate_slashes ${EI_DESTLIBDIR})"; EXTRA_EINSTALL="libdir=${EI_DESTLIBDIR} ${EXTRA_EINSTALL}"; unset EI_DESTLIBDIR; fi; if [ -f ./[mM]akefile -o -f ./GNUmakefile ]; then if [ "${PORTAGE_DEBUG}" == "1" ]; then make -n prefix="${D}/usr" datadir="${D}/usr/share" infodir="${D}/usr/share/info" localstatedir="${D}/var/lib" mandir="${D}/usr/share/man" sysconfdir="${D}/etc" ${EXTRA_EINSTALL} "$@" install; fi; make prefix="${D}/usr" datadir="${D}/usr/share" infodir="${D}/usr/share/info" localstatedir="${D}/var/lib" mandir="${D}/usr/share/man" sysconfdir="${D}/etc" ${EXTRA_EINSTALL} "$@" install || diefunc "$FUNCNAME" "$LINENO" "$?" "einstall failed"; else diefunc "$FUNCNAME" "$LINENO" "$?" "no Makefile found"; fi } elog () { elog_base LOG "$*"; echo -e " ${GOOD}*${NORMAL} $*"; return 0 } elog_base () { local messagetype; [ -z "${1}" -o -z "${T}" -o ! -d "${T}/logging" ] && return 1; case "${1}" in INFO | WARN | ERROR | LOG | QA) messagetype="${1}"; shift ;; *) vecho -e " ${BAD}*${NORMAL} Invalid use of internal function elog_base(), next message will not be logged"; return 1 ;; esac; echo -e "$*" >> ${T}/logging/${EBUILD_PHASE:-other}.${messagetype}; return 0 } 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."; diefunc "$FUNCNAME" "$LINENO" "$?" "Bad package! enewgroup is only for use in pkg_* functions!" ;; esac; local egroup="$1"; shift; if [ -z "${egroup}" ]; then eerror "No group specified !"; diefunc "$FUNCNAME" "$LINENO" "$?" "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 !"; diefunc "$FUNCNAME" "$LINENO" "$?" "${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}"; diefunc "$FUNCNAME" "$LINENO" "$?" "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} || diefunc "$FUNCNAME" "$LINENO" "$?" "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} || diefunc "$FUNCNAME" "$LINENO" "$?" "enewgroup failed" ;; *) groupadd ${opts} ${egroup} || diefunc "$FUNCNAME" "$LINENO" "$?" "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."; diefunc "$FUNCNAME" "$LINENO" "$?" "Bad package! enewuser is only for use in pkg_* functions!" ;; esac; local euser=$1; shift; if [[ -z ${euser} ]]; then eerror "No username specified !"; diefunc "$FUNCNAME" "$LINENO" "$?" "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 !"; diefunc "$FUNCNAME" "$LINENO" "$?" "${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 !"; diefunc "$FUNCNAME" "$LINENO" "$?" "${eshell} does not exist in ${ROOT}"; fi; if [[ ${eshell} == */false || ${eshell} == */nologin ]]; then eerror "Do not specify ${eshell} yourself, use -1"; diefunc "$FUNCNAME" "$LINENO" "$?" "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" ;; *) diefunc "$FUNCNAME" "$LINENO" "$?" "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"; diefunc "$FUNCNAME" "$LINENO" "$?" "${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: $@"; diefunc "$FUNCNAME" "$LINENO" "$?" "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} "$@" || diefunc "$FUNCNAME" "$LINENO" "$?" "enewuser failed"; fi ;; *-netbsd*) if [[ -z $@ ]]; then useradd ${opts} ${euser} || diefunc "$FUNCNAME" "$LINENO" "$?" "enewuser failed"; else einfo " - Extra: $@"; useradd ${opts} ${euser} "$@" || diefunc "$FUNCNAME" "$LINENO" "$?" "enewuser failed"; fi ;; *-openbsd*) if [[ -z $@ ]]; then useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} || diefunc "$FUNCNAME" "$LINENO" "$?" "enewuser failed"; else einfo " - Extra: $@"; useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} "$@" || diefunc "$FUNCNAME" "$LINENO" "$?" "enewuser failed"; fi ;; *) if [[ -z $@ ]]; then useradd ${opts} ${euser} -c "added by portage for ${PN}" || diefunc "$FUNCNAME" "$LINENO" "$?" "enewuser failed"; else einfo " - Extra: $@"; useradd ${opts} ${euser} "$@" || diefunc "$FUNCNAME" "$LINENO" "$?" "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; diefunc "$FUNCNAME" "$LINENO" "$?" "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; diefunc "$FUNCNAME" "$LINENO" "$?" "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; for f in $(find ${dir} -name configure); do patch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null; done; eend 0 } eqawarn () { elog_base QA "$*"; vecho -e " ${WARN}*${NORMAL} $*" 1>&2; return 0 } esyslog () { return 0 } ewarn () { elog_base WARN "$*"; [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; echo -e " ${WARN}*${NORMAL} ${RC_INDENTATION}$*"; LAST_E_CMD="ewarn"; return 0 } exeinto () { if [ "$1" == "/" ]; then export EXEDESTTREE=""; else export EXEDESTTREE="$1"; if [ ! -d "${D}${EXEDESTTREE}" ]; then install -d "${D}${EXEDESTTREE}"; fi; fi } exeopts () { export EXEOPTIONS="$@"; hasq -s ${EXEOPTIONS} && diefunc "$FUNCNAME" "$LINENO" "$?" "Never call exeopts() with -s" } filter_invalid_flags () { local flag broken_flags; eval broken_flags=($(get_broken_flags $(getPROG CC gcc) c ${CFLAGS})); for flag in "${broken_flags[@]}"; do ewarn "Filtering out invalid CFLAG \"${flag}\""; CFLAGS="$(remove_flag "${flag}" ${CFLAGS})"; done; eval broken_flags=($(get_broken_flags $(getPROG CXX g++) c++ ${CXXFLAGS})); for flag in "${broken_flags[@]}"; do ewarn "Filtering out invalid CXXFLAG \"${flag}\""; CXXFLAGS="$(remove_flag "${flag}" ${CXXFLAGS})"; done } 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 () { if [[ $(type -t _tc_gen_usr_ldscript) == "function" ]]; then _tc_gen_usr_ldscript "$@"; return $?; fi; ewarn "QA Notice: Please upgrade your ebuild to use toolchain-funcs"; ewarn "QA Notice: rather than gen_usr_ldscript() from eutils"; local lib libdir=$(get_libdir); dodir /usr/${libdir}; for lib in "${@}"; do 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. */ GROUP ( /${libdir}/${lib} ) END_LDSCRIPT fperms a+x "/usr/${libdir}/${lib}" || diefunc "$FUNCNAME" "$LINENO" "$?" "could not change perms on ${lib}"; done } gen_wrapper () { cat > "$1" <<-EOF #!/bin/sh exec $2 "\$@" EOF chmod 0755 "$1" } getPROG () { local var=$1 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}" } get_KV () { [[ -z ${_RC_GET_KV_CACHE} ]] && _RC_GET_KV_CACHE=$(uname -r); echo $(KV_to_int "${_RC_GET_KV_CACHE}"); return $? } 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_broken_flags () { local myprog="${1}" lang="${2}"; shift 2; echo 'main(){}' | LC_ALL=C ${myprog} ${@} -x ${lang} -o /dev/null - 2>&1 | egrep "unrecognized .*option" | egrep -o -- '('\''|\"|`)-.*' | sed -r 's/('\''|`|")//g; s/^/"/; s/$/"/'; echo 'main(){}' | LC_ALL=C ${myprog} ${@} -x ${lang} -o /dev/null - 2>&1 | egrep "unrecognised debug output" | egrep -o -- '('\''|\"|`).*' | sed -r 's/('\''|`|")//g; s/^/"-g/; s/$/"/' } get_install_abis () { local order=""; if [[ -z ${MULTILIB_ABIS} ]]; then echo "default"; return 0; fi; if hasq multilib-pkg-force ${RESTRICT} || { hasq multilib-pkg ${FEATURES} && hasq multilib-pkg ${RESTRICT} }; 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 diefunc "$FUNCNAME" "$LINENO" "$?" "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 *-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 () { hasq "$@" } has_multilib_profile () { [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ] } has_version () { if [ "${EBUILD_PHASE}" == "depend" ]; then diefunc "$FUNCNAME" "$LINENO" "$?" "portageq calls (has_version calls portageq) are not allowed in the global scope"; fi; if "${PORTAGE_BIN_PATH}/portageq" 'has_version' "${ROOT}" "$1"; then return 0; else return 1; fi } hasq () { [[ " ${*:2} " == *" $1 "* ]] } hasv () { if hasq "$@"; then echo "$1"; return 0; fi; return 1 } inherit () { ECLASS_DEPTH=$(($ECLASS_DEPTH + 1)); if [[ ${ECLASS_DEPTH} > 1 ]]; then debug-print "*** Multiple Inheritence (Level: ${ECLASS_DEPTH})"; fi; local location; local olocation; local PECLASS; local B_IUSE; local B_DEPEND; local B_RDEPEND; local B_PDEPEND; while [ "$1" ]; do location="${ECLASSDIR}/${1}.eclass"; olocation=""; PECLASS="$ECLASS"; export ECLASS="$1"; if [ "${EBUILD_PHASE}" != "depend" ] && [[ ${EBUILD_PHASE} != *rm ]]; then if ! hasq $ECLASS $INHERITED; then eqawarn "QA Notice: ECLASS '$ECLASS' inherited illegally in $CATEGORY/$PF"; fi; fi; if [ -n "$PORTDIR_OVERLAY" ]; then local overlay; for overlay in ${PORTDIR_OVERLAY}; do olocation="${overlay}/eclass/${1}.eclass"; if [ -e "$olocation" ]; then location="${olocation}"; debug-print " eclass exists: ${location}"; fi; done; fi; debug-print "inherit: $1 -> $location"; [ ! -e "$location" ] && diefunc "$FUNCNAME" "$LINENO" "$?" "${1}.eclass could not be found by inherit()"; if [ "${location}" == "${olocation}" ] && ! hasq "${location}" ${EBUILD_OVERLAY_ECLASSES}; then EBUILD_OVERLAY_ECLASSES="${EBUILD_OVERLAY_ECLASSES} ${location}"; fi; set -f; unset B_IUSE B_DEPEND B_RDEPEND B_PDEPEND; [ "${IUSE-unset}" != "unset" ] && B_IUSE="${IUSE}"; [ "${DEPEND-unset}" != "unset" ] && B_DEPEND="${DEPEND}"; [ "${RDEPEND-unset}" != "unset" ] && B_RDEPEND="${RDEPEND}"; [ "${PDEPEND-unset}" != "unset" ] && B_PDEPEND="${PDEPEND}"; unset IUSE DEPEND RDEPEND PDEPEND; set +f; qa_source "$location" || diefunc "$FUNCNAME" "$LINENO" "$?" "died sourcing $location in inherit()"; set -f; [ "${IUSE-unset}" != "unset" ] && export E_IUSE="${E_IUSE} ${IUSE}"; [ "${DEPEND-unset}" != "unset" ] && export E_DEPEND="${E_DEPEND} ${DEPEND}"; [ "${RDEPEND-unset}" != "unset" ] && export E_RDEPEND="${E_RDEPEND} ${RDEPEND}"; [ "${PDEPEND-unset}" != "unset" ] && export E_PDEPEND="${E_PDEPEND} ${PDEPEND}"; [ "${B_IUSE-unset}" != "unset" ] && IUSE="${B_IUSE}"; [ "${B_IUSE-unset}" != "unset" ] || unset IUSE; [ "${B_DEPEND-unset}" != "unset" ] && DEPEND="${B_DEPEND}"; [ "${B_DEPEND-unset}" != "unset" ] || unset DEPEND; [ "${B_RDEPEND-unset}" != "unset" ] && RDEPEND="${B_RDEPEND}"; [ "${B_RDEPEND-unset}" != "unset" ] || unset RDEPEND; [ "${B_PDEPEND-unset}" != "unset" ] && PDEPEND="${B_PDEPEND}"; [ "${B_PDEPEND-unset}" != "unset" ] || unset PDEPEND; set +f; hasq $1 $INHERITED || export INHERITED="$INHERITED $1"; export ECLASS="$PECLASS"; shift; done; ((--ECLASS_DEPTH)); return 0 } insinto () { if [ "$1" == "/" ]; then export INSDESTTREE=""; else export INSDESTTREE=$1; if [ ! -d "${D}${INSDESTTREE}" ]; then install -d "${D}${INSDESTTREE}"; fi; fi } insopts () { export INSOPTIONS="$@"; hasq -s ${INSOPTIONS} && diefunc "$FUNCNAME" "$LINENO" "$?" "Never call insopts() with -s" } into () { if [ "$1" == "/" ]; then export DESTTREE=""; else export DESTTREE=$1; if [ ! -d "${D}${DESTTREE}" ]; then install -d "${D}${DESTTREE}"; fi; fi } 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} ]] } keepdir () { dodir "$@"; local x; if [ "$1" == "-R" ] || [ "$1" == "-r" ]; then shift; find "$@" -type d -printf "${D}/%p/.keep_${CATEGORY}_${PN}-${SLOT}\n" | tr "\n" "\0" | $XARGS -0 -n100 touch || diefunc "$FUNCNAME" "$LINENO" "$?" "Failed to recursively create .keep files"; else for x in "$@"; do touch "${D}/${x}/.keep_${CATEGORY}_${PN}-${SLOT}" || diefunc "$FUNCNAME" "$LINENO" "$?" "Failed to create .keep in ${D}/${x}"; done; fi } killparent () { trap INT; kill ${PORTAGE_MASTER_PID} } lchgrp () { chgrp -h "$@" } lchown () { chown -h "$@" } libopts () { export LIBOPTIONS="$@"; hasq -s ${LIBOPTIONS} && diefunc "$FUNCNAME" "$LINENO" "$?" "Never call libopts() with -s" } 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}.png}; local type=${4}; local path=${5}; if [[ -z ${type} ]]; then local catmaj=${CATEGORY%%-*}; local catmin=${CATEGORY##*-}; case ${catmaj} in app) case ${catmin} in admin) type=System ;; cdr) type=DiscBurning ;; dicts) type=Dictionary ;; editors) type=TextEditor ;; emacs) type=TextEditor ;; emulation) type=Emulator ;; laptop) type=HardwareSettings ;; office) type=Office ;; 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 ;; kids) type=KidsGame ;; emulation) type=Emulator ;; puzzle) type=LogicGame ;; rpg) type=RolePlaying ;; roguelike) type=RolePlaying ;; simulation) type=Simulation ;; sports) type=SportsGame ;; strategy) type=StrategyGame ;; *) type= ;; esac; type="Game;${type}" ;; 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 ;; geo*) type=Geology ;; math*) type=Math ;; *) type= ;; esac; type="Science;${type}" ;; 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] Encoding=UTF-8 Version=0.9.2 Name=${name} Type=Application Comment=${DESCRIPTION} Exec=${exec} TryExec=${exec%% *} Path=${path} Icon=${icon} Categories=Application;${type}; EOF ( 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] Encoding=UTF-8 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]"; local lib dir; for lib in "$@"; do [[ -e ${ROOT}/${lib} ]] || continue; dir=${lib%/*}; dodir ${dir} || diefunc "$FUNCNAME" "$LINENO" "$?" "dodir ${dir} failed"; cp "${ROOT}"/${lib} "${D}"/${lib} || diefunc "$FUNCNAME" "$LINENO" "$?" "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"; diefunc "$FUNCNAME" "$LINENO" "$?" "Invalid preserve_old_lib_notify() usage"; fi; 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 } qa_call () { local shopts=$(shopt) OLDIFS="$IFS"; "$@" || return 1; [[ $shopts != $(shopt) ]] && eqawarn "QA Notice: Global shell options changed and were not restored while calling '$*'"; [[ "$IFS" != "$OLDIFS" ]] && eqawarn "QA Notice: Global IFS changed and was not restored while calling '$*'"; return 0 } qa_source () { local shopts=$(shopt) OLDIFS="$IFS"; source "$@" || return 1; [[ $shopts != $(shopt) ]] && eqawarn "QA Notice: Global shell options changed and were not restored while sourcing '$*'"; [[ "$IFS" != "$OLDIFS" ]] && eqawarn "QA Notice: Global IFS changed and was not restored while sourcing '$*'"; return 0 } quiet_mode () { [[ ${PORTAGE_QUIET} -eq 1 ]] } register_die_hook () { export EBUILD_DEATH_HOOKS="${EBUILD_DEATH_HOOKS} $*" } remove_flag () { local remove="${1}"; shift; while [[ -n "${1}" ]]; do [[ "${1}" != "${remove}" ]] && echo -n "${1} "; shift; done } remove_path_entry () { [ "${IFS:-unset}" != "unset" ] && old_IFS="${IFS}"; IFS=":"; stripped_path="${PATH}"; while [ -n "$1" ]; do cur_path=""; for p in ${stripped_path}; do if [ "${p/${1}}" == "${p}" ]; then cur_path="${cur_path}:${p}"; fi; done; stripped_path="${cur_path#:*}"; shift; done; if [ "${old_IFS:-unset}" != "unset" ]; then IFS="${old_IFS}"; unset old_IFS; else unset IFS; fi; PATH="${stripped_path}" } 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 ;; *) diefunc "$FUNCNAME" "$LINENO" "$?" "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 } set_arch_to_kernel () { i=10; while ((i--)); do ewarn "PLEASE UPDATE TO YOUR PACKAGE TO USE linux-info.eclass"; done; export EUTILS_ECLASS_PORTAGE_ARCH="${ARCH}"; case ${ARCH} in x86) export ARCH="i386" ;; amd64) export ARCH="x86_64" ;; hppa) export ARCH="parisc" ;; mips) export ARCH="mips" ;; sparc) export ARCH="$(tc-arch-kernel)" ;; *) export ARCH="${ARCH}" ;; esac } set_arch_to_portage () { i=10; while ((i--)); do ewarn "PLEASE UPDATE TO YOUR PACKAGE TO USE linux-info.eclass"; done; export ARCH="${EUTILS_ECLASS_PORTAGE_ARCH}" } set_colors () { COLS=${COLUMNS:-0}; (( COLS == 0 )) && COLS=$(set -- $(stty size 2>/dev/null) ; echo $2); (( COLS > 0 )) || (( COLS = 80 )); COLS=$((${COLS} - 8)); [ "${TERM}" = "cons25" ] && COLS=$((${COLS} - 1)); ENDCOL='['${COLS}'C'; if [ -n "${PORTAGE_COLORMAP}" ]; then eval ${PORTAGE_COLORMAP}; else GOOD=''; WARN=''; BAD=''; HILITE=''; BRACKET=''; fi; NORMAL='' } src_compile () { econf $(use_enable alsa) $(use_enable alsa alsatest) $(use_enable oss) $(use_enable mp3) $(use_enable aac) $(use_enable ao) $(use_enable ao aotest) $(use_enable audiofile) $(use_enable audiofile audiofiletest) $(use_enable flac libFLACtest) $(use_enable flac) $(use_enable flac oggflac) $(use_enable icecast shout) $(use_enable ipv6) $(use_enable mp3) $(use_enable mp3 id3) $(use_enable mikmod libmikmodtest) $(use_enable mikmod mod) $(use_enable musepack mpc) $(use_enable pulseaudio pulse) $(use_enable vorbis oggvorbis) $(use_enable vorbis vorbistest) || diefunc "$FUNCNAME" "$LINENO" "$?" "could not configure"; emake || diefunc "$FUNCNAME" "$LINENO" "$?" "emake failed" } src_install () { dodir /var/run/mpd; fowners mpd:audio /var/run/mpd; fperms 750 /var/run/mpd; keepdir /var/run/mpd; emake install DESTDIR="${D}" || diefunc "$FUNCNAME" "$LINENO" "$?"; rm -rf "${D}"/usr/share/doc/mpd/; dodoc ChangeLog INSTALL README TODO UPGRADING; dodoc doc/COMMANDS doc/mpdconf.example; insinto /etc; newins doc/mpdconf.example mpd.conf; newinitd "${FILESDIR}"/mpd.rc mpd; if use unicode; then dosed 's:^#filesystem_charset.*$:filesystem_charset "UTF-8":' /etc/mpd.conf; fi; diropts -m0755 -o mpd -g audio; dodir /var/lib/mpd/music; keepdir /var/lib/mpd/music; dodir /var/lib/mpd/playlists; keepdir /var/lib/mpd/playlists; dodir /var/log/mpd; keepdir /var/log/mpd; use alsa && dosed 's:need :need alsasound :' /etc/init.d/mpd } src_test () { if emake -j1 check -n >&/dev/null; then vecho ">>> Test phase [check]: ${CATEGORY}/${PF}"; if ! emake -j1 check; then hasq test $FEATURES && diefunc "$FUNCNAME" "$LINENO" "$?" "Make check failed. See above for details."; hasq test $FEATURES || eerror "Make check failed. See above for details."; fi; else if emake -j1 test -n >&/dev/null; then vecho ">>> Test phase [test]: ${CATEGORY}/${PF}"; if ! emake -j1 test; then hasq test $FEATURES && diefunc "$FUNCNAME" "$LINENO" "$?" "Make test failed. See above for details."; hasq test $FEATURES || eerror "Make test failed. See above for details."; fi; else vecho ">>> Test phase [none]: ${CATEGORY}/${PF}"; fi; fi } src_unpack () { unpack ${A}; cd "${S}"; epatch "${FILESDIR}"/mpdconf.patch || diefunc "$FUNCNAME" "$LINENO" "$?" "epatch for config file failed" } 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_duplicate_slashes () { if [[ -n $1 ]]; then local removed=$1; while [[ ${removed} == *//* ]]; do removed=${removed//\/\///}; done; echo ${removed}; fi } tc-arch () { tc-ninja_magic_to_arch portage $@ } tc-arch-kernel () { tc-ninja_magic_to_arch kern $@ } 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 ;; bfin*) ninj blackfin bfin ;; cris*) echo cris ;; hppa*) ninj parisc hppa ;; i?86*) ninj i386 x86 ;; 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*) ninj x86_64 amd64 ;; *) echo ${ARCH} ;; esac } treecopy () { dest=${!#}; files_count=$#; while (( $# > 1 )); do dirstruct=$(dirname "$1"); mkdir -p "${dest}/${dirstruct}"; cp -pPR "$1" "${dest}/${dirstruct}"; shift; done } unpack () { local x; local y; local myfail; local tar_opts=""; [ -z "$*" ] && diefunc "$FUNCNAME" "$LINENO" "$?" "Nothing passed to the 'unpack' command"; for x in "$@"; do vecho ">>> Unpacking ${x} to ${PWD}"; y=${x%.*}; y=${y##*.}; myfail="${x} does not exist"; if [ "${x:0:2}" = "./" ]; then srcdir=""; else srcdir="${DISTDIR}/"; fi; [[ ${x} == ${DISTDIR}* ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Arguments to unpack() should not begin with \${DISTDIR}."; [ ! -s "${srcdir}${x}" ] && diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail"; myfail="failure unpacking ${x}"; case "${x##*.}" in tar) tar xof "${srcdir}${x}" ${tar_opts} || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail" ;; tgz) tar xozf "${srcdir}${x}" ${tar_opts} || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail" ;; tbz | tbz2) bzip2 -dc "${srcdir}${x}" | tar xof - ${tar_opts}; _pipestatus="${PIPESTATUS[*]}"; [[ "${_pipestatus// /}" -eq 0 ]] || diefunc "$FUNCNAME" "$LINENO" "$_pipestatus" "$myfail" ;; ZIP | zip | jar) unzip -qo "${srcdir}${x}" || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail" ;; gz | Z | z) if [ "${y}" == "tar" ]; then tar zoxf "${srcdir}${x}" ${tar_opts} || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail"; else gzip -dc "${srcdir}${x}" > ${x%.*} || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail"; fi ;; bz2 | bz) if [ "${y}" == "tar" ]; then bzip2 -dc "${srcdir}${x}" | tar xof - ${tar_opts}; _pipestatus="${PIPESTATUS[*]}"; [[ "${_pipestatus// /}" -eq 0 ]] || diefunc "$FUNCNAME" "$LINENO" "$_pipestatus" "$myfail"; else bzip2 -dc "${srcdir}${x}" > ${x%.*} || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail"; fi ;; 7Z | 7z) local my_output; my_output="$(7z x -y "${srcdir}/${x}")"; if [ $? -ne 0 ]; then echo "${my_output}" 1>&2; diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail"; fi ;; RAR | rar) unrar x -idq -o+ "${srcdir}/${x}" || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail" ;; LHa | LHA | lha | lzh) lha xqf "${srcdir}/${x}" || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail" ;; a | deb) ar x "${srcdir}/${x}" || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail" ;; *) vecho "unpack ${x}: file format not recognized. Ignoring." ;; esac; done; find . -mindepth 1 -maxdepth 1 ! -type l -print0 | ${XARGS} -0 chmod -fR a+rX,u+w,g-w,o-w } unpack_makeself () { local src_input=${1:-${A}}; local src=$(find_unpackable_file "${src_input}"); local skip=$2; local exe=$3; [[ -z ${src} ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "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."; diefunc "$FUNCNAME" "$LINENO" "$?" "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}'" ;; *) diefunc "$FUNCNAME" "$LINENO" "$?" "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 ]] || diefunc "$FUNCNAME" "$LINENO" "$_pipestatus" "failure unpacking (${filetype}) makeself ${shrtsrc} ('${ver}' +${skip})" } unpack_pdv () { local src=$(find_unpackable_file "$1"); local sizeoff_t=$2; [[ -z ${src} ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Could not locate source for '$1'"; [[ -z ${sizeoff_t} ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "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 } unset_colors () { COLS="25 80"; ENDCOL=; GOOD=; WARN=; BAD=; NORMAL=; HILITE=; BRACKET= } upgrade_warning () { echo; ewarn "Home directory of user mpd, as well as default locations in mpd.conf have"; ewarn "been changed to /var/lib/mpd, please bear that in mind while updating"; ewarn "your mpd.conf file."; echo; epause 5 } use () { useq ${1} } use_enable () { if [ -z "$1" ]; then echo "!!! use_enable() called without a parameter." 1>&2; echo "!!! use_enable [ [value]]" 1>&2; return 1; fi; local UE_SUFFIX=""; if [ ! -z "${3}" ]; then UE_SUFFIX="=${3}"; fi; local UWORD="$2"; if [ -z "${UWORD}" ]; then UWORD="$1"; fi; if useq $1; then echo "--enable-${UWORD}${UE_SUFFIX}"; else echo "--disable-${UWORD}"; fi; return 0 } use_with () { if [ -z "$1" ]; then echo "!!! use_with() called without a parameter." 1>&2; echo "!!! use_with [ [value]]" 1>&2; return 1; fi; local UW_SUFFIX=""; if [ ! -z "${3}" ]; then UW_SUFFIX="=${3}"; fi; local UWORD="$2"; if [ -z "${UWORD}" ]; then UWORD="$1"; fi; if useq $1; then echo "--with-${UWORD}${UW_SUFFIX}"; else echo "--without-${UWORD}"; fi; return 0 } useq () { local u=$1; local found=0; if [[ ${u:0:1} == "!" ]]; then u=${u:1}; found=1; fi; if ! hasq "${u}" ${IUSE} ${E_IUSE} && ! hasq "${u}" ${PORTAGE_ARCHLIST} selinux; then eqawarn "QA Notice: USE Flag '${u}' not in IUSE for ${CATEGORY}/${PF}"; fi; if hasq ${u} ${USE}; then return ${found}; else return $((!found)); fi } usev () { if useq ${1}; then echo "${1}"; return 0; fi; return 1 } 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 } vecho () { quiet_mode || echo "$@" } declare -x A="mpd-0.12.1.tar.bz2" declare -x AA="mpd-0.12.1.tar.bz2" declare -x ABI="amd64" declare -x ACCEPT_KEYWORDS="amd64" declare -x ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" 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 ANT_HOME="/usr/share/ant-core" declare -x ARCH="amd64" declare -x ASFLAGS_x86="--32" declare -x AUTOCLEAN="yes" declare -x BASH_ENV="/etc/spork/is/not/valid/profile.env" declare -x BUILD_PREFIX="/tmp/portage" declare -x CATEGORY="media-sound" declare -x CBUILD="x86_64-pc-linux-gnu" declare -x CCACHE_DISABLE="1" declare -x CDEFINE_amd64="__x86_64__" declare -x CDEFINE_default="__unix__" declare -x CDEFINE_x86="__i386__" declare -x CFLAGS="-march=athlon64 -O3 -pipe -msse3 -fomit-frame-pointer -funroll-loops -fforce-mem -fforce-addr" declare -x CFLAGS_default="" declare -x CFLAGS_x86="-m32 -L/emul/linux/x86/lib -L/emul/linux/x86/usr/lib" declare -x CHOST="x86_64-pc-linux-gnu" declare -x CHOST_amd64="x86_64-pc-linux-gnu" declare -x CHOST_default="x86_64-pc-linux-gnu" declare -x CHOST_x86="i686-pc-linux-gnu" declare -x CLASSPATH="." declare -x CLEAN_DELAY="5" declare -x CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config" declare -x CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/revdep-rebuild /etc/terminfo" declare -x CTARGET_default="x86_64-pc-linux-gnu" declare -x CVS_RSH="ssh" declare -x CXXFLAGS="-march=athlon64 -O3 -pipe -msse3 -fomit-frame-pointer -funroll-loops -fforce-mem -fforce-addr" declare -x D="/tmp/portage/media-sound/mpd-0.12.1/image/" declare -x DEFAULT_ABI="amd64" declare -x DESTTREE="/usr" declare -x DIROPTIONS="-m0755" declare -x DISTDIR="/tmp/portage/media-sound/mpd-0.12.1/distdir" declare -x DOCDESTTREE="" declare -x EBUILD="/usr/portage/media-sound/mpd/mpd-0.12.1.ebuild" declare -x EBUILD_PHASE="unpack" declare -x ECLASS="" declare -x ECLASSDIR="/usr/portage/eclass" declare -ix ECLASS_DEPTH="0" declare -x ELIBC="glibc" declare -x EMERGE_FROM="ebuild" declare -x EMERGE_WARNING_DELAY="10" declare -x EXEDESTTREE="" declare -x EXEOPTIONS="-m0755" declare -x FEATURES="distlocks metadata-transfer parallel-fetch sandbox sfperms strict" declare -x FETCHCOMMAND="/usr/bin/wget -t 5 -T 60 --passive-ftp -P \${DISTDIR} \${URI}" declare -x FILESDIR="/usr/portage/media-sound/mpd/files" declare -x GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/3.4.6" declare -x GCC_SPECS="" declare -x GDK_USE_XFT="1" declare -x GENERATION="2" declare -x GENTOO_MIRRORS="ftp://ftp.ucsb.edu/pub/mirrors/linux/gentoo/ http://ftp.snt.utwente.nl/pub/os/linux/gentoo http://gentoo.tiscali.nl/ ftp://gentoo.tiscali.nl/pub/mirror/gentoo/ http://linuv.uv.es/mirror/gentoo/ " declare -x G_BROKEN_FILENAMES="1" declare -x G_FILENAME_ENCODING="UTF-8" declare -x HOME="/tmp/portage/media-sound/mpd-0.12.1/homedir" declare -x INFOPATH="/usr/share/info:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.16.1/info:/usr/share/gcc-data/x86_64-pc-linux-gnu/3.4.6/info" declare -x INHERITED="multilib toolchain-funcs eutils portability" declare -x INPUT_DEVICES="keyboard mouse" declare -x INSDESTTREE="" declare -x INSOPTIONS="-m0644" declare -x IUSE=" aac alsa ao audiofile flac icecast ipv6 mp3 mikmod mp3 musepack oss pulseaudio unicode vorbis" declare -x JAVAC="/opt/blackdown-jdk-1.4.2.03/bin/javac" declare -x JAVA_HOME="/opt/blackdown-jdk-1.4.2.03" declare -x JDK_HOME="/opt/blackdown-jdk-1.4.2.03" declare -x KDEDIRS="/usr/kde/3.5:/usr:/usr/local" declare -x KERNEL="linux" declare -x KERNEL_ABI="amd64" declare -x KV="2.6.20-gentoo-r7" declare -x LANG="ru_RU.UTF-8" declare -x LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" declare -x LC_ALL="" declare -x LDFLAGS_default="" declare -x LDFLAGS_x86="-m elf_i386 -L/emul/linux/x86/lib -L/emul/linux/x86/usr/lib" declare -x LD_PRELOAD="libsandbox.so" declare -x LESS="-R -M --shift 5" declare -x LESSOPEN="|lesspipe.sh %s" declare -x LIBDIR_amd64="lib64" declare -x LIBDIR_default="lib" declare -x LIBDIR_x86="lib32" declare -x LIBOPTIONS="-m0644" declare -x LINGUAS="ru" declare -x LOGNAME="root" declare -x MAKEOPTS="-j3" declare -x MANPATH="/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.16.1/man:/usr/share/gcc-data/x86_64-pc-linux-gnu/3.4.6/man:/opt/blackdown-jdk-1.4.2.03/man:/etc/java-config/system-vm/man/:/usr/qt/3/doc/man:/opt/vmware/workstation/man" declare -x MOPREFIX="mpd" declare -x MULTILIB_ABIS="amd64 x86" declare -x MULTILIB_STRICT_DENY="64-bit.*shared object" declare -x MULTILIB_STRICT_DIRS="/lib /usr/lib /usr/kde/*/lib /usr/qt/*/lib /usr/X11R6/lib" declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage|ROX-CLib)" declare -x O="/usr/portage/media-sound/mpd" declare -x OLDPWD="/tmp/portage/media-sound/mpd-0.12.1/work/mpd-0.12.1" declare -x OPENGL_PROFILE="nvidia" declare -x P="mpd-0.12.1" declare -x PAGER="/usr/bin/less" declare -x PATH="/usr/local/sbin:/sbin:/usr/sbin:/usr/lib/portage/bin:/usr/local/bin:/bin:/usr/bin:/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/3.4.6:/opt/blackdown-jdk-1.4.2.03/bin:/opt/blackdown-jdk-1.4.2.03/jre/bin:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin:/opt/vmware/workstation/bin" declare -x PF="mpd-0.12.1" declare -x PKGDIR="/usr/portage/packages" declare -x PKGUSE="" declare -x PKG_CONFIG_PATH="/usr/qt/3/lib64/pkgconfig" declare -x PKG_LOGDIR="/tmp/portage/media-sound/mpd-0.12.1/temp/logging" declare -x PKG_TMPDIR="/tmp/binpkgs" declare -x PN="mpd" declare -x PORTAGE_ACTUAL_DISTDIR="/usr/portage/distfiles" declare -x PORTAGE_ARCHLIST="ppc s390 amd64 x86 ppc64 x86-fbsd m68k arm sparc sh mips ia64 alpha ppc-macos hppa sparc-fbsd" declare -x PORTAGE_BASHRC="/etc/portage/bashrc" declare -x PORTAGE_BINHOST_CHUNKSIZE="3000" declare -x PORTAGE_BIN_PATH="/usr/lib/portage/bin" declare -x PORTAGE_BUILDDIR="/tmp/portage/media-sound/mpd-0.12.1" declare -x PORTAGE_COLORMAP="GOOD=\$'' WARN=\$'' BAD=\$'' HILITE=\$'' BRACKET=\$''" declare -x PORTAGE_CONFIGROOT="/" declare -x PORTAGE_DEBUG="0" declare -x PORTAGE_DEPCACHEDIR="/var/cache/edb/dep" declare -x PORTAGE_ELOG_CLASSES="log warn error" declare -x PORTAGE_ELOG_MAILFROM="portage" declare -x PORTAGE_ELOG_MAILSUBJECT="[portage] ebuild log for \${PACKAGE} on \${HOST}" declare -x PORTAGE_ELOG_MAILURI="root" declare -x PORTAGE_GID="250" declare -x PORTAGE_INST_GID="0" declare -x PORTAGE_INST_UID="0" declare -x PORTAGE_LOG_FILE="/tmp/portage/media-sound/mpd-0.12.1/temp/build.log" declare -x PORTAGE_MASTER_PID="10741" declare -x PORTAGE_PYM_PATH="/usr/lib/portage/pym" declare -x PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --delete-after --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages --filter=H_**/files/digest-*" declare -x PORTAGE_RSYNC_RETRIES="3" declare -x PORTAGE_TMPDIR="/tmp" declare -x PORTAGE_WORKDIR_MODE="0700" declare -x PORTDIR="/usr/portage" declare -x PORTDIR_OVERLAY="/usr/portage/local/layman/xeffects" declare -x PR="r0" declare -x PRELINK_PATH_MASK="/usr/lib/gstreamer-0.10" declare -x PROFILE_PATHS="/usr/portage/profiles/base /usr/portage/profiles/default-linux /usr/portage/profiles/default-linux/amd64 /usr/portage/profiles/default-linux/amd64/2007.0 /etc/portage/profile /etc/portage/profile" declare -x PV="0.12.1" declare -x PVR="0.12.1" declare -x PWD="/tmp/portage/media-sound/mpd-0.12.1" declare -x PYTHONPATH="/usr/lib64/portage/pym" declare -x QMAKESPEC="linux-g++" declare -x QTDIR="/usr/qt/3" declare -x RDEPEND="dev-util/gperf !media-sound/mpd-svn !sys-cluster/mpich2 sys-libs/zlib aac? ( >=media-libs/faad2-2.0_rc2 ) alsa? ( media-sound/alsa-utils ) ao? ( >=media-libs/libao-0.8.4 ) audiofile? ( media-libs/audiofile ) flac? ( ~media-libs/flac-1.1.2 ) icecast? ( media-libs/libshout ) mp3? ( media-libs/libmad media-libs/libid3tag ) mikmod? ( media-libs/libmikmod ) musepack? ( media-libs/libmpcdec ) pulseaudio? ( media-sound/pulseaudio ) vorbis? ( media-libs/libvorbis ) " declare -x RESTRICT="" declare -x RESUMECOMMAND="/usr/bin/wget -c -t 5 -T 60 --passive-ftp -P \${DISTDIR} \${URI}" declare -x ROOT="/" declare -x ROOTPATH="/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/3.4.6:/opt/blackdown-jdk-1.4.2.03/bin:/opt/blackdown-jdk-1.4.2.03/jre/bin:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin:/opt/vmware/workstation/bin" declare -x RPMDIR="/usr/portage/rpm" declare -x S="/tmp/portage/media-sound/mpd-0.12.1/work/mpd-0.12.1" declare -x SHELL="/bin/bash" declare -x SHLVL="2" declare -x SLOT="0" declare -x STAGE1_USE="nptl nptlonly unicode" declare -x STARTDIR="/home/vovka" declare -x SUDO_COMMAND="/usr/bin/emerge mpd" declare -x SUDO_GID="1002" declare -x SUDO_UID="1002" declare -x SUDO_USER="vovka" declare -x SYMLINK_LIB="yes" declare -x SYNC="rsync://rsync.europe.gentoo.org/gentoo-portage" declare -x T="/tmp/portage/media-sound/mpd-0.12.1/temp" declare -x TERM="xterm" declare -x TMP="/tmp/portage/media-sound/mpd-0.12.1/temp" declare -x TMPDIR="/tmp/portage/media-sound/mpd-0.12.1/temp" declare -x USE="amd64 3dnow 3dnowext X acl alsa alsa_cards_ali5451 alsa_cards_als4000 alsa_cards_atiixp alsa_cards_atiixp-modem alsa_cards_bt87x alsa_cards_ca0106 alsa_cards_cmipci alsa_cards_emu10k1x alsa_cards_ens1370 alsa_cards_ens1371 alsa_cards_es1938 alsa_cards_es1968 alsa_cards_fm801 alsa_cards_hda-intel alsa_cards_intel8x0 alsa_cards_intel8x0m alsa_cards_maestro3 alsa_cards_trident alsa_cards_usb-audio alsa_cards_via82xx alsa_cards_via82xx-modem alsa_cards_ymfpci alsa_pcm_plugins_adpcm alsa_pcm_plugins_alaw alsa_pcm_plugins_asym alsa_pcm_plugins_copy alsa_pcm_plugins_dmix alsa_pcm_plugins_dshare alsa_pcm_plugins_dsnoop alsa_pcm_plugins_empty alsa_pcm_plugins_extplug alsa_pcm_plugins_file alsa_pcm_plugins_hooks alsa_pcm_plugins_iec958 alsa_pcm_plugins_ioplug alsa_pcm_plugins_ladspa alsa_pcm_plugins_lfloat alsa_pcm_plugins_linear alsa_pcm_plugins_meter alsa_pcm_plugins_mulaw alsa_pcm_plugins_multi alsa_pcm_plugins_null alsa_pcm_plugins_plug alsa_pcm_plugins_rate alsa_pcm_plugins_route alsa_pcm_plugins_share alsa_pcm_plugins_shm alsa_pcm_plugins_softvol berkdb bitmap-fonts cdr cli cracklib crypt cups dri dvdr elibc_glibc flac fortran gdbm gnome gpm gtk gtk2 iconv input_devices_keyboard input_devices_mouse isdnlog jpeg kernel_linux lcd_devices_bayrad lcd_devices_cfontz lcd_devices_cfontz633 lcd_devices_glk lcd_devices_hd44780 lcd_devices_lb216 lcd_devices_lcdm001 lcd_devices_mtxorb lcd_devices_ncurses lcd_devices_text libg++ linguas_ru mad midi mmx mmxext mp3 mudflap ncurses nls nptl nptlonly nvidia ogg opengl openmp oss pam pcre perl png pppd python readline reflection samba session smb spl sse sse2 ssl tcpd truetype truetype-fonts type1-fonts unicode userland_GNU userlocales video_cards_nvidia vorbis xorg xscreensaver zlib" declare -x USER="root" declare -x USERLAND="GNU" declare -x USE_EXPAND="ALSA_CARDS ALSA_PCM_PLUGINS CAMERAS CROSSCOMPILE_OPTS DVB_CARDS ELIBC FCDSL_CARDS FOO2ZJS_DEVICES FRITZCAPI_CARDS INPUT_DEVICES KERNEL LCD_DEVICES LINGUAS LIRC_DEVICES MISDN_CARDS USERLAND VIDEO_CARDS" declare -x USE_EXPAND_HIDDEN="CROSSCOMPILE_OPTS ELIBC KERNEL USERLAND" declare -x USE_ORDER="env:pkg:conf:defaults:pkginternal" declare -x VIDEO_CARDS="nvidia" declare -x VMHANDLE="blackdown-jdk-1.4.2" declare -x WORKDIR="/tmp/portage/media-sound/mpd-0.12.1/work" declare -x XARGS="xargs -r"