A='glibc-2.6.1.tar.bz2 glibc-libidn-2.6.1.tar.bz2 glibc-ports-2.6.1.tar.bz2 glibc-2.6.1-patches-1.1.tar.bz2' AA='glibc-2.6.1.tar.bz2 glibc-libidn-2.6.1.tar.bz2 glibc-ports-2.6.1.tar.bz2 glibc-2.6.1-patches-1.1.tar.bz2' ABI=default ACCEPT_KEYWORDS=x86 ALLOWED_FLAGS=$'-pipe -O -O0 -O1 -O2 -mcpu -march -mtune -fstack-protector -fstack-protector-all -fbounds-checking -fno-PIE -fno-pie -fno-unit-at-a-time -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+ -fno-ident -W* -w -fno-stack-protector -fno-stack-protector-all \t\t-fno-strict-aliasing -fno-bounds-checking -mregparm -mno-app-regs -mapp-regs \t\t-mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow \t\t-mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 \t\t-msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu \t\t-mieee -mieee-with-inexact -mschedule \t\t-mtls-direct-seg-refs -mno-tls-direct-seg-refs \t\t-mflat -mno-flat -mno-faster-structs -mfaster-structs \t\t-m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC \t\t-mlive-g0 -mcmodel -mstack-bias -mno-stack-bias \t\t-msecure-plt -D*' ALSA_CARDS='ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 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' ARCH=x86 ASFLAGS= ASFLAGS_BASE= 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]="17" [3]="1" [4]="release" [5]="i686-pc-linux-gnu") BASH_VERSION='3.2.17(1)-release' BRACKET=$'\E[34;01m' BRANCH_UPDATE= BUILD_PREFIX=/var/tmp/portage CATEGORY=sys-libs CBUILD=i686-pc-linux-gnu CCACHE_DISABLE=1 CDEFINE_default=__unix__ CFLAGS='-march=i686 -pipe -DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -fno-strict-aliasing' CFLAGS_BASE='-O2 -march=i686 -pipe -DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64' CFLAGS_default= CHOST=i686-pc-linux-gnu CHOST_default=i686-pc-linux-gnu CLEAN_DELAY=5 COLS=72 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/fonts/fonts.conf /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/terminfo /etc/udev/rules.d' CPPFLAGS= CTARGET=i686-pc-linux-gnu CTARGET_default=i686-pc-linux-gnu CVS_RSH=ssh CXXFLAGS='-pipe -DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -fno-strict-aliasing' CXXFLAGS_BASE='-O2 -march=i686 -pipe -DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64' D=/var/tmp/portage/sys-libs/glibc-2.6.1/image/ DEBUGBUILD=1 DEFAULT_ABI=default DEPEND=$'>=sys-devel/gcc-3.4.4\n\tarm? ( >=sys-devel/binutils-2.16.90 >=sys-devel/gcc-4.1.0 )\n\tppc? ( >=sys-devel/gcc-4.1.0 )\n\tppc64? ( >=sys-devel/gcc-4.1.0 )\n\t>=sys-devel/binutils-2.15.94\n\t >=sys-kernel/linux-headers-2.6.9 \n\t|| ( >=sys-devel/gcc-config-1.3.12 app-admin/eselect-compiler )\n\t>=app-misc/pax-utils-0.1.10\n\tvirtual/os-headers\n\tnls? ( sys-devel/gettext )\n\t>=sys-apps/portage-2.1.2\n\tselinux? ( sys-libs/libselinux ) >=sys-libs/timezone-data-2007c sys-devel/gnuconfig' DESCRIPTION='GNU libc6 (also called glibc2) C library' DESTTREE=/usr DIROPTIONS=-m0755 DIRSTACK=() DISTDIR=/var/tmp/portage/sys-libs/glibc-2.6.1/distdir EBUILD=/usr/portage/sys-libs/glibc/glibc-2.6.1.ebuild EBUILD_MASTER_PID=10776 EBUILD_PHASE=unpack EBUILD_SH_ARGS=unpack ECLASS= ECLASSDIR=/usr/portage/eclass ECLASS_DEPTH=0 EDITOR=/usr/bin/emacs ELIBC=glibc ELIBTOOL_VERSION=2.0.2 ELT_APPLIED_PATCHES= ELT_LTMAIN_SH= ELT_PATCH_DIR=/usr/portage/eclass/ELT-patches EMERGE_FROM=ebuild EMERGE_WARNING_DELAY=10 EMULTILIB_PKG=true ENDCOL=$'\E[A\E[72C' EPATCH_EXCLUDE= EPATCH_FORCE=no EPATCH_MULTI_MSG='Applying various patches (bugfixes/updates) ...' EPATCH_OPTS='-g0 -E --no-backup-if-mismatch' EPATCH_SINGLE_MSG= EPATCH_SOURCE=/var/tmp/portage/sys-libs/glibc-2.6.1/work/patch EPATCH_SUFFIX=patch.bz2 EUID=0 EXEOPTIONS=-m0755 F77=gfortran F77FLAGS='-DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64' F90=gfortran F90FLAGS='-DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64' F95=gfortran F95FLAGS='-DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64' FC=gfortran FCFLAGS='-DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64' FEATURES='distlocks metadata-transfer sandbox sfperms strict unmerge-orphans userfetch' FETCHCOMMAND='/usr/bin/wget -t 5 -T 60 --passive-ftp -O ${DISTDIR}/${FILE} ${URI}' FILESDIR=/usr/portage/sys-libs/glibc/files GCC_PATH=/usr/i686-pc-linux-gnu/gcc-bin/4.1.2 GCC_SPECS= GDK_USE_XFT=1 GENTOO_MIRRORS='http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo /usr/local/portage-cmaq/distfiles /usr/local/portage/distfiles' 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=/var/tmp/portage/sys-libs/glibc-2.6.1/homedir HOMEPAGE=http://www.gnu.org/software/libc/libc.html HOSTNAME=nehet HOSTTYPE=i686 HUSHLOGIN=FALSE IFS=$' \t\n' INFOPAGE_VER= INFOPATH=/usr/share/info:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/info:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info:/usr/share/info/emacs-21 INHERITED='toolchain-funcs portability flag-o-matic versionator multilib libtool gnuconfig eutils' INPUT_DEVICES='keyboard mouse evdev' INSDESTTREE= INSOPTIONS=-m0644 IUSE=' debug nls hardened multilib selinux glibc-omitfp profile glibc-compat20' KDEDIRS=/usr:/usr/local:/usr/kde/3.5 KERNEL=linux KERNEL_ABI=default KEYWORDS='~alpha ~amd64 ~arm ~ia64 ~mips ppc ~ppc64 ~sh ~sparc x86' KV=2.6.22-gentoo-r5 LAST_E_CMD=einfo LAST_E_LEN=47 LCD_DEVICES='bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text' LDFLAGS_default= LESS='-R -M --shift 5' LESSOPEN='|lesspipe.sh %s' LIBDIR_default=lib LIBOPTIONS=-m0644 LICENSE=LGPL-2 LINGUAS=en LOGNAME=root LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.pdf=00;32:*.ps=00;32:*.txt=00;32:*.patch=00;32:*.diff=00;32:*.log=00;32:*.tex=00;32:*.doc=00;32:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:' LT_VER= MACHTYPE=i686-pc-linux-gnu MAIL=/var/mail/root MAKEOPTS=-j3 MANPAGE_VER= MANPATH=/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/man:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man:/usr/lib/php5/man/:/usr/kde/3.5/share/man:/usr/qt/3/doc/man MOPREFIX=glibc MULTILIB_ABIS=default NORMAL=$'\E[0m' NPTL_KERN_VER=2.6.9 O=/usr/portage/sys-libs/glibc OCC= OCXX= OLDPWD=/var/tmp/portage/sys-libs/glibc-2.6.1/work OPENGL_PROFILE=xorg-x11 OPTERR=1 OPTIND=1 OSTYPE=linux-gnu P=glibc-2.6.1 PAGER=/usr/bin/less PATCH_GLIBC_VER=2.6.1 PATCH_VER=1.1 PATH=/usr/local/sbin:/sbin:/usr/sbin:/usr/lib/portage/bin:/usr/local/bin:/bin:/usr/bin:/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.1.2:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin PDEPEND=' ' PF=glibc-2.6.1 PIPESTATUS=([0]="0") PKGDIR=/usr/portage/packages PKGUSE= PKG_CONFIG_PATH=/usr/qt/3/lib/pkgconfig PKG_LOGDIR=/var/tmp/portage/sys-libs/glibc-2.6.1/temp/logging PKG_TMPDIR=/var/tmp/binpkgs PN=glibc 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=/var/tmp/portage/sys-libs/glibc-2.6.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_ELOG_SYSTEM='save_summary echo' PORTAGE_GID=250 PORTAGE_INST_GID=0 PORTAGE_INST_UID=0 PORTAGE_LOG_FILE=/var/tmp/portage/sys-libs/glibc-2.6.1/temp/build.log PORTAGE_MASTER_PID=6157 PORTAGE_PYM_PATH=/usr/lib/portage/pym PORTAGE_REPO_NAME=gentoo 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=/var/tmp PORTAGE_WORKDIR_MODE=0700 PORTDIR=/usr/portage PORTDIR_OVERLAY='/usr/local/portage-cmaq /usr/local/portage' PORTS_VER=2.6.1 PPID=10775 PR=r0 PROFILE_PATHS=$'/usr/portage/profiles/base\n/usr/portage/profiles/default-linux\n/usr/portage/profiles/default-linux/x86\n/usr/portage/profiles/default-linux/x86/2006.1\n/etc/portage/profile' PROVIDE=virtual/libc PS4='+ ' PV=2.6.1 PVM_ARCH=LINUX PVM_ROOT=/usr/share/pvm3 PVR=2.6.1 PWD=/var/tmp/portage/sys-libs/glibc-2.6.1 PYTHONPATH=/usr/lib/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=$'nls? ( sys-devel/gettext )\n\tselinux? ( sys-libs/libselinux ) sys-libs/timezone-data ' RELEASE_VER=2.6.1 RESTRICT=strip RESUMECOMMAND='/usr/bin/wget -c -t 5 -T 60 --passive-ftp -O ${DISTDIR}/${FILE} ${URI}' ROOT=/ ROOTPATH=/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.1.2:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin RPMDIR=/usr/portage/rpm S=/var/tmp/portage/sys-libs/glibc-2.6.1/work/glibc-2.6.1 SHELL=/bin/bash SHELLOPTS=braceexpand:hashall:interactive-comments SHLVL=3 SLOT=2.2 SRC_URI=$'mirror://gnu/glibc/glibc-2.6.1.tar.bz2 ftp://sources.redhat.com/pub/glibc/releases/glibc-2.6.1.tar.bz2 ftp://sources.redhat.com/pub/glibc/snapshots/glibc-2.6.1.tar.bz2\nmirror://gnu/glibc/glibc-libidn-2.6.1.tar.bz2 ftp://sources.redhat.com/pub/glibc/releases/glibc-libidn-2.6.1.tar.bz2 ftp://sources.redhat.com/pub/glibc/snapshots/glibc-libidn-2.6.1.tar.bz2\nmirror://gnu/glibc/glibc-ports-2.6.1.tar.bz2 ftp://sources.redhat.com/pub/glibc/releases/glibc-ports-2.6.1.tar.bz2 ftp://sources.redhat.com/pub/glibc/snapshots/glibc-ports-2.6.1.tar.bz2\nmirror://gentoo/glibc-2.6.1-patches-1.1.tar.bz2 http://dev.gentoo.org/~vapier/dist/glibc-2.6.1-patches-1.1.tar.bz2 http://dev.gentoo.org/~azarah/glibc/glibc-2.6.1-patches-1.1.tar.bz2' STAGE1_USE='nptl nptlonly unicode' STARTDIR=/ SYNC=rsync://rsync.gentoo.org/gentoo-portage T=/var/tmp/portage/sys-libs/glibc-2.6.1/temp TERM=linux TMP=/var/tmp/portage/sys-libs/glibc-2.6.1/temp TMPDIR=/var/tmp/portage/sys-libs/glibc-2.6.1/temp UID=0 UNSTABLE_FLAGS='-Os -O3 -freorder-blocks' USE='X acpi alsa_cards_ali5451 alsa_cards_als4000 alsa_cards_atiixp alsa_cards_atiixp-modem alsa_cards_bt87x alsa_cards_ca0106 alsa_cards_cmipci alsa_cards_emu10k1 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 apache2 bash-completion bitmap-fonts blas bzip2 cli cracklib crypt ctype cups dri elibc_glibc emacs fam fftw fortran gdbm gpm iconv ieee1394 input_devices_evdev input_devices_keyboard input_devices_mouse ipv6 isdnlog kde 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 linguas_en lm_sensors midi mis mmx mpi mudflap mysql mysqli ncurses netcdf nls nptl nptlonly opengl openmp pam pcre pdf perl php php5 ppds pppd python qt qt3 qt4 readline reflection session spl sse sse2 ssl tcl tcltk tcpd tk truetype-fonts type1-fonts unicode userland_GNU video_cards_apm video_cards_ark video_cards_chips video_cards_cirrus video_cards_cyrix video_cards_dummy video_cards_fbdev video_cards_glint video_cards_i128 video_cards_i740 video_cards_i810 video_cards_imstt video_cards_mach64 video_cards_mga video_cards_neomagic video_cards_nsc video_cards_nv video_cards_r128 video_cards_radeon video_cards_rendition video_cards_s3 video_cards_s3virge video_cards_savage video_cards_siliconmotion video_cards_sis video_cards_sisusb video_cards_tdfx video_cards_tga video_cards_trident video_cards_tseng video_cards_v4l video_cards_vesa video_cards_vga video_cards_via video_cards_vmware video_cards_voodoo x86 xorg 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:env.d VIDEO_CARDS='apm ark chips cirrus cyrix dummy fbdev glint i128 i740 i810 imstt mach64 mga neomagic nsc nv r128 radeon rendition s3 s3virge savage siliconmotion sis sisusb tdfx tga trident tseng v4l vesa vga via vmware voodoo' VTKHOME=/usr VTK_DATA_ROOT=/usr/share/vtk/data VTK_DIR=/usr/lib/vtk-5.0 WARN=$'\E[33;01m' WORKDIR=/var/tmp/portage/sys-libs/glibc-2.6.1/work XARGS='xargs -r' XDG_DATA_DIRS=/usr/share:/usr/kde/3.5/share:/usr/local/share _=002 _E_DOCDESTTREE_= _E_EXEDESTTREE_= _RC_GET_KV_CACHE= ___ECLASS_RECUR_MULTILIB=yes ___ECLASS_RECUR_TOOLCHAIN_FUNCS=yes _pipestatus='0 0' conf=glibc-2.6.1-r0 dir=/etc/portage/profile srcdir=/var/tmp/portage/sys-libs/glibc-2.6.1/distdir/ ELT_find_ltmain_sh () { local x=; local dirlist=; for x in $(find "${S}" -name 'ltmain.sh'); do dirlist="${dirlist} ${x%/*}"; done; echo "${dirlist}" } ELT_libtool_version () { local ltmain_sh=$1; local version=; version=$(eval $(grep -e '^[[:space:]]*VERSION=' "${ltmain_sh}"); echo "${VERSION}"); [[ -z ${version} ]] && version="0"; echo "${version}" } ELT_try_and_apply_patch () { local ret=0; local file=$1; local patch=$2; if patch -p0 --dry-run "${file}" "${patch}" >&"${T}/elibtool.log"; then einfo " Applying $(basename "$(dirname "${patch}")")-${patch##*/}.patch ..."; patch -p0 -g0 --no-backup-if-mismatch "${file}" "${patch}" >&"${T}/elibtool.log"; ret=$?; export ELT_APPLIED_PATCHES="${ELT_APPLIED_PATCHES} ${patch##*/}"; else ret=1; fi; return "${ret}" } ELT_walk_patches () { local x=; local y=; local ret=1; local file=$1; local patch_set=$2; local patch_dir=; local rem_int_dep=$3; if [[ -n ${patch_set} ]]; then if [[ -d ${ELT_PATCH_DIR}/${patch_set} ]]; then patch_dir="${ELT_PATCH_DIR}/${patch_set}"; else return "${ret}"; fi; for x in $(ls -d "${patch_dir}"/* 2> /dev/null | grep -v 'CVS' | sort -r); do if [[ -n ${x} && -f ${x} ]]; then if [[ -n ${rem_int_dep} ]]; then sed -e "s|@REM_INT_DEP@|${rem_int_dep}|g" ${x} > "${T}/$$.rem_int_deps.patch"; x="${T}/$$.rem_int_deps.patch"; fi; if ELT_try_and_apply_patch "${file}" "${x}"; then ret=0; break; fi; fi; done; fi; return "${ret}" } 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 } VER_major () { [[ -z $1 ]] && return 1; local VER=$@; echo "${VER%%[^[:digit:]]*}" } VER_micro () { [[ -z $1 ]] && return 1; local VER=$@; VER=${VER#*.*.}; echo "${VER%%[^[:digit:]]*}" } VER_minor () { [[ -z $1 ]] && return 1; local VER=$@; VER=${VER#*.}; echo "${VER%%[^[:digit:]]*}" } VER_to_int () { [[ -z $1 ]] && return 1; local VER_MAJOR=$(VER_major "$1"); local VER_MINOR=$(VER_minor "$1"); local VER_MICRO=$(VER_micro "$1"); local VER_int=$(( VER_MAJOR * 65536 + VER_MINOR * 256 + VER_MICRO )); if [[ ${VER_int} -ge 65536 ]]; then echo "${VER_int}"; return 0; fi; echo 1; return 1 } __versionator__test_version_compare () { __versionator_shopt_toggle on; local lt=1 eq=2 gt=3 p q; function __versionator__test_version_compare_t () { version_compare "${1}" "${3}"; local r=$?; [[ ${r} -eq ${2} ]] || echo "FAIL: ${@} (got ${r} exp ${2})" }; echo " 0 $lt 1 1 $lt 2 2 $gt 1 2 $eq 2 0 $eq 0 10 $lt 20 68 $eq 068 068 $gt 67 068 $lt 69 1.0 $lt 2.0 2.0 $eq 2.0 2.0 $gt 1.0 1.0 $gt 0.0 0.0 $eq 0.0 0.0 $lt 1.0 0.1 $lt 0.2 0.2 $eq 0.2 0.3 $gt 0.2 1.2 $lt 2.1 2.1 $gt 1.2 1.2.3 $lt 1.2.4 1.2.4 $gt 1.2.3 1.2.0 $eq 1.2 1.2.1 $gt 1.2 1.2 $lt 1.2.1 1.2b $eq 1.2b 1.2b $lt 1.2c 1.2b $gt 1.2a 1.2b $gt 1.2 1.2 $lt 1.2a 1.3 $gt 1.2a 1.3 $lt 1.3a 1.0_alpha7 $lt 1.0_beta7 1.0_beta $lt 1.0_pre 1.0_pre5 $lt 1.0_rc2 1.0_rc2 $lt 1.0 1.0_p1 $gt 1.0 1.0_p1-r1 $gt 1.0_p1 1.0_alpha6-r1 $gt 1.0_alpha6 1.0_beta6-r1 $gt 1.0_alpha6-r2 1.0_pre1 $lt 1.0-p1 1.0p $gt 1.0_p1 1.0r $gt 1.0-r1 1.6.15 $gt 1.6.10-r2 1.6.10-r2 $lt 1.6.15 " | while read a b c; do [[ -z "${a}${b}${c}" ]] && continue; __versionator__test_version_compare_t "${a}" "${b}" "${c}"; done; for q in "alpha beta pre rc=${lt};${gt}" "p r=${gt};${lt}"; do for p in ${q%%=*}; do local c=${q##*=}; local alt=${c%%;*} agt=${c##*;}; __versionator__test_version_compare_t "1.0" $agt "1.0_${p}"; __versionator__test_version_compare_t "1.0" $agt "1.0_${p}1"; __versionator__test_version_compare_t "1.0" $agt "1.0_${p}068"; __versionator__test_version_compare_t "2.0_${p}" $alt "2.0"; __versionator__test_version_compare_t "2.0_${p}1" $alt "2.0"; __versionator__test_version_compare_t "2.0_${p}068" $alt "2.0"; __versionator__test_version_compare_t "1.0_${p}" $eq "1.0_${p}"; __versionator__test_version_compare_t "0.0_${p}" $lt "0.0_${p}1"; __versionator__test_version_compare_t "666_${p}3" $gt "666_${p}"; __versionator__test_version_compare_t "1_${p}7" $lt "1_${p}8"; __versionator__test_version_compare_t "1_${p}7" $eq "1_${p}7"; __versionator__test_version_compare_t "1_${p}7" $gt "1_${p}6"; __versionator__test_version_compare_t "1_${p}09" $eq "1_${p}9"; done; done; for p in "-r" "_p"; do __versionator__test_version_compare_t "7.2${p}1" $lt "7.2${p}2"; __versionator__test_version_compare_t "7.2${p}2" $gt "7.2${p}1"; __versionator__test_version_compare_t "7.2${p}3" $gt "7.2${p}2"; __versionator__test_version_compare_t "7.2${p}2" $lt "7.2${p}3"; done; __versionator_shopt_toggle off } __versionator_shopt_toggle () { VERSIONATOR_RECURSION=${VERSIONATOR_RECURSION:-0}; case "$1" in "on") if [[ $VERSIONATOR_RECURSION -lt 1 ]]; then VERSIONATOR_OLD_EXTGLOB=$(shopt -p extglob); shopt -s extglob; fi; VERSIONATOR_RECURSION=$(( $VERSIONATOR_RECURSION + 1 )) ;; "off") VERSIONATOR_RECURSION=$(( $VERSIONATOR_RECURSION - 1 )); if [[ $VERSIONATOR_RECURSION -lt 1 ]]; then eval $VERSIONATOR_OLD_EXTGLOB; fi ;; esac; return 0 } _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/ }; [[ ! -d ${point}/${dir} ]] && continue; [[ -z $(find "${point}/${dir}" -maxdepth 1 -iname "${file}") ]] && continue; export CDROM_ROOT=${point}; export CDROM_SET=${i}; export CDROM_MATCH=${cdset[${i}]}; return; done <<< "$(get_mounts)"; ((++i)); done; echo; if [[ ${showedmsg} -eq 0 ]]; then if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then if [[ -z ${CDROM_NAME} ]]; then einfo "Please insert+mount the cdrom for ${PN} now !"; else einfo "Please insert+mount the ${CDROM_NAME} cdrom now !"; fi; else if [[ -z ${CDROM_NAME_1} ]]; then einfo "Please insert+mount cd #${CDROM_CURRENT_CD} for ${PN} now !"; else local var="CDROM_NAME_${CDROM_CURRENT_CD}"; einfo "Please insert+mount the ${!var} cdrom now !"; fi; fi; showedmsg=1; fi; einfo "Press return to scan for the cd again"; einfo "or hit CTRL+C to abort the emerge."; echo; 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//?/=}" } _filter-hardened () { local f; for f in "$@"; do case "${f}" in -fPIC | -fpic | -fPIE | -fpie | -Wl,pie | -pie) gcc-specs-pie || continue; is-flagq -nopie || append-flags -nopie ;; -fstack-protector) gcc-specs-ssp || continue; is-flagq -fno-stack-protector || append-flags -fno-stack-protector ;; -fstack-protector-all) gcc-specs-ssp-to-all || continue; is-flagq -fno-stack-protector-all || append-flags -fno-stack-protector-all ;; esac; done } _filter-var () { local f x VAR VAL; declare -a new; VAR=$1; shift; eval VAL=\${${VAR}}; for f in ${VAL}; do for x in "$@"; do [[ ${f} == ${x} ]] && continue 2; done; eval new\[\${\#new\[@]}]=\${f}; done; eval export ${VAR}=\${new\[*]} } _gcc-install-dir () { echo "$($(tc-getCC) -print-search-dirs 2> /dev/null | awk '$1=="install:" {print $2}')" } _gcc-specs-directive_raw () { local cc=$(tc-getCC); local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}'); ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN { pspec=""; spec=""; outside=1 } $1=="*"directive":" { pspec=spec; spec=""; outside=0; next } outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next } spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next } { spec=spec $0 } END { print spec }'; return 0 } _gcc-specs-exists () { [[ -f $(_gcc-install-dir)/$1 ]] } _is_flagq () { local x; for x in ${!1}; do [[ ${x} == $2 ]] && return 0; done; return 1 } 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" } alt_build_headers () { if [[ -z ${ALT_BUILD_HEADERS} ]]; then ALT_BUILD_HEADERS=$(alt_headers); if tc-is-cross-compiler; then ALT_BUILD_HEADERS=${ROOT}$(alt_headers); if [[ ! -e ${ALT_BUILD_HEADERS}/linux/version.h ]]; then local header_path=$(echo '#include ' | $(tc-getCPP ${CTARGET}) ${CFLAGS} 2>&1 | grep -o '[^"]*linux/version.h'); ALT_BUILD_HEADERS=${header_path%/linux/version.h}; fi; fi; fi; echo "${ALT_BUILD_HEADERS}" } alt_headers () { if [[ -z ${ALT_HEADERS} ]]; then if is_crosscompile; then ALT_HEADERS="/usr/${CTARGET}/usr/include"; else ALT_HEADERS="/usr/include"; fi; fi; echo "${ALT_HEADERS}" } alt_libdir () { if is_crosscompile; then echo /usr/${CTARGET}/$(get_libdir); else echo /$(get_libdir); fi } alt_usrlibdir () { if is_crosscompile; then echo /usr/${CTARGET}/usr/$(get_libdir); else echo /usr/$(get_libdir); fi } append-cppflags () { [[ -z $* ]] && return 0; export CPPFLAGS="${CPPFLAGS} $*"; return 0 } append-flags () { [[ -z $* ]] && return 0; export CFLAGS="${CFLAGS} $*"; export CXXFLAGS="${CXXFLAGS} $*"; return 0 } append-ldflags () { [[ -z $* ]] && return 0; export LDFLAGS="${LDFLAGS} $*"; return 0 } append-lfs-flags () { [[ -n $@ ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "append-lfs-flags takes no arguments"; append-cppflags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE } 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" } bindnow-flags () { case $($(tc-getLD) -v 2>&1 &1 \nLINUX_VERSION_CODE\n' | $(tc-getCPP ${CTARGET}) -I "$(alt_build_headers)" | tail -n 1 ); [[ ${version} -ge "$1" ]] } 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 } check_nptl_support () { local min_kernel_version=$(KV_to_int "${NPTL_KERN_VER}"); ebegin "Checking gcc for __thread support"; if ! eend $(want__thread ; echo $?); then echo; eerror "Could not find a gcc that supports the __thread directive!"; eerror "Please update your binutils/gcc and try again."; diefunc "$FUNCNAME" "$LINENO" "$?" "No __thread support in gcc!"; fi; if ! is_crosscompile && ! tc-is-cross-compiler; then ebegin "Checking kernel version (>=${NPTL_KERN_VER})"; if ! eend $([[ $(get_KV) -ge ${min_kernel_version} ]] ; echo $?); then echo; eerror "You need a kernel of at least version ${NPTL_KERN_VER}"; eerror "for NPTL support!"; diefunc "$FUNCNAME" "$LINENO" "$?" "Kernel version too low!"; fi; fi; just_headers && return; ebegin "Checking linux-headers version (>=${NPTL_KERN_VER})"; if ! eend $(check_kheader_version "${min_kernel_version}" ; echo $?); then echo; eerror "You need linux-headers of at least version ${NPTL_KERN_VER}"; eerror "for NPTL support!"; diefunc "$FUNCNAME" "$LINENO" "$?" "linux-headers version too low!"; fi } create_ml_includes () { local dest=$1; shift; local basedirs=$(create_ml_includes-listdirs "$@"); create_ml_includes-makedestdirs ${dest} ${basedirs}; local file; for file in $(create_ml_includes-allfiles ${basedirs}); do ( echo "/* Autogenerated by create_ml_includes() in multilib.eclass */"; local dir; for dir in ${basedirs}; do if [[ -f ${D}/${dir}/${file} ]]; then echo ""; local sym=$(create_ml_includes-sym_for_dir ${dir} "$@"); if [[ ${sym/=} != "${sym}" ]]; then echo "#if ${sym}"; else if [[ ${sym::1} == "!" ]]; then echo "#ifndef ${sym:1}"; else echo "#ifdef ${sym}"; fi; fi; echo "# include <$(create_ml_includes-absolute ${dir}/${file})>"; echo "#endif /* ${sym} */"; fi; done ) > "${D}/${dest}/${file}"; done } create_ml_includes-absolute () { local dst="$(create_ml_includes-tidy_path $1)"; dst=(${dst//\// }); local i; for ((i=0; i<${#dst[*]}; i++)) do [ "${dst[i]}" == "include" ] && break; done; local strip_upto=$i; for ((i=strip_upto+1; i<${#dst[*]}-1; i++)) do echo -n ${dst[i]}/; done; echo -n ${dst[i]} } create_ml_includes-allfiles () { local basedir file; for basedir in "$@"; do for file in $(find "${D}"/${basedir} -type f); do echo ${file/${D}\/${basedir}\//}; done; done | sort | uniq } create_ml_includes-listdirs () { local dirs; local data; for data in "$@"; do dirs="${dirs} ${data/*:/}"; done; echo ${dirs:1} } create_ml_includes-makedestdirs () { local dest=$1; shift; local basedirs=$@; dodir ${dest}; local basedir; for basedir in ${basedirs}; do local dir; for dir in $(find ${D}/${basedir} -type d); do dodir ${dest}/${dir/${D}\/${basedir}/}; done; done } create_ml_includes-sym_for_dir () { local dir=$1; shift; local data; for data in "$@"; do if [[ ${data} == *:${dir} ]]; then echo ${data/:*/}; return 0; fi; done; echo "Shouldn't be here -- create_ml_includes-sym_for_dir $1 $@"; exit 1 } create_ml_includes-tidy_path () { local removed=$1; if [ -n "${removed}" ]; then while [ "${removed}" != "${removed/\/\//\/}" ]; do removed=${removed/\/\//\/}; done; while [ "${removed}" != "${removed//\/.\//\/}" ]; do removed=${removed//\/.\//\/}; done; [ "${removed##*/}" = "." ] && removed=${removed%/*}; while [ "${removed}" != "${removed//\/..\/}" ]; do local p1="${removed%%\/..\/*}"; local p2="${removed#*\/..\/}"; removed="${p1%\/*}/${p2}"; done; [ "${removed##*/}" = ".." ] && removed=${removed%/*/*}; [ "${removed##*/}" = "" ] && removed=${removed%/*}; echo ${removed}; fi } darwintoolize () { ewarn "darwintoolize() is deprecated, please just use elibtoolize()!"; elibtoolize } 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" 2> /dev/null >> "${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 $*" } delete_all_version_separators () { __versionator_shopt_toggle on; replace_all_version_separators "" "${1}"; __versionator_shopt_toggle off } delete_version_separator () { __versionator_shopt_toggle on; replace_version_separator "${1}" "" "${2}"; __versionator_shopt_toggle off } diefunc () { local funcname="$1" lineno="$2" exitcode="$3"; shift 3; eerror; eerror "ERROR: $CATEGORY/$PF failed."; dump_trace 2; eerror " ${BASH_SOURCE[1]##*/}, line ${BASH_LINENO[0]}: Called die"; eerror; eerror "${*:-(no error message)}"; eerror "If you need support, post the topmost build error, and the call stack if relevant."; [ -n "${PORTAGE_LOG_FILE}" ] && eerror "A complete build log is located at '${PORTAGE_LOG_FILE}'."; if [ -n "${EBUILD_OVERLAY_ECLASSES}" ]; then eerror "This ebuild used the following eclasses from overlays:"; local x; for x in ${EBUILD_OVERLAY_ECLASSES}; do eerror " ${x}"; done; fi; if [ "${EBUILD#${PORTDIR}/}" == "${EBUILD}" ]; then local overlay=${EBUILD%/*}; overlay=${overlay%/*}; overlay=${overlay%/*}; eerror "This ebuild is from an overlay: '${overlay}/'"; fi; eerror; 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 _E_DOCDESTTREE_=""; else export _E_DOCDESTTREE_="$1"; if [ ! -d "${D}usr/share/doc/${PF}/${_E_DOCDESTTREE_}" ]; then install -d "${D}usr/share/doc/${PF}/${_E_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; else ((++ret)); fi; fi; done; exit ${ret} ) } domenu () { ( local i j ret=0; insinto /usr/share/applications; for i in "$@"; do if [[ -f ${i} ]]; then doins "${i}"; ((ret+=$?)); else if [[ -d ${i} ]]; then for j in "${i}"/*.desktop; do doins "${j}"; ((ret+=$?)); done; else ((++ret)); fi; fi; done; exit ${ret} ) } dump_trace () { local funcname="" sourcefile="" lineno="" n e s="yes"; declare -i strip=1; if [[ -n $1 ]]; then strip=$(( $1 )); fi; eerror "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; eerror " ${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}"; else cd "${WORKDIR}"; 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"; [ -n "${PORTAGE_REPO_NAME}" ] && echo "${PORTAGE_REPO_NAME}" > repository; 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}"; else cd "${WORKDIR}"; 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 () { if [ "${EBUILD_FORCE_TEST}" == "1" ]; then rm -f "${PORTAGE_BUILDDIR}/.tested"; ! hasq test ${USE} && export USE="${USE} test"; fi; [ "$(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}"; else cd "${WORKDIR}"; 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 } eblit-glibc-src_unpack () { setup_env; toolchain-glibc_src_unpack; cd "${S}"; echo "yes" > "${T}"/.ssp.compat; echo 'int main(){}' > "${T}"/gcc_eh_test.c; if ! $(tc-getCC ${CTARGET}) "${T}"/gcc_eh_test.c -lgcc_eh 2> /dev/null; then sed -i -e 's:-lgcc_eh::' Makeconfig || diefunc "$FUNCNAME" "$LINENO" "$?" "sed gcc_eh"; fi; cd "${WORKDIR}"; find . -type f '(' -size 0 -o -name "*.orig" ')' -exec rm -f {} \;; find . -name configure -exec touch {} \;; chmod u+x "${S}"/scripts/*.sh } eblit-include () { local skipable=false; [[ $1 == "--skip" ]] && skipable=true && shift; local e v func=$1 ver=$2; [[ -z ${func} ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Usage: eblit-include [version]"; for v in ${ver:+-}${ver} -${PVR} -${PV} ""; do e="${FILESDIR}/eblits/${func}${v}.eblit"; if [[ -e ${e} ]]; then source "${e}"; return 0; fi; done; ${skipable} && return 0; diefunc "$FUNCNAME" "$LINENO" "$?" "Could not locate requested eblit '${func}' in ${FILESDIR}/eblits/" } eblit-run () { eblit-include --skip common "${*:2}"; eblit-include "$@"; eblit-${PN}-$1 || diefunc "$FUNCNAME" "$LINENO" "$?" } 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 if [ -f "${ECONF_SOURCE:-.}/configure" ]; then diefunc "$FUNCNAME" "$LINENO" "$?" "configure is not executable"; else diefunc "$FUNCNAME" "$LINENO" "$?" "no configure script found"; fi; 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 () { local LOCAL_EXTRA_EINSTALL="${EXTRA_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})"; LOCAL_EXTRA_EINSTALL="libdir=${EI_DESTLIBDIR} ${LOCAL_EXTRA_EINSTALL}"; unset EI_DESTLIBDIR; fi; if [ -f ./[mM]akefile -o -f ./GNUmakefile ]; then if [ "${PORTAGE_DEBUG}" == "1" ]; then ${MAKE:-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" ${LOCAL_EXTRA_EINSTALL} "$@" install; fi; ${MAKE:-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" ${LOCAL_EXTRA_EINSTALL} "$@" install || diefunc "$FUNCNAME" "$LINENO" "$?" "einstall failed"; else diefunc "$FUNCNAME" "$LINENO" "$?" "no Makefile found"; fi } elibtoolize () { local x=; local y=; local do_portage="no"; local do_reversedeps="no"; local do_only_patches="no"; local do_uclibc="yes"; local deptoremove=; local my_dirlist=; local elt_patches="install-sh ltmain portage relink max_cmd_len sed test tmp"; local start_dir=${PWD}; my_dirlist=$(ELT_find_ltmain_sh); for x in "$@"; do case "${x}" in "--portage") do_portage="yes" ;; "--reverse-deps") do_reversedeps="yes"; elt_patches="${elt_patches} fix-relink" ;; "--patch-only") do_only_patches="yes" ;; "^--remove-internal-dep="*) deptoremove=$(echo "${x}" | sed -e 's|--remove-internal-dep=||'); [[ -n ${deptoremove} ]] && elt_patches="${elt_patches} rem-int-dep" ;; "--shallow") if [[ -f ${S}/ltmain.sh ]]; then my_dirlist=${S}; else my_dirlist=; fi ;; "--no-uclibc") do_uclibc="no" ;; *) eerror "Invalid elibtoolize option: ${x}"; diefunc "$FUNCNAME" "$LINENO" "$?" "elibtoolize called with ${x} ??" ;; esac; done; [[ ${do_uclibc} == "yes" ]] && elt_patches="${elt_patches} uclibc-conf uclibc-ltconf"; [[ ${CHOST} == *"-freebsd"* ]] && elt_patches="${elt_patches} fbsd-conf fbsd-ltconf"; [[ ${CHOST} == *"-darwin"* ]] && elt_patches="${elt_patches} darwin-ltconf darwin-ltmain"; for x in ${my_dirlist}; do local tmp=$(echo "${x}" | sed -e "s|${WORKDIR}||"); export ELT_APPLIED_PATCHES=; export ELT_LTMAIN_SH="${x}/ltmain.sh"; [[ -f ${x}/.elibtoolized ]] && continue; cd ${x}; einfo "Running elibtoolize in: $(echo "/${tmp}" | sed -e 's|//|/|g; s|^/||')"; for y in ${elt_patches}; do local ret=0; case "${y}" in "portage") if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]]; then ELT_walk_patches "${x}/ltmain.sh" "${y}"; ret=$?; fi ;; "rem-int-dep") ELT_walk_patches "${x}/ltmain.sh" "${y}" "${deptoremove}"; ret=$? ;; "fix-relink") if [[ -n $(grep 'inst_prefix_dir' "${x}/ltmain.sh") ]]; then ELT_walk_patches "${x}/ltmain.sh" "${y}"; ret=$?; fi ;; "max_cmd_len") if [[ -n $(grep 'max_cmd_len' "${x}/ltmain.sh") ]]; then ELT_walk_patches "${x}/ltmain.sh" "${y}"; ret=$?; fi ;; "uclibc-conf") if [[ -e ${x}/configure && -n $(grep 'Transform linux' "${x}/configure") ]]; then ELT_walk_patches "${x}/configure" "${y}"; ret=$?; else if [[ ! -e ${x}/configure && -e ${x}/../configure && -n $(grep 'Transform linux' "${x}/../configure") ]]; then ELT_walk_patches "${x}/../configure" "${y}"; ret=$?; fi; fi ;; "uclibc-ltconf") if [[ -s ${x}/ltconfig ]]; then ELT_walk_patches "${x}/ltconfig" "${y}"; ret=$?; fi ;; "fbsd-conf") if [[ -e ${x}/configure && -n $(grep 'version_type=freebsd-' "${x}/configure") ]]; then ELT_walk_patches "${x}/configure" "${y}"; ret=$?; else if [[ ! -e ${x}/configure && -e ${x}/../configure && -n $(grep 'version_type=freebsd-' "${x}/../configure") ]]; then ELT_walk_patches "${x}/../configure" "${y}"; ret=$?; fi; fi ;; "fbsd-ltconf") if [[ -s ${x}/ltconfig ]]; then ELT_walk_patches "${x}/ltconfig" "${y}"; ret=$?; fi ;; "darwin-ltconf") if [[ -s ${x}/ltconfig ]]; then ELT_walk_patches "${x}/ltconfig" "${y}"; ret=$?; fi ;; "install-sh") ELT_walk_patches "${x}/install-sh" "${y}"; ret=$? ;; *) ELT_walk_patches "${x}/ltmain.sh" "${y}"; ret=$? ;; esac; if [[ ${ret} -ne 0 ]]; then case ${y} in "relink") local version=$(ELT_libtool_version "${x}/ltmain.sh"); if [[ -z $(grep 'inst_prefix_dir' "${x}/ltmain.sh") && $(VER_to_int "${version}") -ge $(VER_to_int "1.4.0") ]]; then ewarn " Could not apply relink.patch!"; fi ;; "portage") if [[ ${do_portage} == "yes" ]]; then if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]]; then echo; eerror "Portage patch requested, but failed to apply!"; eerror "Please bug azarah or vapier to add proper patch."; diefunc "$FUNCNAME" "$LINENO" "$?" "Portage patch requested, but failed to apply!"; fi; else if [[ -n $(grep 'We do not want portage' "${x}/ltmain.sh") ]]; then :; else local version=$( eval $(grep -e '^[[:space:]]*VERSION=' "${x}/ltmain.sh"); echo "${VERSION}"); echo; eerror "Portage patch failed to apply (ltmain.sh version ${version})!"; eerror "Please bug azarah or vapier to add proper patch."; diefunc "$FUNCNAME" "$LINENO" "$?" "Portage patch failed to apply!"; fi; ELT_APPLIED_PATCHES="portage"; fi ;; "uclibc-"*) [[ ${CHOST} == *"-uclibc" ]] && ewarn " uClibc patch set '${y}' failed to apply!" ;; "fbsd-"*) if [[ ${CHOST} == *"-freebsd"* ]]; then if [[ -z $(grep 'Handle Gentoo/FreeBSD as it was Linux' "${x}/configure" "${x}/../configure" 2>/dev/null) ]]; then eerror " FreeBSD patch set '${y}' failed to apply!"; diefunc "$FUNCNAME" "$LINENO" "$?" "FreeBSD patch set '${y}' failed to apply!"; fi; fi ;; "darwin-"*) [[ ${CHOST} == *"-darwin"* ]] && ewarn " Darwin patch set '${y}' failed to apply!" ;; esac; fi; done; if [[ -z ${ELT_APPLIED_PATCHES} ]]; then if [[ ${do_portage} == "no" && ${do_reversedeps} == "no" && ${do_only_patches} == "no" && ${deptoremove} == "" ]]; then ewarn "Cannot apply any patches, please file a bug about this"; diefunc "$FUNCNAME" "$LINENO" "$?"; fi; fi; [[ -f ${x}/libtool ]] && rm -f "${x}/libtool"; touch "${x}/.elibtoolized"; done; cd "${start_dir}" } 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 _E_EXEDESTTREE_=""; else export _E_EXEDESTTREE_="$1"; if [ ! -d "${D}${_E_EXEDESTTREE_}" ]; then install -d "${D}${_E_EXEDESTTREE_}"; fi; fi } exeopts () { export EXEOPTIONS="$@"; hasq -s ${EXEOPTIONS} && diefunc "$FUNCNAME" "$LINENO" "$?" "Never call exeopts() with -s" } filter-flags () { _filter-hardened "$@"; _filter-var CFLAGS "$@"; _filter-var CPPFLAGS "$@"; _filter-var CXXFLAGS "$@"; return 0 } filter-ldflags () { _filter-var LDFLAGS "$@"; return 0 } filter-lfs-flags () { [[ -n $@ ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "filter-lfs-flags takes no arguments"; filter-flags -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE } filter-mfpmath () { local orig_mfpmath new_math prune_math; orig_mfpmath=$(get-flag -mfpmath); new_math=$(get-flag mfpmath); new_math=" ${new_math//,/ } "; prune_math=""; for prune_math in "$@"; do new_math=${new_math/ ${prune_math} / }; done; new_math=$(echo ${new_math}); new_math=${new_math// /,}; if [[ -z ${new_math} ]]; then filter-flags ${orig_mfpmath}; else replace-flags ${orig_mfpmath} -mfpmath=${new_math}; fi; return 0 } find_unpackable_file () { local src=$1; if [[ -z ${src} ]]; then src=${DISTDIR}/${A}; else if [[ -e ${DISTDIR}/${src} ]]; then src=${DISTDIR}/${src}; else if [[ -e ${PWD}/${src} ]]; then src=${PWD}/${src}; else if [[ -e ${src} ]]; then src=${src}; fi; fi; fi; fi; [[ ! -e ${src} ]] && return 1; echo "${src}" } fix_lib64_symlinks () { if [ -L ${ROOT}/lib64 ]; then ewarn "removing /lib64 symlink and moving lib to lib64..."; ewarn "dont hit ctrl-c until this is done"; rm ${ROOT}/lib64; use amd64 && /lib/ld-linux-x86-64.so.2 /bin/mv ${ROOT}/lib ${ROOT}/lib64; use ppc64 && /lib/ld64.so.1 /bin/mv ${ROOT}/lib ${ROOT}/lib64; ldconfig; ln -s lib64 ${ROOT}/lib; einfo "done! :-)"; einfo "fixed broken lib64/lib symlink in ${ROOT}"; fi; if [ -L ${ROOT}/usr/lib64 ]; then rm ${ROOT}/usr/lib64; mv ${ROOT}/usr/lib ${ROOT}/usr/lib64; ln -s lib64 ${ROOT}/usr/lib; einfo "fixed broken lib64/lib symlink in ${ROOT}/usr"; fi; if [ -L ${ROOT}/usr/X11R6/lib64 ]; then rm ${ROOT}/usr/X11R6/lib64; mv ${ROOT}/usr/X11R6/lib ${ROOT}/usr/X11R6/lib64; ln -s lib64 ${ROOT}/usr/X11R6/lib; einfo "fixed broken lib64/lib symlink in ${ROOT}/usr/X11R6"; fi } gcc-fullversion () { $(tc-getCC "$@") -dumpversion } gcc-major-version () { gcc-version "$@" | cut -f1 -d. } gcc-micro-version () { gcc-fullversion "$@" | cut -f3 -d. | cut -f1 -d- } gcc-minor-version () { gcc-version "$@" | cut -f2 -d. } gcc-specs-directive () { local directive subdname subdirective; directive="$(_gcc-specs-directive_raw $1)"; while [[ ${directive} == *%\(*\)* ]]; do subdname=${directive/*%\(}; subdname=${subdname/\)*}; subdirective="$(_gcc-specs-directive_raw ${subdname})"; directive="${directive//\%(${subdname})/${subdirective}}"; done; echo "${directive}"; return 0 } gcc-specs-now () { local directive; directive=$(gcc-specs-directive link_command); return $([[ ${directive/\{!nonow:} != ${directive} ]]) } gcc-specs-pie () { local directive; directive=$(gcc-specs-directive cc1); return $([[ ${directive/\{!nopie:} != ${directive} ]]) } gcc-specs-relro () { local directive; directive=$(gcc-specs-directive link_command); return $([[ ${directive/\{!norelro:} != ${directive} ]]) } gcc-specs-ssp () { local directive; directive=$(gcc-specs-directive cc1); return $([[ ${directive/\{!fno-stack-protector:} != ${directive} ]]) } gcc-specs-ssp-to-all () { local directive; directive=$(gcc-specs-directive cc1); return $([[ ${directive/\{!fno-stack-protector-all:} != ${directive} ]]) } gcc-version () { gcc-fullversion "$@" | cut -f1,2 -d. } gen_usr_ldscript () { local lib libdir=$(get_libdir) output_format=""; dodir /usr/${libdir}; output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p'); [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )"; for lib in "$@"; do if [[ ${USERLAND} == "Darwin" ]]; then ewarn "Not creating fake dynamic library for $lib on Darwin;"; ewarn "making a symlink instead."; dosym "/${libdir}/${lib}" "/usr/${libdir}/${lib}"; else cat > "${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT /* GNU ld script Since Gentoo has critical dynamic libraries in /lib, and the static versions in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we run into linking problems. See bug http://bugs.gentoo.org/4411 for more info. */ ${output_format} GROUP ( /${libdir}/${lib} ) END_LDSCRIPT fi fperms a+x "/usr/${libdir}/${lib}" || diefunc "$FUNCNAME" "$LINENO" "$?" "could not change perms on ${lib}"; done } gen_wrapper () { cat > "$1" <<-EOF #!/bin/sh exec $2 "\$@" EOF chmod 0755 "$1" } get-flag () { local f findflag="$1"; for f in ${CFLAGS} ${CXXFLAGS}; do if [ "${f/${findflag}}" != "${f}" ]; then printf "%s\n" "${f/-${findflag}=}"; return 0; fi; done; return 1 } get_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_after_major_version () { __versionator_shopt_toggle on; echo $(get_version_component_range 2- "${1:-${PV}}" ); __versionator_shopt_toggle off } 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_all_version_components () { __versionator_shopt_toggle on; local ver_str=${1:-${PV}} result result_idx=0; result=(); if [[ "${VERSIONATOR_CACHE_VER_STR}" == "${ver_str}" ]]; then echo ${VERSIONATOR_CACHE_RESULT}; __versionator_shopt_toggle off; return; fi; export VERSIONATOR_CACHE_VER_STR="${ver_str}"; while [[ -n "$ver_str" ]]; do case "${ver_str:0:1}" in [[:digit:]]) result[$result_idx]="${ver_str%%[^[:digit:]]*}"; ver_str="${ver_str##+([[:digit:]])}"; result_idx=$(($result_idx + 1)) ;; [-_.]) result[$result_idx]="${ver_str:0:1}"; ver_str="${ver_str:1}"; result_idx=$(($result_idx + 1)) ;; [[:alpha:]]) local not_match="${ver_str##+([[:alpha:]])*([[:digit:]])}"; result[$result_idx]=${ver_str:0:$((${#ver_str} - ${#not_match}))}; ver_str="${not_match}"; result_idx=$(($result_idx + 1)) ;; *) result[$result_idx]="${ver_str:0:1}"; ver_str="${ver_str:1}"; result_idx=$(($result_idx + 1)) ;; esac; done; export VERSIONATOR_CACHE_RESULT="${result[@]}"; echo ${result[@]}; __versionator_shopt_toggle off } get_bmake () { if [[ ${USERLAND} == *BSD ]]; then echo make; else if [[ ${USERLAND} == "Darwin" ]]; then echo bsdmake; else echo pmake; fi; fi } get_install_abis () { local order=""; if [[ -z ${MULTILIB_ABIS} ]]; then echo "default"; return 0; fi; if [[ ${EMULTILIB_PKG} == "true" ]]; then for x in ${MULTILIB_ABIS}; do if [[ ${x} != "${DEFAULT_ABI}" ]]; then hasq ${x} ${ABI_DENY} || ordera="${ordera} ${x}"; fi; done; hasq ${DEFAULT_ABI} ${ABI_DENY} || order="${ordera} ${DEFAULT_ABI}"; if [[ -n ${ABI_ALLOW} ]]; then local ordera=""; for x in ${order}; do if hasq ${x} ${ABI_ALLOW}; then ordera="${ordera} ${x}"; fi; done; order=${ordera}; fi; else order=${DEFAULT_ABI}; fi; if [[ -z ${order} ]]; then 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_last_version_component_index () { __versionator_shopt_toggle on; echo $(( $(get_version_component_count "${1:-${PV}}" ) - 1 )); __versionator_shopt_toggle off } 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_major_version () { __versionator_shopt_toggle on; local c; c=($(get_all_version_components "${1:-${PV}}" )); echo ${c[0]}; __versionator_shopt_toggle off } 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} } get_version_component_count () { __versionator_shopt_toggle on; local a; a=($(get_version_components "${1:-${PV}}" )); echo ${#a[@]}; __versionator_shopt_toggle off } get_version_component_range () { __versionator_shopt_toggle on; local c v="${2:-${PV}}" range="${1}" range_start range_end i=-1 j=0; c=($(get_all_version_components ${v} )); range_start="${range%-*}"; range_start="${range_start:-1}"; range_end="${range#*-}"; range_end="${range_end:-${#c[@]}}"; while (( j < ${range_start} )); do i=$(($i + 1)); [[ $i -gt ${#c[@]} ]] && __versionator_shopt_toggle off && return; [[ -n "${c[${i}]//[-._]}" ]] && j=$(($j + 1)); done; while (( j <= ${range_end} )); do echo -n ${c[$i]}; [[ $i -gt ${#c[@]} ]] && __versionator_shopt_toggle off && return; [[ -n "${c[${i}]//[-._]}" ]] && j=$(($j + 1)); i=$(($i + 1)); done; __versionator_shopt_toggle off } get_version_components () { __versionator_shopt_toggle on; local c="$(get_all_version_components "${1:-${PV}}")"; c=(${c[@]//[-._]/ }); echo ${c[@]}; __versionator_shopt_toggle off } gnuconfig_do_update () { local configsubs_dir target targetlist file; [[ $# -eq 0 ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "do not call gnuconfig_do_update; use gnuconfig_update"; configsubs_dir=$(gnuconfig_findnewest); einfo "Using GNU config files from ${configsubs_dir}"; for file in "$@"; do if [[ ! -r ${configsubs_dir}/${file} ]]; then eerror "Can't read ${configsubs_dir}/${file}, skipping.."; continue; fi; targetlist=$(find "${startdir}" -name "${file}"); if [[ -n ${targetlist} ]]; then for target in ${targetlist}; do [[ -L ${target} ]] && rm -f "${target}"; einfo " Updating ${target/$startdir\//}"; cp -f "${configsubs_dir}/${file}" "${target}"; eend $?; done; else ewarn " No ${file} found in ${startdir}, skipping ..."; fi; done; return 0 } gnuconfig_findnewest () { local locations=" /usr/share/gnuconfig/config.sub /usr/share/automake-1.9/config.sub /usr/share/automake-1.8/config.sub /usr/share/automake-1.7/config.sub /usr/share/automake-1.6/config.sub /usr/share/automake-1.5/config.sub /usr/share/automake-1.4/config.sub /usr/share/libtool/config.sub "; grep -s '^timestamp' ${locations} | sort -n -t\' -k2 | tail -n 1 | sed 's,/config.sub:.*$,,' } gnuconfig_update () { local startdir; if [[ $1 == /* ]]; then startdir=$1; shift; else startdir=${S}; fi; if [[ $# -gt 0 ]]; then gnuconfig_do_update "$@"; else gnuconfig_do_update config.sub config.guess; fi; return $? } has () { hasq "$@" } has_hardened () { ewarn "has_hardened: deprecated, please use gcc-specs-{relro,now}()!" 1>&2; test_version_info Hardened && return 0; [[ -f ${GCC_SPECS} && ${GCC_SPECS} != ${GCC_SPECS/hardened/} ]] } has_m32 () { [ "$(tc-arch)" = "amd64" ] && has_multilib_profile && return 0; local temp=$(emktemp); echo "int main() { return(0); }" > "${temp}".c; MY_CC=$(tc-getCC); ${MY_CC/ .*/} -m32 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1; local ret=$?; rm -f "${temp}".c; [[ ${ret} != 1 ]] && return 0; return 1 } has_m64 () { local temp="$(emktemp)"; echo "int main() { return(0); }" > "${temp}".c; MY_CC=$(tc-getCC); ${MY_CC/ .*/} -m64 -o "$(emktemp)" "${temp}".c > /dev/null 2>&1; local ret=$?; rm -f "${temp}".c; [[ ${ret} != 1 ]] && return 0; return 1 } has_multilib_profile () { [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ] } has_pic () { ewarn "has_pic: deprecated, please use gcc-specs-pie()!" 1>&2; [[ ${CFLAGS/-fPIC} != ${CFLAGS} || ${CFLAGS/-fpic} != ${CFLAGS} ]] || gcc-specs-pie } has_pie () { ewarn "has_pie: deprecated, please use gcc-specs-pie()!" 1>&2; [[ ${CFLAGS/-fPIE} != ${CFLAGS} || ${CFLAGS/-fpie} != ${CFLAGS} ]] || gcc-specs-pie } has_ssp () { ewarn "has_ssp: deprecated, please use gcc-specs-ssp()!" 1>&2; [[ ${CFLAGS/-fstack-protector} != ${CFLAGS} || -n $(echo | $(tc-getCC) ${CFLAGS} -E -dM - | grep __SSP__) ]] || gcc-specs-ssp } has_ssp_all () { ewarn "has_ssp_all: deprecated, please use gcc-specs-ssp()!" 1>&2; [[ ${CFLAGS/-fstack-protector-all} != ${CFLAGS} || -n $(echo | $(tc-getCC) ${CFLAGS} -E -dM - | grep __SSP_ALL__) ]] || gcc-specs-ssp-all } has_version () { if [ "${EBUILD_PHASE}" == "depend" ]; then diefunc "$FUNCNAME" "$LINENO" "$?" "portageq calls (has_version calls portageq) are not allowed in the global scope"; fi; "${PORTAGE_BIN_PATH}"/portageq has_version "${ROOT}" "$1"; local retval=$?; case "${retval}" in 0) return 0 ;; 1) return 1 ;; *) diefunc "$FUNCNAME" "$LINENO" "$?" "unexpected portageq exit code: ${retval}" ;; esac } 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 ]] && [[ ${EMERGE_FROM} != "binary" ]]; 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-flag () { is-flagq "$@" && echo true } is-flagq () { [[ -n $2 ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Usage: is-flag "; _is_flagq CFLAGS $1 || _is_flagq CXXFLAGS $1 } is-ldflag () { is-ldflagq "$@" && echo true } is-ldflagq () { [[ -n $2 ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Usage: is-ldflag "; _is_flagq LDFLAGS $1 } is-login-disabled () { shell=$(egetshell "$1"); case ${shell} in /bin/false | /usr/bin/false | /sbin/nologin | /usr/sbin/nologin) return 0 ;; *) return 1 ;; esac } is_crosscompile () { [[ ${CHOST} != ${CTARGET} ]] } is_final_abi () { has_multilib_profile || return 0; local ALL_ABIS=$(get_install_abis); local LAST_ABI=${ALL_ABIS/* /}; [[ ${LAST_ABI} == ${ABI} ]] } just_headers () { is_crosscompile && use crosscompile_opts_headers-only } 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 accessibility) type=Accessibility ;; admin) type=System ;; antivirus) type=System ;; arch) type=Archiving ;; backup) type=Archiving ;; cdr) type=DiscBurning ;; dicts) type=Dictionary ;; doc) type=Documentation ;; editors) type=TextEditor ;; emacs) type=TextEditor ;; emulation) type=Emulator ;; laptop) type=HardwareSettings ;; office) type=Office ;; pda) type=PDA ;; vim) type=TextEditor ;; xemacs) type=TextEditor ;; *) type= ;; esac ;; dev) type="Development" ;; games) case ${catmin} in action | fps) type=ActionGame ;; arcade) type=ArcadeGame ;; board) type=BoardGame ;; emulation) type=Emulator ;; kids) type=KidsGame ;; puzzle) type=LogicGame ;; roguelike) type=RolePlaying ;; rpg) type=RolePlaying ;; simulation) type=Simulation ;; sports) type=SportsGame ;; strategy) type=StrategyGame ;; *) type= ;; esac; type="Game;${type}" ;; gnome) type="Gnome;GTK" ;; kde) type="KDE;Qt" ;; mail) type="Network;Email" ;; media) case ${catmin} in gfx) type=Graphics ;; radio) type=Tuner ;; sound) type=Audio ;; tv) type=TV ;; video) type=Video ;; *) type= ;; esac; type="AudioVideo;${type}" ;; net) case ${catmin} in dialup) type=Dialup ;; ftp) type=FileTransfer ;; im) type=InstantMessaging ;; irc) type=IRCClient ;; mail) type=Email ;; news) type=News ;; nntp) type=News ;; p2p) type=FileTransfer ;; *) type= ;; esac; type="Network;${type}" ;; sci) case ${catmin} in astro*) type=Astronomy ;; bio*) type=Biology ;; calc*) type=Calculator ;; chem*) type=Chemistry ;; elec*) type=Electronics ;; geo*) type=Geology ;; math*) type=Math ;; physics) type=Physics ;; visual*) type=DataVisualization ;; *) type= ;; esac; type="Science;${type}" ;; sys) type="System" ;; www) case ${catmin} in client) type=WebBrowser ;; *) type= ;; esac; type="Network" ;; *) type= ;; esac; fi; if [ "${SLOT}" == "0" ]; then local desktop_name="${PN}"; else local desktop_name="${PN}-${SLOT}"; fi; local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop"; cat > "${desktop}" <<-EOF [Desktop Entry] Encoding=UTF-8 Version=1.0 Name=${name} Type=Application Comment=${DESCRIPTION} Exec=${exec} TryExec=${exec%% *} Path=${path} Icon=${icon} Categories=${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}" </dev/null); [[ -z ${striptest} ]] && continue; [[ ${striptest} == *"statically linked"* ]] && continue; "${D}"/$(get_libdir)/ld-*.so --library-path "${D}"/$(get_libdir) ${x} > /dev/null || diefunc "$FUNCNAME" "$LINENO" "$?" "simple run test (${x}) failed"; done } pkg_prerm () { return } pkg_setup () { if [[ ${ROOT} != "/" ]] && ! tc-is-cross-compiler; then if has_version '>'${CATEGORY}/${PF}; then eerror "Sanity check to keep you from breaking your system:"; eerror " Downgrading glibc is not supported and a sure way to destruction"; diefunc "$FUNCNAME" "$LINENO" "$?" "aborting to save your system"; fi; fi; if [[ -e ${ROOT}/etc/locale.gen ]] && [[ -e ${ROOT}/etc/locales.build ]]; then eerror "You still haven't deleted ${ROOT}/etc/locales.build."; eerror "Do so now after making sure ${ROOT}/etc/locale.gen is kosher."; diefunc "$FUNCNAME" "$LINENO" "$?" "lazy upgrader detected"; fi; if [[ ${CTARGET} == i386-* ]]; then eerror "i386 CHOSTs are no longer supported."; eerror "Chances are you don't actually want/need i386."; eerror "Please read http://www.gentoo.org/doc/en/change-chost.xml"; diefunc "$FUNCNAME" "$LINENO" "$?" "please fix your CHOST"; fi; if [[ -n ${LT_VER} ]]; then if use nptlonly && ! use nptl; then eerror "If you want nptlonly, add nptl to your USE too ;p"; diefunc "$FUNCNAME" "$LINENO" "$?" "nptlonly without nptl"; fi; fi; if [[ -e /proc/xen ]] && [[ $(tc-arch) == "x86" ]] && ! is-flag -mno-tls-direct-seg-refs; then ewarn "You are using Xen but don't have -mno-tls-direct-seg-refs in your CFLAGS."; ewarn "This will result in a 50% performance penalty, which is probably not what you want."; fi; use hardened && ! gcc-specs-pie && ewarn "PIE hardening not applied, as your compiler doesn't default to PIE" } portageq () { if [ "${EBUILD_PHASE}" == "depend" ]; then diefunc "$FUNCNAME" "$LINENO" "$?" "portageq calls are not allowed in the global scope"; fi; "${PORTAGE_BIN_PATH}/portageq" "$@" } prep_ml_includes () { if [[ $(number_abis) -gt 1 ]]; then local dir; local dirs; local base; if [[ $# -eq 0 ]]; then dirs=/usr/include; else dirs="$@"; fi; for dir in ${dirs}; do base=${T}/gentoo-multilib/${dir}/gentoo-multilib; mkdir -p "${base}"; [[ -d ${base}/${ABI} ]] && rm -rf "${base}/${ABI}"; mv "${D}/${dir}" "${base}/${ABI}"; done; if is_final_abi; then base=${T}/gentoo-multilib; pushd "${base}"; find . | tar -c -T - -f - | tar -x --no-same-owner -f - -C ${D}; popd; set --; for dir in ${dirs}; do set -- "$@" "${dir}"; local abi; for abi in $(get_install_abis); do set -- "$@" "$(get_abi_CDEFINE ${abi}):${dir}/gentoo-multilib/${abi}"; done; create_ml_includes "$@"; done; fi; fi } preserve_old_lib () { if [[ ${EBUILD_PHASE} != "preinst" ]]; then eerror "preserve_old_lib() must be called from pkg_preinst() only"; diefunc "$FUNCNAME" "$LINENO" "$?" "Invalid preserve_old_lib() usage"; fi; [[ -z $1 ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Usage: preserve_old_lib [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; if [[ ${notice} -eq 1 ]]; then ewarn; ewarn "Once you've finished running revdep-rebuild, it should be safe to"; ewarn "delete the old libraries."; fi } 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 ]] } raw-ldflags () { local x input="$@"; [[ -z ${input} ]] && input=${LDFLAGS}; set --; for x in ${input}; do x=${x#-Wl,}; set -- "$@" ${x//,/ }; done; echo "$@" } register_die_hook () { export EBUILD_DEATH_HOOKS="${EBUILD_DEATH_HOOKS} $*" } 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}" } replace-cpu-flags () { local newcpu="$#"; newcpu="${!newcpu}"; while [ $# -gt 1 ]; do replace-flags "-march=${1}" "-march=${newcpu}"; replace-flags "-mcpu=${1}" "-mcpu=${newcpu}"; replace-flags "-mtune=${1}" "-mtune=${newcpu}"; shift; done; return 0 } replace-flags () { [[ $# != 2 ]] && echo && eerror "Usage: replace-flags " && diefunc "$FUNCNAME" "$LINENO" "$?" "replace-flags takes 2 arguments, not $#"; local f fset; declare -a new_CFLAGS new_CXXFLAGS; for fset in CFLAGS CXXFLAGS; do for f in ${!fset}; do [[ ${f} == ${1} ]] && f=${2}; eval new_${fset}\[\${\#new_${fset}\[@]}]=\${f}; done; eval export ${fset}=\${new_${fset}\[*]}; done; return 0 } replace-sparc64-flags () { local SPARC64_CPUS="ultrasparc3 ultrasparc v9"; if [ "${CFLAGS/mtune}" != "${CFLAGS}" ]; then for x in ${SPARC64_CPUS}; do CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8}"; done; else for x in ${SPARC64_CPUS}; do CFLAGS="${CFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}"; done; fi; if [ "${CXXFLAGS/mtune}" != "${CXXFLAGS}" ]; then for x in ${SPARC64_CPUS}; do CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8}"; done; else for x in ${SPARC64_CPUS}; do CXXFLAGS="${CXXFLAGS/-mcpu=${x}/-mcpu=v8 -mtune=${x}}"; done; fi; export CFLAGS CXXFLAGS } replace_all_version_separators () { __versionator_shopt_toggle on; local c; c=($(get_all_version_components "${2:-${PV}}" )); c="${c[@]//[-._]/$1}"; echo ${c// }; __versionator_shopt_toggle off } replace_version_separator () { __versionator_shopt_toggle on; local w i c found=0 v="${3:-${PV}}"; w=${1:-1}; c=($(get_all_version_components ${v} )); if [[ "${w//[[:digit:]]/}" == "${w}" ]]; then for ((i = 0 ; i < ${#c[@]} ; i = $i + 1 )) do if [[ "${c[${i}]}" == "${w}" ]]; then c[${i}]="${2}"; break; fi; done; else for ((i = 0 ; i < ${#c[@]} ; i = $i + 1 )) do if [[ -n "${c[${i}]//[^-._]}" ]]; then found=$(($found + 1)); if [[ "$found" == "${w}" ]]; then c[${i}]="${2}"; break; fi; fi; done; fi; c=${c[@]}; echo ${c// }; __versionator_shopt_toggle off } 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_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='' } setup-allowed-flags () { if [[ -z ${ALLOWED_FLAGS} ]]; then export ALLOWED_FLAGS="-pipe"; export ALLOWED_FLAGS="${ALLOWED_FLAGS} -O -O0 -O1 -O2 -mcpu -march -mtune"; export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fstack-protector -fstack-protector-all"; export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fbounds-checking"; export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-PIE -fno-pie -fno-unit-at-a-time"; export ALLOWED_FLAGS="${ALLOWED_FLAGS} -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+"; export ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-ident"; export ALLOWED_FLAGS="${ALLOWED_FLAGS} -W* -w"; fi; ALLOWED_FLAGS="${ALLOWED_FLAGS} -fno-stack-protector -fno-stack-protector-all -fno-strict-aliasing -fno-bounds-checking"; ALLOWED_FLAGS="${ALLOWED_FLAGS} -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu -mieee -mieee-with-inexact -mschedule -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt -D*"; export UNSTABLE_FLAGS="-Os -O3 -freorder-blocks"; return 0 } setup_env () { unset LANGUAGE LANG LC_ALL; unset LD_RUN_PATH; if is_crosscompile || tc-is-cross-compiler; then multilib_env ${CTARGET}; if ! use multilib; then MULTILIB_ABIS=${DEFAULT_ABI}; else MULTILIB_ABIS=${MULTILIB_ABIS:-${DEFAULT_ABI}}; fi; local VAR=CFLAGS_${CTARGET//[-.]/_}; CFLAGS=${!VAR-${CFLAGS}}; fi; setup_flags; export ABI=${ABI:-${DEFAULT_ABI:-default}}; if is_crosscompile || tc-is-cross-compiler; then local VAR=CFLAGS_${ABI}; export CFLAGS="${!VAR} ${CFLAGS}"; fi } setup_flags () { if is_crosscompile || tc-is-cross-compiler; then CHOST=${CTARGET} strip-unsupported-flags; fi; CFLAGS_BASE=${CFLAGS_BASE-${CFLAGS}}; CFLAGS=${CFLAGS_BASE}; CXXFLAGS_BASE=${CXXFLAGS_BASE-${CXXFLAGS}}; CXXFLAGS=${CXXFLAGS_BASE}; ASFLAGS_BASE=${ASFLAGS_BASE-${ASFLAGS}}; ASFLAGS=${ASFLAGS_BASE}; strip-flags; strip-unsupported-flags; filter-flags -m32 -m64 -mabi=*; unset CBUILD_OPT CTARGET_OPT; if has_multilib_profile; then CTARGET_OPT=$(get_abi_CTARGET); [[ -z ${CTARGET_OPT} ]] && CTARGET_OPT=$(get_abi_CHOST); fi; case $(tc-arch) in x86) if ! echo "" | $(tc-getCC) -E -dD - | grep -qs __i686__; then filter-flags '-march=*'; local t=${CTARGET_OPT:-${CTARGET}}; export CFLAGS="-march=${t%%-*} ${CFLAGS}"; fi ;; amd64) CFLAGS_x86="-m32"; if ! echo "" | $(tc-getCC) -m32 -E -dD - | grep -qs __i686__; then filter-flags '-march=*'; local t=${CTARGET_OPT:-${CTARGET}}; export CFLAGS_x86="${CFLAGS_x86} -march=${t%%-*}"; fi ;; ppc) append-flags "-freorder-blocks" ;; sparc) filter-flags "-fcall-used-g7"; append-flags "-fcall-used-g6"; filter-flags "-mvis"; if is_crosscompile || [[ ${PROFILE_ARCH} == "sparc64" ]] || { has_multilib_profile && ! tc-is-cross-compiler }; then case ${ABI} in sparc64) filter-flags -Wa,-xarch -Wa,-A; if is-flag "-mcpu=ultrasparc3"; then CTARGET_OPT="sparc64b-unknown-linux-gnu"; append-flags "-Wa,-xarch=v9b"; export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9b"; else CTARGET_OPT="sparc64-unknown-linux-gnu"; append-flags "-Wa,-xarch=v9a"; export ASFLAGS="${ASFLAGS} -Wa,-xarch=v9a"; fi ;; *) if is-flag "-mcpu=ultrasparc3"; then CTARGET_OPT="sparcv9b-unknown-linux-gnu"; else CTARGET_OPT="sparcv9-unknown-linux-gnu"; fi ;; esac; else if is-flag "-mcpu=ultrasparc3"; then CTARGET_OPT="sparcv9b-unknown-linux-gnu"; else if { is_crosscompile && want_nptl } || is-flag "-mcpu=ultrasparc2" || is-flag "-mcpu=ultrasparc"; then CTARGET_OPT="sparcv9-unknown-linux-gnu"; fi; fi; fi ;; esac; if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then CBUILD_OPT=${CTARGET_OPT}; fi; filter-flags -O?; append-flags -O2 -fno-strict-aliasing; filter-flags -fstack-protector; if use hardened && gcc-specs-pie; then append-cppflags -DPIC; else filter-flags -fPIE; fi } src_compile () { eblit-run src_compile } src_install () { eblit-run src_install } src_test () { eblit-run src_test } src_unpack () { eblit-run src_unpack } strip-flags () { local x y flag NEW_CFLAGS NEW_CXXFLAGS; setup-allowed-flags; local NEW_CFLAGS=""; local NEW_CXXFLAGS=""; if has ~$(tc-arch) ${ACCEPT_KEYWORDS}; then ALLOWED_FLAGS="${ALLOWED_FLAGS} ${UNSTABLE_FLAGS}"; fi; set -f; for x in ${CFLAGS}; do for y in ${ALLOWED_FLAGS}; do flag=${x%%=*}; if [ "${flag%%${y}}" = "" ]; then NEW_CFLAGS="${NEW_CFLAGS} ${x}"; break; fi; done; done; for x in ${CXXFLAGS}; do for y in ${ALLOWED_FLAGS}; do flag=${x%%=*}; if [ "${flag%%${y}}" = "" ]; then NEW_CXXFLAGS="${NEW_CXXFLAGS} ${x}"; break; fi; done; done; if [ "${CFLAGS/-O}" != "${CFLAGS}" -a "${NEW_CFLAGS/-O}" = "${NEW_CFLAGS}" ]; then NEW_CFLAGS="${NEW_CFLAGS} -O2"; fi; if [ "${CXXFLAGS/-O}" != "${CXXFLAGS}" -a "${NEW_CXXFLAGS/-O}" = "${NEW_CXXFLAGS}" ]; then NEW_CXXFLAGS="${NEW_CXXFLAGS} -O2"; fi; set +f; export CFLAGS="${NEW_CFLAGS}"; export CXXFLAGS="${NEW_CXXFLAGS}"; return 0 } strip-linguas () { local ls newls nols; if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then local op=$1; shift; ls=$(find "$1" -name '*.po' -exec basename {} .po \;); shift; local d f; for d in "$@"; do if [[ ${op} == "-u" ]]; then newls=${ls}; else newls=""; fi; for f in $(find "$d" -name '*.po' -exec basename {} .po \;); do if [[ ${op} == "-i" ]]; then hasq ${f} ${ls} && newls="${newls} ${f}"; else hasq ${f} ${ls} || newls="${newls} ${f}"; fi; done; ls=${newls}; done; else ls="$@"; fi; nols=""; newls=""; for f in ${LINGUAS}; do if hasq ${f} ${ls}; then newls="${newls} ${f}"; else nols="${nols} ${f}"; fi; done; [[ -n ${nols} ]] && ewarn "Sorry, but ${PN} does not support the LINGUAs:" ${nols}; export LINGUAS=${newls:1} } strip-unsupported-flags () { export CFLAGS=$(test-flags-CC ${CFLAGS}); export CXXFLAGS=$(test-flags-CXX ${CXXFLAGS}) } 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-endian () { local host=$1; [[ -z ${host} ]] && host=${CTARGET:-${CHOST}}; host=${host%%-*}; case ${host} in alpha*) echo big ;; arm*b*) echo big ;; arm*) echo little ;; cris*) echo little ;; hppa*) echo big ;; i?86*) echo little ;; ia64*) echo little ;; m68*) echo big ;; mips*l*) echo little ;; mips*) echo big ;; powerpc*) echo big ;; s390*) echo big ;; sh*b*) echo big ;; sh*) echo little ;; sparc*) echo big ;; x86_64*) echo little ;; *) echo wtf ;; esac } tc-export () { local var; for var in "$@"; do eval tc-get${var} > /dev/null; done } tc-getAR () { tc-getPROG AR ar "$@" } tc-getAS () { tc-getPROG AS as "$@" } tc-getBUILD_CC () { local v; for v in CC_FOR_BUILD BUILD_CC HOSTCC; do if [[ -n ${!v} ]]; then export BUILD_CC=${!v}; echo "${!v}"; return 0; fi; done; local search=; if [[ -n ${CBUILD} ]]; then search=$(type -p ${CBUILD}-gcc); search=${search##*/}; fi; search=${search:-gcc}; export BUILD_CC=${search}; echo "${search}" } tc-getCC () { tc-getPROG CC gcc "$@" } tc-getCPP () { tc-getPROG CPP cpp "$@" } tc-getCXX () { tc-getPROG CXX g++ "$@" } tc-getF77 () { tc-getPROG F77 f77 "$@" } tc-getF90 () { tc-getPROG F90 gfortran "$@" } tc-getFORTRAN () { tc-getPROG FORTRAN gfortran "$@" } tc-getGCJ () { tc-getPROG GCJ gcj "$@" } tc-getLD () { tc-getPROG LD ld "$@" } tc-getNM () { tc-getPROG NM nm "$@" } tc-getPROG () { local var=$1; local prog=$2; if [[ -n ${!var} ]]; then echo "${!var}"; return 0; fi; local search=; [[ -n $3 ]] && search=$(type -p "$3-${prog}"); [[ -z ${search} && -n ${CHOST} ]] && search=$(type -p "${CHOST}-${prog}"); [[ -n ${search} ]] && prog=${search##*/}; export ${var}=${prog}; echo "${!var}" } tc-getRANLIB () { tc-getPROG RANLIB ranlib "$@" } tc-getSTRIP () { tc-getPROG STRIP strip "$@" } tc-is-cross-compiler () { return $([[ ${CBUILD:-${CHOST}} != ${CHOST} ]]) } tc-is-softfloat () { case ${CTARGET} in bfin* | h8300*) echo "only" ;; *) [[ ${CTARGET//_/-} == *-softfloat-* ]] && echo "yes" || echo "no" ;; esac } tc-ninja_magic_to_arch () { function ninj () { [[ ${type} == "kern" ]] && echo $1 || echo $2 }; local type=$1; local host=$2; [[ -z ${host} ]] && host=${CTARGET:-${CHOST}}; case ${host} in alpha*) echo alpha ;; arm*) echo arm ;; avr*) ninj avr32 avr ;; bfin*) ninj blackfin bfin ;; cris*) echo cris ;; hppa*) ninj parisc hppa ;; i?86*) 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 unknown ;; esac } test-flag-CC () { test-flag-PROG "CC" "$1" } test-flag-CXX () { test-flag-PROG "CXX" "$1" } test-flag-PROG () { local comp=$1; local flags="$2"; [[ -z ${comp} || -z ${flags} ]] && return 1; local PROG=$(tc-get${comp}); ${PROG} ${flags} -S -o /dev/null -xc /dev/null > /dev/null 2>&1 } test-flags () { test-flags-CC "$@" } test-flags-CC () { test-flags-PROG "CC" "$@" } test-flags-CXX () { test-flags-PROG "CXX" "$@" } test-flags-PROG () { local comp=$1; local flags; local x; shift; [[ -z ${comp} ]] && return 1; x=""; for x in "$@"; do test-flag-${comp} "${x}" && flags="${flags}${flags:+ }${x}"; done; echo "${flags}"; [[ -n ${flags} ]] } test_flag () { ewarn "test_flag: deprecated, please use test-flags()!" 1>&2; test-flags-CC "$@" } test_version_info () { if [[ $($(tc-getCC) --version 2>&1) == *$1* ]]; then return 0; else return 1; fi } toolchain-glibc_src_unpack () { want_nptl && check_nptl_support; unpack glibc-${RELEASE_VER}.tar.bz2; cd "${S}"; [[ -n ${LT_VER} ]] && unpack glibc-linuxthreads-${LT_VER}.tar.bz2; [[ -n ${PORTS_VER} ]] && unpack_addon ports ${PORTS_VER}; unpack_addon libidn; if [[ -n ${PATCH_VER} ]]; then cd "${WORKDIR}"; unpack glibc-${PATCH_GLIBC_VER}-patches-${PATCH_VER}.tar.bz2; local d; for d in extra/*/configure; do mv "${d%/configure}" "${S}" || diefunc "$FUNCNAME" "$LINENO" "$?" "moving ${d}"; done; fi; if [[ -n ${BRANCH_UPDATE} ]]; then cd "${S}"; epatch "${DISTDIR}"/glibc-${RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2; einfo "Patching version to display snapshot date ..."; sed -i -e "s:\(#define RELEASE\).*:\1 \"${BRANCH_UPDATE}\":" version.h; fi; if [[ -n ${MANPAGE_VER} ]]; then cd "${WORKDIR}"; unpack glibc-manpages-${MANPAGE_VER}.tar.bz2; fi; if [[ -n ${INFOPAGE_VER} ]]; then cd "${S}"; unpack glibc-infopages-${INFOPAGE_VER}.tar.bz2; fi; if [[ -n ${PATCH_VER} ]]; then cd "${S}"; EPATCH_MULTI_MSG="Applying Gentoo Glibc Patchset ${PATCH_GLIBC_VER}-${PATCH_VER} ..." EPATCH_EXCLUDE=${GLIBC_PATCH_EXCLUDE} EPATCH_SUFFIX="patch" ARCH=$(tc-arch) epatch "${WORKDIR}"/patches; [[ -e csu/Banner ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "need new banner location"; echo "Gentoo patchset ${PATCH_VER}" > csu/Banner; fi; if use hardened; then cd "${S}"; einfo "Patching to get working PIE binaries on PIE (hardened) platforms"; gcc-specs-pie && epatch "${FILESDIR}"/2.5/glibc-2.5-hardened-pie.patch; epatch "${FILESDIR}"/2.5/glibc-2.5-hardened-configure-picdefault.patch; epatch "${FILESDIR}"/2.6/glibc-2.6-hardened-inittls-nosysenter.patch; einfo "Installing Hardened Gentoo SSP handler"; cp -f "${FILESDIR}"/2.6/glibc-2.6-gentoo-stack_chk_fail.c debug/stack_chk_fail.c || diefunc "$FUNCNAME" "$LINENO" "$?"; if use debug; then sed -i -e '/^CFLAGS-backtrace.c/ iCFLAGS-stack_chk_fail.c = -DSSP_SMASH_DUMPS_CORE' debug/Makefile || diefunc "$FUNCNAME" "$LINENO" "$?" "Failed to modify debug/Makefile for debug stack handler"; fi; sed -i -e 's:-fstack-protector$:-fstack-protector-all:' nscd/Makefile || diefunc "$FUNCNAME" "$LINENO" "$?" "Failed to ensure nscd builds with ssp-all"; fi; gnuconfig_update } treecopy () { dest=${!#}; files_count=$#; while (( $# > 1 )); do dirstruct=$(dirname "$1"); mkdir -p "${dest}/${dirstruct}"; cp -pPR "$1" "${dest}/${dirstruct}"; shift; done } uclibctoolize () { ewarn "uclibctoolize() is deprecated, please just use elibtoolize()!"; elibtoolize } unpack () { 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 xfq "${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_addon () { local addon=$1 ver=${2:-${RELEASE_VER}}; unpack glibc-${addon}-${ver}.tar.bz2; mv glibc-${addon}-${ver} ${addon} || diefunc "$FUNCNAME" "$LINENO" "$?" } 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= } 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_multilib () { case ${CTARGET} in sparc64* | mips64* | x86_64* | powerpc64* | s390x*) has_multilib_profile || use multilib ;; *) false ;; esac } 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 "$@" } version_compare () { __versionator_shopt_toggle on; local ver_a=${1} ver_b=${2} parts_a parts_b cur_idx_a=0 cur_idx_b=0; parts_a=($(get_all_version_components "${ver_a}" )); parts_b=($(get_all_version_components "${ver_b}" )); local inf_loop=0; while true; do inf_loop=$(( ${inf_loop} + 1 )); [[ ${inf_loop} -gt 20 ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "versionator compare bug [numbers, ${ver_a}, ${ver_b}]"; local cur_tok_a=${parts_a[${cur_idx_a}]}; local cur_tok_b=${parts_b[${cur_idx_b}]}; if [[ -n ${cur_tok_a} ]] && [[ -z ${cur_tok_a//[[:digit:]]} ]]; then cur_idx_a=$(( ${cur_idx_a} + 1 )); [[ ${parts_a[${cur_idx_a}]} == "." ]] && cur_idx_a=$(( ${cur_idx_a} + 1 )); else cur_tok_a=""; fi; if [[ -n ${cur_tok_b} ]] && [[ -z ${cur_tok_b//[[:digit:]]} ]]; then cur_idx_b=$(( ${cur_idx_b} + 1 )); [[ ${parts_b[${cur_idx_b}]} == "." ]] && cur_idx_b=$(( ${cur_idx_b} + 1 )); else cur_tok_b=""; fi; [[ -z ${cur_tok_a} ]] && [[ -z ${cur_tok_b} ]] && break; cur_tok_a=${cur_tok_a##+(0)}; cur_tok_b=${cur_tok_b##+(0)}; [[ -z ${cur_tok_a} ]] && cur_tok_a=0; [[ -z ${cur_tok_b} ]] && cur_tok_b=0; [[ ${cur_tok_a} -lt ${cur_tok_b} ]] && __versionator_shopt_toggle off && return 1; [[ ${cur_tok_a} -gt ${cur_tok_b} ]] && __versionator_shopt_toggle off && return 3; done; local letter_a=; letter_a=${parts_a[${cur_idx_a}]}; if [[ ${#letter_a} -eq 1 ]] && [[ -z ${letter_a/[a-z]} ]]; then cur_idx_a=$(( ${cur_idx_a} + 1 )); else letter_a="@"; fi; local letter_b=; letter_b=${parts_b[${cur_idx_b}]}; if [[ ${#letter_b} -eq 1 ]] && [[ -z ${letter_b/[a-z]} ]]; then cur_idx_b=$(( ${cur_idx_b} + 1 )); else letter_b="@"; fi; [[ ${letter_a} < ${letter_b} ]] && __versionator_shopt_toggle off && return 1; [[ ${letter_a} > ${letter_b} ]] && __versionator_shopt_toggle off && return 3; local suffix rule part r_lt r_gt; for rule in "alpha=1" "beta=1" "pre=1" "rc=1" "p=3" "r=3"; do suffix=${rule%%=*}; r_lt=${rule##*=}; [[ ${r_lt} -eq 1 ]] && r_gt=3 || r_gt=1; local suffix_a=; for part in ${parts_a[@]}; do [[ ${part#${suffix}} != ${part} ]] && [[ -z ${part##${suffix}*([[:digit:]])} ]] && suffix_a=${part#${suffix}}0; done; local suffix_b=; for part in ${parts_b[@]}; do [[ ${part#${suffix}} != ${part} ]] && [[ -z ${part##${suffix}*([[:digit:]])} ]] && suffix_b=${part#${suffix}}0; done; [[ -z ${suffix_a} ]] && [[ -z ${suffix_b} ]] && continue; [[ -z ${suffix_a} ]] && __versionator_shopt_toggle off && return ${r_gt}; [[ -z ${suffix_b} ]] && __versionator_shopt_toggle off && return ${r_lt}; suffix_a=${suffix_a##+(0)}; suffix_a=${suffix_a:-0}; suffix_b=${suffix_b##+(0)}; suffix_b=${suffix_b:-0}; [[ ${suffix_a} -lt ${suffix_b} ]] && __versionator_shopt_toggle off && return 1; [[ ${suffix_a} -gt ${suffix_b} ]] && __versionator_shopt_toggle off && return 3; done; __versionator_shopt_toggle off; return 2 } version_is_at_least () { __versionator_shopt_toggle on; local want_s="$1" have_s="${2:-${PVR}}" r; version_compare "${want_s}" "${have_s}"; r=$?; case $r in 1 | 2) __versionator_shopt_toggle off; return 0 ;; 3) __versionator_shopt_toggle off; return 1 ;; *) __versionator_shopt_toggle off; diefunc "$FUNCNAME" "$LINENO" "$?" "versionator compare bug [atleast, ${want_s}, ${have_s}, ${r}]" ;; esac; __versionator_shopt_toggle off } version_sort () { __versionator_shopt_toggle on; local items= left=0; items=($@); while [[ ${left} -lt ${#items[@]} ]]; do local lowest_idx=${left}; local idx=$(( ${lowest_idx} + 1 )); while [[ ${idx} -lt ${#items[@]} ]]; do version_compare "${items[${lowest_idx}]}" "${items[${idx}]}"; [[ $? -eq 3 ]] && lowest_idx=${idx}; idx=$(( ${idx} + 1 )); done; local tmp=${items[${lowest_idx}]}; items[${lowest_idx}]=${items[${left}]}; items[${left}]=${tmp}; left=$(( ${left} + 1 )); done; echo ${items[@]}; __versionator_shopt_toggle off } want__thread () { want_tls || return 1; [[ ${PROFILE_ARCH} == "sparc" ]] && return 1; [[ -n ${WANT__THREAD} ]] && return ${WANT__THREAD}; echo 'extern __thread int i;' > "${T}"/test-__thread.c; $(tc-getCC ${CTARGET}) -c "${T}"/test-__thread.c -o "${T}"/test-__thread.o >&/dev/null; WANT__THREAD=$?; rm -f "${T}"/test-__thread.[co]; return ${WANT__THREAD} } want_linuxthreads () { [[ -z ${LT_VER} ]] && return 1; ! use nptlonly && return 0; want_nptl || return 0; return 1 } want_nptl () { [[ -z ${LT_VER} ]] && return 0; want_tls || return 1; use nptl || return 1; case $(tc-arch) in m68k) return 1 ;; sparc) [[ ${PROFILE_ARCH} == "sparc" ]] && return 1 ;; esac; return 0 } want_tls () { case $(tc-arch) in sparc) case ${CTARGET/-*} in sparc64*) return 1 ;; *) return 0 ;; esac ;; x86) [[ ${CTARGET} == i[4567]86* ]] && return 0; return 1 ;; esac; return 0 } declare -x A="glibc-2.6.1.tar.bz2 glibc-libidn-2.6.1.tar.bz2 glibc-ports-2.6.1.tar.bz2 glibc-2.6.1-patches-1.1.tar.bz2" declare -x AA="glibc-2.6.1.tar.bz2 glibc-libidn-2.6.1.tar.bz2 glibc-ports-2.6.1.tar.bz2 glibc-2.6.1-patches-1.1.tar.bz2" declare -x ABI="default" declare -x ACCEPT_KEYWORDS="x86" declare -x ALLOWED_FLAGS="-pipe -O -O0 -O1 -O2 -mcpu -march -mtune -fstack-protector -fstack-protector-all -fbounds-checking -fno-PIE -fno-pie -fno-unit-at-a-time -g -g[0-9] -ggdb -ggdb[0-9] -gstabs -gstabs+ -fno-ident -W* -w -fno-stack-protector -fno-stack-protector-all -fno-strict-aliasing -fno-bounds-checking -mregparm -mno-app-regs -mapp-regs -mno-mmx -mno-sse -mno-sse2 -mno-sse3 -mno-3dnow -mips1 -mips2 -mips3 -mips4 -mips32 -mips64 -mips16 -msoft-float -mno-soft-float -mhard-float -mno-hard-float -mfpu -mieee -mieee-with-inexact -mschedule -mtls-direct-seg-refs -mno-tls-direct-seg-refs -mflat -mno-flat -mno-faster-structs -mfaster-structs -m32 -m64 -mabi -mlittle-endian -mbig-endian -EL -EB -fPIC -mlive-g0 -mcmodel -mstack-bias -mno-stack-bias -msecure-plt -D*" declare -x ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1 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 ARCH="x86" declare -x AUTOCLEAN="yes" declare -x BASH_ENV="/etc/spork/is/not/valid/profile.env" declare -x BUILD_PREFIX="/var/tmp/portage" declare -x CATEGORY="sys-libs" declare -x CBUILD="i686-pc-linux-gnu" declare -x CCACHE_DISABLE="1" declare -x CDEFINE_default="__unix__" declare -x CFLAGS="-march=i686 -pipe -DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -fno-strict-aliasing" declare -x CFLAGS_default="" declare -x CHOST="i686-pc-linux-gnu" declare -x CHOST_default="i686-pc-linux-gnu" 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/fonts/fonts.conf /etc/gconf /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/terminfo /etc/udev/rules.d" declare -x CPPFLAGS="" declare -x CTARGET="i686-pc-linux-gnu" declare -x CTARGET_default="i686-pc-linux-gnu" declare -x CVS_RSH="ssh" declare -x CXXFLAGS="-pipe -DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -fno-strict-aliasing" declare -x D="/var/tmp/portage/sys-libs/glibc-2.6.1/image/" declare -x DEBUGBUILD="1" declare -x DEFAULT_ABI="default" declare -x DESTTREE="/usr" declare -x DIROPTIONS="-m0755" declare -x DISTDIR="/var/tmp/portage/sys-libs/glibc-2.6.1/distdir" declare -x EBUILD="/usr/portage/sys-libs/glibc/glibc-2.6.1.ebuild" declare -x EBUILD_PHASE="unpack" declare -x ECLASS="" declare -x ECLASSDIR="/usr/portage/eclass" declare -ix ECLASS_DEPTH="0" declare -x EDITOR="/usr/bin/emacs" declare -x ELIBC="glibc" declare -x EMERGE_FROM="ebuild" declare -x EMERGE_WARNING_DELAY="10" declare -x EXEOPTIONS="-m0755" declare -x F77="gfortran" declare -x F77FLAGS="-DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64" declare -x F90="gfortran" declare -x F90FLAGS="-DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64" declare -x F95="gfortran" declare -x F95FLAGS="-DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64" declare -x FC="gfortran" declare -x FCFLAGS="-DAUTO_ARRAYS=1 -DpgiFortran -D_LARGE_FILE_SOURCE -D_FILE_OFFSET_BITS=64" declare -x FEATURES="distlocks metadata-transfer sandbox sfperms strict unmerge-orphans userfetch" declare -x FETCHCOMMAND="/usr/bin/wget -t 5 -T 60 --passive-ftp -O \${DISTDIR}/\${FILE} \${URI}" declare -x FILESDIR="/usr/portage/sys-libs/glibc/files" declare -x GCC_PATH="/usr/i686-pc-linux-gnu/gcc-bin/4.1.2" declare -x GCC_SPECS="" declare -x GDK_USE_XFT="1" declare -x GENTOO_MIRRORS="http://distfiles.gentoo.org http://www.ibiblio.org/pub/Linux/distributions/gentoo /usr/local/portage-cmaq/distfiles /usr/local/portage/distfiles" declare -x G_BROKEN_FILENAMES="1" declare -x G_FILENAME_ENCODING="UTF-8" declare -x HOME="/var/tmp/portage/sys-libs/glibc-2.6.1/homedir" declare -x HUSHLOGIN="FALSE" declare -x INFOPATH="/usr/share/info:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/info:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/info:/usr/share/info/emacs-21" declare -x INHERITED="toolchain-funcs portability flag-o-matic versionator multilib libtool gnuconfig eutils" declare -x INPUT_DEVICES="keyboard mouse evdev" declare -x INSDESTTREE="" declare -x INSOPTIONS="-m0644" declare -x IUSE=" debug nls hardened multilib selinux glibc-omitfp profile glibc-compat20" declare -x KDEDIRS="/usr:/usr/local:/usr/kde/3.5" declare -x KERNEL="linux" declare -x KERNEL_ABI="default" declare -x KV="2.6.22-gentoo-r5" declare -x LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" declare -x LDFLAGS_default="" declare -x LESS="-R -M --shift 5" declare -x LESSOPEN="|lesspipe.sh %s" declare -x LIBDIR_default="lib" declare -x LIBOPTIONS="-m0644" declare -x LINGUAS="en" declare -x LOGNAME="root" declare -x LS_COLORS="no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:su=37;41:sg=30;43:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.pdf=00;32:*.ps=00;32:*.txt=00;32:*.patch=00;32:*.diff=00;32:*.log=00;32:*.tex=00;32:*.doc=00;32:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:" declare -x MAIL="/var/mail/root" declare -x MAKEOPTS="-j3" declare -x MANPATH="/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/i686-pc-linux-gnu/2.18/man:/usr/share/gcc-data/i686-pc-linux-gnu/4.1.2/man:/usr/lib/php5/man/:/usr/kde/3.5/share/man:/usr/qt/3/doc/man" declare -x MOPREFIX="glibc" declare -x MULTILIB_ABIS="default" declare -x O="/usr/portage/sys-libs/glibc" declare -x OLDPWD="/var/tmp/portage/sys-libs/glibc-2.6.1/work" declare -x OPENGL_PROFILE="xorg-x11" declare -x P="glibc-2.6.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/i686-pc-linux-gnu/gcc-bin/4.1.2:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin" declare -x PF="glibc-2.6.1" declare -x PKGDIR="/usr/portage/packages" declare -x PKGUSE="" declare -x PKG_CONFIG_PATH="/usr/qt/3/lib/pkgconfig" declare -x PKG_LOGDIR="/var/tmp/portage/sys-libs/glibc-2.6.1/temp/logging" declare -x PKG_TMPDIR="/var/tmp/binpkgs" declare -x PN="glibc" 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="/var/tmp/portage/sys-libs/glibc-2.6.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_ELOG_SYSTEM="save_summary echo" declare -x PORTAGE_GID="250" declare -x PORTAGE_INST_GID="0" declare -x PORTAGE_INST_UID="0" declare -x PORTAGE_LOG_FILE="/var/tmp/portage/sys-libs/glibc-2.6.1/temp/build.log" declare -x PORTAGE_MASTER_PID="6157" declare -x PORTAGE_PYM_PATH="/usr/lib/portage/pym" declare -x PORTAGE_REPO_NAME="gentoo" 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="/var/tmp" declare -x PORTAGE_WORKDIR_MODE="0700" declare -x PORTDIR="/usr/portage" declare -x PORTDIR_OVERLAY="/usr/local/portage-cmaq /usr/local/portage" declare -x PR="r0" declare -x PROFILE_PATHS="/usr/portage/profiles/base /usr/portage/profiles/default-linux /usr/portage/profiles/default-linux/x86 /usr/portage/profiles/default-linux/x86/2006.1 /etc/portage/profile" declare -x PV="2.6.1" declare -x PVM_ARCH="LINUX" declare -x PVM_ROOT="/usr/share/pvm3" declare -x PVR="2.6.1" declare -x PWD="/var/tmp/portage/sys-libs/glibc-2.6.1" declare -x PYTHONPATH="/usr/lib/portage/pym" declare -x QMAKESPEC="linux-g++" declare -x QTDIR="/usr/qt/3" declare -x RESTRICT="strip" declare -x RESUMECOMMAND="/usr/bin/wget -c -t 5 -T 60 --passive-ftp -O \${DISTDIR}/\${FILE} \${URI}" declare -x ROOT="/" declare -x ROOTPATH="/opt/bin:/usr/i686-pc-linux-gnu/gcc-bin/4.1.2:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin" declare -x RPMDIR="/usr/portage/rpm" declare -x S="/var/tmp/portage/sys-libs/glibc-2.6.1/work/glibc-2.6.1" declare -x SHELL="/bin/bash" declare -x SHLVL="3" declare -x SLOT="2.2" declare -x STAGE1_USE="nptl nptlonly unicode" declare -x STARTDIR="/" declare -x SYNC="rsync://rsync.gentoo.org/gentoo-portage" declare -x T="/var/tmp/portage/sys-libs/glibc-2.6.1/temp" declare -x TERM="linux" declare -x TMP="/var/tmp/portage/sys-libs/glibc-2.6.1/temp" declare -x TMPDIR="/var/tmp/portage/sys-libs/glibc-2.6.1/temp" declare -x UNSTABLE_FLAGS="-Os -O3 -freorder-blocks" declare -x USE="X acpi alsa_cards_ali5451 alsa_cards_als4000 alsa_cards_atiixp alsa_cards_atiixp-modem alsa_cards_bt87x alsa_cards_ca0106 alsa_cards_cmipci alsa_cards_emu10k1 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 apache2 bash-completion bitmap-fonts blas bzip2 cli cracklib crypt ctype cups dri elibc_glibc emacs fam fftw fortran gdbm gpm iconv ieee1394 input_devices_evdev input_devices_keyboard input_devices_mouse ipv6 isdnlog kde 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 linguas_en lm_sensors midi mis mmx mpi mudflap mysql mysqli ncurses netcdf nls nptl nptlonly opengl openmp pam pcre pdf perl php php5 ppds pppd python qt qt3 qt4 readline reflection session spl sse sse2 ssl tcl tcltk tcpd tk truetype-fonts type1-fonts unicode userland_GNU video_cards_apm video_cards_ark video_cards_chips video_cards_cirrus video_cards_cyrix video_cards_dummy video_cards_fbdev video_cards_glint video_cards_i128 video_cards_i740 video_cards_i810 video_cards_imstt video_cards_mach64 video_cards_mga video_cards_neomagic video_cards_nsc video_cards_nv video_cards_r128 video_cards_radeon video_cards_rendition video_cards_s3 video_cards_s3virge video_cards_savage video_cards_siliconmotion video_cards_sis video_cards_sisusb video_cards_tdfx video_cards_tga video_cards_trident video_cards_tseng video_cards_v4l video_cards_vesa video_cards_vga video_cards_via video_cards_vmware video_cards_voodoo x86 xorg 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:env.d" declare -x VIDEO_CARDS="apm ark chips cirrus cyrix dummy fbdev glint i128 i740 i810 imstt mach64 mga neomagic nsc nv r128 radeon rendition s3 s3virge savage siliconmotion sis sisusb tdfx tga trident tseng v4l vesa vga via vmware voodoo" declare -x VTKHOME="/usr" declare -x VTK_DATA_ROOT="/usr/share/vtk/data" declare -x VTK_DIR="/usr/lib/vtk-5.0" declare -x WORKDIR="/var/tmp/portage/sys-libs/glibc-2.6.1/work" declare -x XARGS="xargs -r" declare -x XDG_DATA_DIRS="/usr/share:/usr/kde/3.5/share:/usr/local/share" declare -x _E_DOCDESTTREE_="" declare -x _E_EXEDESTTREE_=""