ABI=amd64 ACCEPT_KEYWORDS=amd64 ACCEPT_LICENSE= ARCH=amd64 ARGS=compile ASFLAGS_x86=--32 AUTOCLEAN=yes BAD=$'\E[31;01m' BASH=/bin/bash BRACKET=$'\E[34;01m' BUILD_PREFIX=/var/tmp/portage CBUILD=x86_64-pc-linux-gnu CDEFINE_amd64=__x86_64__ CDEFINE_default=__unix__ CDEFINE_x86=__i386__ CFLAGS='-march=athlon64 -O2 -pipe -fomit-frame-pointer' CFLAGS_x86='-m32 -L/emul/linux/x86/lib -L/emul/linux/x86/usr/lib' CHOST=x86_64-pc-linux-gnu CHOST_amd64=x86_64-pc-linux-gnu CHOST_default=x86_64-pc-linux-gnu CHOST_x86=i686-pc-linux-gnu CLASSPATH=. CLEAN_DELAY=5 COLS=147 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 /var/bind' CONFIG_PROTECT_MASK='/etc/env.d /etc/env.d/java/ /etc/gconf /etc/java-config/vms/ /etc/revdep-rebuild /etc/terminfo' CTARGET_default=x86_64-pc-linux-gnu CVS_RSH=ssh CXXFLAGS='-march=athlon64 -O2 -pipe -fomit-frame-pointer' DEFAULT_ABI=amd64 DEPEND=$'!minimal? ( berkdb? ( sys-libs/db ) )\n\tatm? ( net-dialup/linux-atm )\n\t>=virtual/os-headers-2.4.21 ' DESCRIPTION='kernel routing and traffic control utilities' DESTTREE=/usr DIROPTIONS=-m0755 DISPLAY=:0.0 DISTCC_DIR=/var/tmp/.distcc DISTDIR=/var/tmp/portage/iproute2-2.6.16.20060323/distdir DOCDESTTREE= ECLASS= ECLASSDIR=/usr/portage/eclass ECLASS_DEPTH=0 EDITOR=/bin/nano ELIBC=glibc EMERGE_WARNING_DELAY=10 ENDCOL=$'\E[A\E[147C' 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/iproute2-2.6.16.20060323/work/patch EPATCH_SUFFIX=patch.bz2 EXEDESTTREE= EXEOPTIONS=-m0755 FETCHCOMMAND='/usr/bin/wget -t 5 -T 60 --passive-ftp -P ${DISTDIR} ${URI}' GCC_SPECS= GDK_USE_XFT=1 GENERATION=2 GENTOO_MIRRORS='ftp://ftp.gtlib.gatech.edu/pub/gentoo http://www.gtlib.gatech.edu/pub/gentoo ftp://ftp.ucsb.edu/pub/mirrors/linux/gentoo/ http://ftp.ucsb.edu/pub/mirrors/linux/gentoo/ http://mirror.usu.edu/mirrors/gentoo/ ftp://mirror.usu.edu/mirrors/gentoo/ ' GOOD=$'\E[32;01m' G_BROKEN_FILENAMES=1 G_FILENAME_ENCODING=UTF-8 HILITE=$'\E[36m' HOME=/var/tmp/portage/iproute2-2.6.16.20060323/homedir HOMEPAGE=http://linux-net.osdl.org/index.php/Iproute2 HOSTTYPE=x86_64 IFS=$' \t\n' INFOPATH=/usr/share/info:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.16.1/info:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.1/info INHERITED='toolchain-funcs multilib eutils portability' INPUT_DEVICES='keyboard mouse' INSDESTTREE= INSOPTIONS=-m0644 IUSE='atm berkdb minimal ' JAVAC=/etc/java-config-2/current-system-vm/bin/javac JAVA_HOME=/etc/java-config-2/current-system-vm JDK_HOME=/etc/java-config-2/current-system-vm KDEDIRS=/usr KERNEL=linux KERNEL_ABI=amd64 KEYWORDS='alpha amd64 arm hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86' KV=2.6.18-gentoo-r2 KVERS=. LAST_E_CMD=einfo LDFLAGS_x86='-m elf_i386 -L/emul/linux/x86/lib -L/emul/linux/x86/usr/lib' LD_PRELOAD=libsandbox.so LESS='-R -M --shift 5' LESSOPEN='|lesspipe.sh %s' LIBDIR_amd64=lib64 LIBDIR_default=lib LIBDIR_x86=lib32 LIBOPTIONS=-m0644 LICENSE=GPL-2 LOGNAME=root MACHTYPE=x86_64-pc-linux-gnu MAKEOPTS=-j3 MANPATH=/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.16.1/man:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.1/man:/opt/blackdown-jdk-1.4.2.03/man:/etc/java-config/system-vm/man/:/usr/qt/3/doc/man MOPREFIX=iproute2 MULTILIB_ABIS='amd64 x86' MULTILIB_STRICT_DENY='64-bit.*shared object' MULTILIB_STRICT_DIRS='/lib /usr/lib /usr/kde/*/lib /usr/qt/*/lib /usr/X11R6/lib' MULTILIB_STRICT_EXEMPT='(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage)' MY_PV=2.6.16 NORMAL=$'\E[0m' O=/usr/portage/sys-apps/iproute2 OCC= OCXX= OLDPWD=/var/tmp/portage/iproute2-2.6.16.20060323 OPENGL_PROFILE=nvidia OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PAGER=/usr/bin/less PDEPEND=' ' PKGDIR=/usr/portage/packages PKGUSE= PKG_CONFIG_PATH=/usr/qt/3/lib64/pkgconfig PKG_LOGDIR=/var/tmp/portage/iproute2-2.6.16.20060323/temp/logging PKG_TMPDIR=/var/tmp/binpkgs 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_BUILDDIR=/var/tmp/portage/iproute2-2.6.16.20060323 PORTAGE_CALLER=emerge PORTAGE_CONFIGROOT=/ PORTAGE_DEBUG=0 PORTAGE_DEPCACHEDIR=/var/cache/edb/dep PORTAGE_ELOG_CLASSES='log warn error' PORTAGE_ELOG_MAILFROM=portage PORTAGE_ELOG_MAILSUBJECT='[portage] ebuild log for ${PACKAGE} on ${HOST}' PORTAGE_ELOG_MAILURI=root PORTAGE_GID=250 PORTAGE_INST_GID=0 PORTAGE_INST_UID=0 PORTAGE_MASTER_PID=21134 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'\''' PORTAGE_RSYNC_RETRIES=3 PORTAGE_WORKDIR_MODE=0700 PORTDIR=/usr/portage PORTDIR_OVERLAY=/usr/local/portage PRELINK_PATH= PRELINK_PATH_MASK=/usr/lib/gstreamer-0.8 PROFILE_PATHS=$'/usr/portage/profiles/base\n/usr/portage/profiles/default-linux\n/usr/portage/profiles/default-linux/amd64\n/usr/portage/profiles/default-linux/amd64/2006.1\n/etc/portage/profile' PROVIDE= PS4='+ ' PWD=/var/tmp/portage/iproute2-2.6.16.20060323/build-info PWORKDIR=/var/tmp/portage/iproute2-2.6.16.20060323/work 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=$'!minimal? ( berkdb? ( sys-libs/db ) )\n\tatm? ( net-dialup/linux-atm ) ' RESTRICT= RESUMECOMMAND='/usr/bin/wget -c -t 5 -T 60 --passive-ftp -P ${DISTDIR} ${URI}' ROOT=/ ROOTPATH=/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.1.1:/opt/blackdown-jdk-1.4.2.03/bin:/opt/blackdown-jdk-1.4.2.03/jre/bin:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin RPMDIR=/usr/portage/rpm S=/var/tmp/portage/iproute2-2.6.16.20060323/work/iproute2-2.6.16-060323 SHELL=/bin/bash SHLVL=3 SLOT=0 SNAP=060323 SRC_URI=http://developer.osdl.org/dev/iproute2/download/iproute2-2.6.16-060323.tar.gz STAGE1_USE='nptl nptlonly unicode' STARTDIR=/usr/local/portage/net-dialup/pptpconfig SYMLINK_LIB=yes SYNC=rsync://rsync.namerica.gentoo.org/gentoo-portage TERM=xterm TMP=/var/tmp/portage/iproute2-2.6.16.20060323/temp TMPDIR=/var/tmp/portage/iproute2-2.6.16.20060323/temp USE='amd64 X a52 aac alsa apache2 audiofile avi bcmath berkdb bitmap-fonts bzip2 calendar cjk clamav cli cracklib crypt ctype cups curl curlwrappers dio directfb dlloader dri dts dvb dvd dvdread elibc_glibc emu-linux-x86 encode exif fbcon ffmpeg flac fortran ftp gd gdbm gif gmp gpm gtk gtk2 hardenedphp hash iconv ieee1394 imagemagick imlib innodb input_devices_keyboard input_devices_mouse ipv6 isdnlog ithreads java javascript jpeg jpeg2k kde kernel_linux lcms ldap libg++ lzo mad matroska mcal mhash mime mjpeg mng mp3 mp4 mpeg mplayer msession mysql mysqli ncurses network nls nptl nptlonly nsplugin nvidia ogg openal opengl osc oss pam pcntl pcre pdf pdo pear perl png posix ppds pppd python qt qt3 qt4 quicktime readline reflection samba sasl sdl seamonkey session simplexml snmp soap sockets spl sqlite ssl svg tcpd theora threads tidy tiff tokenizer transcode truetype truetype-fonts type1-fonts udev unicode usb userland_GNU v4l v4l2 vcd video_cards_fbdev video_cards_nv video_cards_nvidia video_cards_v4l video_cards_vesa vorbis wddx wxwindows x264 xine xml xml2 xorg xpm xv xvid zlib' USER=root USERLAND=GNU USE_EXPAND='CROSSCOMPILE_OPTS DVB_CARDS ELIBC FCDSL_CARDS FOO2ZJS_DEVICES FRITZCAPI_CARDS INPUT_DEVICES KERNEL LINGUAS LIRC_DEVICES MISDN_CARDS USERLAND VIDEO_CARDS' USE_EXPAND_HIDDEN='CROSSCOMPILE_OPTS ELIBC KERNEL USERLAND' USE_ORDER=env:pkg:conf:defaults VIDEO_CARDS='nv nvidia vesa fbdev v4l' VMHANDLE=blackdown-jdk-1.4.2 WARN=$'\E[33;01m' XARGS='xargs -r' XAUTHORITY=/root/.xauthap1fhv _=0 _RC_GET_KV_CACHE= conf=iproute2-2.6.16.20060323-r0 dir=/etc/portage/profile f=DESCRIPTION myarg=compile olocation=/usr/local/portage/eclass/multilib.eclass srcdir=/var/tmp/portage/iproute2-2.6.16.20060323/work/iproute2-2.6.16-060323 EXPORT_FUNCTIONS () { if [ -z "$ECLASS" ]; then echo "EXPORT_FUNCTIONS without a defined ECLASS" 1>&2; exit 1; fi; while [ "$1" ]; do debug-print "EXPORT_FUNCTIONS: ${1} -> ${ECLASS}_${1}"; eval "$1() { ${ECLASS}_$1 "\$@" ; }" >/dev/null; shift; done } KV_major () { [[ -z $1 ]] && return 1; local KV=$@; echo "${KV%%.*}" } KV_micro () { [[ -z $1 ]] && return 1; local KV=$@; KV=${KV#*.*.}; echo "${KV%%[^[:digit:]]*}" } KV_minor () { [[ -z $1 ]] && return 1; local KV=$@; KV=${KV#*.}; echo "${KV%%.*}" } KV_to_int () { [[ -z $1 ]] && return 1; local KV_MAJOR=$(KV_major "$1"); local KV_MINOR=$(KV_minor "$1"); local KV_MICRO=$(KV_micro "$1"); local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO )); if [[ ${KV_int} -ge 131584 ]]; then echo "${KV_int}"; return 0; fi; return 1 } _cdrom_locate_file_on_cd () { local mline=""; local showedmsg=0; while [[ -z ${CDROM_ROOT} ]]; do local i=0; local -a cdset=(${*//:/ }); if [[ -n ${CDROM_SET} ]]; then cdset=(${cdset[${CDROM_SET}]}); fi; while [[ -n ${cdset[${i}]} ]]; do local dir=$(dirname ${cdset[${i}]}); local file=$(basename ${cdset[${i}]}); local point= node= fs= foo=; while read point node fs foo; do [[ *" ${fs} "* != " cd9660 iso9660 " ]] && continue; point=${point//\040/ }; [[ -z $(find "${point}/${dir}" -maxdepth 1 -iname "${file}") ]] && continue; export CDROM_ROOT=${point}; export CDROM_SET=${i}; export CDROM_MATCH=${cdset[${i}]}; return; done <<(get_mounts); ((++i)); done; echo; if [[ ${showedmsg} -eq 0 ]]; then if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then if [[ -z ${CDROM_NAME} ]]; then einfo "Please insert+mount the cdrom for ${PN} now !"; else einfo "Please insert+mount the ${CDROM_NAME} cdrom now !"; fi; else if [[ -z ${CDROM_NAME_1} ]]; then einfo "Please insert+mount cd #${CDROM_CURRENT_CD} for ${PN} now !"; else local var="CDROM_NAME_${CDROM_CURRENT_CD}"; einfo "Please insert+mount the ${!var} cdrom now !"; fi; fi; showedmsg=1; fi; einfo "Press return to scan for the cd again"; einfo "or hit CTRL+C to abort the emerge."; echo; einfo "If you are having trouble with the detection"; einfo "of your CD, it is possible that you do not have"; einfo "Joliet support enabled in your kernel. Please"; einfo "check that CONFIG_JOLIET is enabled in your kernel."; read || diefunc "$FUNCNAME" "$LINENO" "$?" "something is screwed with your system"; done } _eend () { local retval=${1:-0} efunc=${2:-eerror} msg; shift 2; if [[ ${retval} == "0" ]]; then msg="${BRACKET}[ ${GOOD}ok${BRACKET} ]${NORMAL}"; else if [[ -n $* ]]; then ${efunc} "$*"; fi; msg="${BRACKET}[ ${BAD}!!${BRACKET} ]${NORMAL}"; fi; if [[ ${RC_ENDCOL} == "yes" ]]; then echo -e "${ENDCOL} ${msg}"; else [[ ${LAST_E_CMD} == ebegin ]] || LAST_E_LEN=0; printf "%$(( COLS - LAST_E_LEN - 6 ))s%b\n" '' "${msg}"; fi; return ${retval} } _tc_gen_usr_ldscript () { local lib libdir=$(get_libdir) output_format=""; dodir /usr/${libdir}; output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p'); [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )"; for lib in "$@"; do if [[ ${USERLAND} == "Darwin" ]]; then ewarn "Not creating fake dynamic library for $lib on Darwin;"; ewarn "making a symlink instead."; dosym "/${libdir}/${lib}" "/usr/${libdir}/${lib}"; else cat >"${D}/usr/${libdir}/${lib}" <<-END_LDSCRIPT /* GNU ld script Since Gentoo has critical dynamic libraries in /lib, and the static versions in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we run into linking problems. See bug http://bugs.gentoo.org/4411 for more info. */ ${output_format} GROUP ( /${libdir}/${lib} ) END_LDSCRIPT fi fperms a+x "/usr/${libdir}/${lib}" || diefunc "$FUNCNAME" "$LINENO" "$?" "could not change perms on ${lib}"; done } abort_compile () { abort_handler "src_compile" $1; rm -f "${PORTAGE_BUILDDIR}/.compiled"; exit 1 } abort_handler () { local msg; if [ "$2" != "fail" ]; then msg="${EBUILD}: ${1} aborted; exiting."; else msg="${EBUILD}: ${1} failed; exiting."; fi; echo; echo "$msg"; echo; eval ${3}; trap SIGINT SIGQUIT } abort_install () { abort_handler "src_install" $1; rm -rf "${PORTAGE_BUILDDIR}/image"; exit 1 } abort_test () { abort_handler "dyn_test" $1; rm -f "${PORTAGE_BUILDDIR}/.tested"; exit 1 } abort_unpack () { abort_handler "src_unpack" $1; rm -f "${PORTAGE_BUILDDIR}/.unpacked"; rm -rf "${PORTAGE_BUILDDIR}/work"; exit 1 } adddeny () { export SANDBOX_DENY="$SANDBOX_DENY:$1" } addpredict () { export SANDBOX_PREDICT="$SANDBOX_PREDICT:$1" } addread () { export SANDBOX_READ="$SANDBOX_READ:$1" } addwrite () { export SANDBOX_WRITE="$SANDBOX_WRITE:$1" } bashrc_has () { [[ " ${*:2} " == *" $1 "* ]] } best_version () { if [ "${EBUILD_PHASE}" == "depend" ]; then diefunc "$FUNCNAME" "$LINENO" "$?" "portageq calls (best_version calls portageq) are not allowed in the global scope"; fi; "${PORTAGE_BIN_PATH}/portageq" 'best_version' "${ROOT}" "$1" } built_with_use () { local opt=$1; [[ ${opt:0:1} = "-" ]] && shift || opt="-a"; local PKG=$(best_version $1); [[ -z ${PKG} ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Unable to resolve $1 to an installed package"; shift; local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE; local IUSEFILE=${ROOT}/var/db/pkg/${PKG}/IUSE; [[ ! -e ${USEFILE} ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Unable to determine what USE flags $PKG was built with"; local IUSE_BUILT=$(<${IUSEFILE}); local expand; for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]'); do if [[ $1 == ${expand}_* ]]; then expand=""; break; fi; done; if [[ -n ${expand} ]]; then has $1 ${IUSE_BUILT} || diefunc "$FUNCNAME" "$LINENO" "$?" "$PKG does not actually support the $1 USE flag!"; fi; local USE_BUILT=$(<${USEFILE}); while [[ $# -gt 0 ]]; do if [[ ${opt} = "-o" ]]; then has $1 ${USE_BUILT} && return 0; else has $1 ${USE_BUILT} || return 1; fi; shift; done; [[ ${opt} = "-a" ]] } cdrom_get_cds () { local cdcnt=0; local f=; for f in "$@"; do ((++cdcnt)); export CDROM_CHECK_${cdcnt}="$f"; done; export CDROM_TOTAL_CDS=${cdcnt}; export CDROM_CURRENT_CD=1; if [[ -n ${CD_ROOT}${CD_ROOT_1} ]]; then local var=; cdcnt=0; while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do ((++cdcnt)); var="CD_ROOT_${cdcnt}"; [[ -z ${!var} ]] && var="CD_ROOT"; if [[ -z ${!var} ]]; then eerror "You must either use just the CD_ROOT"; eerror "or specify ALL the CD_ROOT_X variables."; eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables."; diefunc "$FUNCNAME" "$LINENO" "$?" "could not locate CD_ROOT_${cdcnt}"; fi; done; export CDROM_ROOT=${CD_ROOT_1:-${CD_ROOT}}; einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"; export CDROM_SET=-1; for f in ${CDROM_CHECK_1//:/ }; do ((++CDROM_SET)); [[ -e ${CD_ROOT}/${f} ]] && break; done; export CDROM_MATCH=${f}; return; fi; if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then einfo "This ebuild will need the ${CDROM_NAME:-cdrom for ${PN}}"; echo; einfo "If you do not have the CD, but have the data files"; einfo "mounted somewhere on your filesystem, just export"; einfo "the variable CD_ROOT so that it points to the"; einfo "directory containing the files."; echo; einfo "For example:"; einfo "export CD_ROOT=/mnt/cdrom"; echo; else if [[ -n ${CDROM_NAME_SET} ]]; then cdcnt=0; while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do ((++cdcnt)); export CDROM_NAME_${cdcnt}="${CDROM_NAME_SET[$((${cdcnt}-1))]}"; done; fi; einfo "This package will need access to ${CDROM_TOTAL_CDS} cds."; cdcnt=0; while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do ((++cdcnt)); var="CDROM_NAME_${cdcnt}"; [[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}"; done; echo; einfo "If you do not have the CDs, but have the data files"; einfo "mounted somewhere on your filesystem, just export"; einfo "the following variables so they point to the right place:"; einfon ""; cdcnt=0; while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do ((++cdcnt)); echo -n " CD_ROOT_${cdcnt}"; done; echo; einfo "Or, if you have all the files in the same place, or"; einfo "you only have one cdrom, you can export CD_ROOT"; einfo "and that place will be used as the same data source"; einfo "for all the CDs."; echo; einfo "For example:"; einfo "export CD_ROOT_1=/mnt/cdrom"; echo; fi; export CDROM_SET=""; export CDROM_CURRENT_CD=0; cdrom_load_next_cd } cdrom_load_next_cd () { local var; ((++CDROM_CURRENT_CD)); unset CDROM_ROOT; var=CD_ROOT_${CDROM_CURRENT_CD}; [[ -z ${!var} ]] && var="CD_ROOT"; if [[ -z ${!var} ]]; then var="CDROM_CHECK_${CDROM_CURRENT_CD}"; _cdrom_locate_file_on_cd ${!var}; else export CDROM_ROOT=${!var}; fi; einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}" } check_KV () { if [ -z "${KV}" ]; then eerror ""; eerror "Could not determine your kernel version."; eerror "Make sure that you have /usr/src/linux symlink."; eerror "And that said kernel has been configured."; eerror "You can also simply run the following command"; eerror "in the kernel referenced by /usr/src/linux:"; eerror " make include/linux/version.h"; eerror ""; diefunc "$FUNCNAME" "$LINENO" "$?"; fi } check_license () { local lic=$1; if [ -z "${lic}" ]; then lic="${PORTDIR}/licenses/${LICENSE}"; else if [ -e "${PORTDIR}/licenses/${lic}" ]; then lic="${PORTDIR}/licenses/${lic}"; else if [ -e "${PWD}/${lic}" ]; then lic="${PWD}/${lic}"; else if [ -e "${lic}" ]; then lic="${lic}"; fi; fi; fi; fi; [ ! -f "${lic}" ] && diefunc "$FUNCNAME" "$LINENO" "$?" "Could not find requested license ${lic}"; local l="`basename ${lic}`"; local shopts=$-; local alic; set -o noglob; for alic in ${ACCEPT_LICENSE}; do if [[ ${alic} == ${l} ]]; then set +o noglob; set -${shopts}; return 0; fi; done; set +o noglob; set -$shopts; local licmsg="$(emktemp)"; cat >${licmsg} <>${licmsg}; ${PAGER:-less} ${licmsg} || diefunc "$FUNCNAME" "$LINENO" "$?" "Could not execute pager (${PAGER}) to accept ${lic}"; einfon "Do you accept the terms of this license (${l})? [yes/no] "; read alic; case ${alic} in yes | Yes | y | Y) return 0 ;; *) echo; echo; echo; eerror "You MUST accept the license to continue! Exiting!"; diefunc "$FUNCNAME" "$LINENO" "$?" "Failed to accept license" ;; esac } create_ml_includes () { local dest=$1; shift; local basedirs=$(create_ml_includes-listdirs "$@"); create_ml_includes-makedestdirs ${dest} ${basedirs}; local file; for file in $(create_ml_includes-allfiles ${basedirs}); do ( echo "/* Autogenerated by create_ml_includes() in multilib.eclass */"; local dir; for dir in ${basedirs}; do if [[ -f ${D}/${dir}/${file} ]]; then echo ""; local sym=$(create_ml_includes-sym_for_dir ${dir} "$@"); if [[ ${sym/=} != "${sym}" ]]; then echo "#if ${sym}"; else if [[ ${sym::1} == "!" ]]; then echo "#ifndef ${sym:1}"; else echo "#ifdef ${sym}"; fi; fi; echo "# include <$(create_ml_includes-absolute ${dir}/${file})>"; echo "#endif /* ${sym} */"; fi; done ) >"${D}/${dest}/${file}"; done } create_ml_includes-absolute () { local dst="$(create_ml_includes-tidy_path $1)"; dst=(${dst//\// }); local i; for ((i=0; i<${#dst[*]}; i++)) do [ "${dst[i]}" == "include" ] && break; done; local strip_upto=$i; for ((i=strip_upto+1; i<${#dst[*]}-1; i++)) do echo -n ${dst[i]}/; done; echo -n ${dst[i]} } create_ml_includes-allfiles () { local basedir file; for basedir in "$@"; do for file in $(find "${D}"/${basedir} -type f); do echo ${file/${D}\/${basedir}\//}; done; done | sort | uniq } create_ml_includes-listdirs () { local dirs; local data; for data in "$@"; do dirs="${dirs} ${data/*:/}"; done; echo ${dirs:1} } create_ml_includes-makedestdirs () { local dest=$1; shift; local basedirs=$@; dodir ${dest}; local basedir; for basedir in ${basedirs}; do local dir; for dir in $(find ${D}/${basedir} -type d); do dodir ${dest}/${dir/${D}\/${basedir}/}; done; done } create_ml_includes-sym_for_dir () { local dir=$1; shift; local data; for data in "$@"; do if [[ ${data} == *:${dir} ]]; then echo ${data/:*/}; return 0; fi; done; echo "Shouldn't be here -- create_ml_includes-sym_for_dir $1 $@"; exit 1 } create_ml_includes-tidy_path () { local removed=$1; if [ -n "${removed}" ]; then while [ "${removed}" != "${removed/\/\//\/}" ]; do removed=${removed/\/\//\/}; done; while [ "${removed}" != "${removed//\/.\//\/}" ]; do removed=${removed//\/.\//\/}; done; [ "${removed##*/}" = "." ] && removed=${removed%/*}; while [ "${removed}" != "${removed//\/..\/}" ]; do local p1="${removed%%\/..\/*}"; local p2="${removed#*\/..\/}"; removed="${p1%\/*}/${p2}"; done; [ "${removed##*/}" = ".." ] && removed=${removed%/*/*}; [ "${removed##*/}" = "" ] && removed=${removed%/*}; echo ${removed}; fi } debug-print () { [ ! -d "$T" ] && return 0; while [ "$1" ]; do if [ "$ECLASS_DEBUG_OUTPUT" == "on" ]; then echo "debug: $1"; else if [ -n "$ECLASS_DEBUG_OUTPUT" ]; then echo "debug: $1" >>$ECLASS_DEBUG_OUTPUT; fi; fi; echo "$1" >>"${T}/eclass-debug.log"; chmod g+w "${T}/eclass-debug.log" >&/dev/null; shift; done } debug-print-function () { str="$1: entering function"; shift; debug-print "$str, parameters: $*" } debug-print-section () { debug-print "now in section $*" } diefunc () { local funcname="$1" lineno="$2" exitcode="$3"; shift 3; echo 1>&2; echo "!!! ERROR: $CATEGORY/$PF failed." 1>&2; dump_trace 2 1>&2; echo " $(basename "${BASH_SOURCE[1]}"), line ${BASH_LINENO[0]}: Called die" 1>&2; echo 1>&2; echo "!!! ${*:-(no error message)}" 1>&2; echo "!!! If you need support, post the topmost build error, and the call stack if relevant." 1>&2; echo 1>&2; if [ "${EBUILD_PHASE/depend}" == "${EBUILD_PHASE}" ]; then local x; for x in $EBUILD_DEATH_HOOKS; do ${x} "$@" 1>&2 1>&2; done; fi; exit 1 } diropts () { export DIROPTIONS="$@" } dlopen_lib () { if [[ ${ELIBC} != *BSD ]]; then echo "-ldl"; fi } do_newdepend () { debug-print-function do_newdepend $*; [ -z "$1" ] && diefunc "$FUNCNAME" "$LINENO" "$?" "do_newdepend without arguments"; [[ ${ECLASS_DEPTH} > 0 ]] && TARGET="E_$1"; [[ ${ECLASS_DEPTH} > 0 ]] || TARGET="$1"; shift; while [ -n "$1" ]; do eval export ${TARGET}=\"\${${TARGET}} \$1\"; shift; done } docinto () { if [ "$1" == "/" ]; then export DOCDESTTREE=""; else export DOCDESTTREE="$1"; if [ ! -d "${D}usr/share/doc/${PF}/${DOCDESTTREE}" ]; then install -d "${D}usr/share/doc/${PF}/${DOCDESTTREE}"; fi; fi } doicon () { local i j; insinto /usr/share/pixmaps; for i in "$@"; do if [[ -f ${i} ]]; then doins "${i}"; else if [[ -d ${i} ]]; then for j in "${i}"/*.png; do doins "${j}"; done; fi; fi; done } domenu () { local i j; insinto /usr/share/applications; for i in "$@"; do if [[ -f ${i} ]]; then doins "${i}"; else if [[ -d ${i} ]]; then for j in "${i}"/*.desktop; do doins "${j}"; done; fi; fi; done } dopamd () { [[ -z $1 ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "dopamd requires at least one argument"; use pam || return 0; INSDESTTREE=/etc/pam.d doins "$@" || diefunc "$FUNCNAME" "$LINENO" "$?" "failed to install $@" } dump_trace () { local funcname="" sourcefile="" lineno="" n e s="yes"; declare -i strip=1; if [[ -n $1 ]]; then strip=$(( $1 )); fi; echo "Call stack:"; for ((n = ${#FUNCNAME[@]} - 1, p = ${#BASH_ARGV[@]} ; n > $strip ; n-- )) do funcname=${FUNCNAME[${n} - 1]}; sourcefile=$(basename ${BASH_SOURCE[${n}]}); lineno=${BASH_LINENO[${n} - 1]}; args=; if [[ -n "${BASH_ARGV[@]}" ]]; then for ((j = 1 ; j <= ${BASH_ARGC[${n} - 1]} ; ++j )) do newarg=${BASH_ARGV[$(( p - j - 1 ))]}; args="${args:+${args} }'${newarg}'"; done; (( p -= ${BASH_ARGC[${n} - 1]} )); fi; echo " ${sourcefile}, line ${lineno}: Called ${funcname}${args:+ ${args}}"; done } dyn_clean () { if [ -z "${PORTAGE_BUILDDIR}" ]; then echo "Aborting clean phase because PORTAGE_BUILDDIR is unset!"; return 1; fi; if type -p chflags >&/dev/null; then chflags -R noschg,nouchg,nosappnd,nouappnd "${PORTAGE_BUILDDIR}"; chflags -R nosunlnk,nouunlnk "${PORTAGE_BUILDDIR}" 2>/dev/null; fi; rm -rf "${PORTAGE_BUILDDIR}/image" "${PORTAGE_BUILDDIR}/homedir"; if ! hasq keeptemp $FEATURES; then rm -rf "${T}"; else [ -e "${T}/environment" ] && mv "${T}/environment" "${T}/environment.keeptemp"; fi; if ! hasq keepwork $FEATURES; then rm -rf "${PORTAGE_BUILDDIR}/.logid"; rm -rf "${PORTAGE_BUILDDIR}/.unpacked"; rm -rf "${PORTAGE_BUILDDIR}/.compiled"; rm -rf "${PORTAGE_BUILDDIR}/.tested"; rm -rf "${PORTAGE_BUILDDIR}/.installed"; rm -rf "${PORTAGE_BUILDDIR}/.packaged"; rm -rf "${PORTAGE_BUILDDIR}/build-info"; rm -rf "${WORKDIR}"; fi; if [ -f "${PORTAGE_BUILDDIR}/.unpacked" ]; then find "${PORTAGE_BUILDDIR}" -type d ! -regex "^${WORKDIR}" | sort -r | tr "\n" "\0" | $XARGS -0 rmdir >&/dev/null; fi; rm -rf "${PORTAGE_BUILDDIR}/distdir"; if [ -z "$(find "${PORTAGE_BUILDDIR}" -mindepth 1 -maxdepth 1)" ]; then rmdir "${PORTAGE_BUILDDIR}"; fi; true } dyn_compile () { trap "abort_compile" SIGINT SIGQUIT; [ "$(type -t pre_src_compile)" == "function" ] && 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 >&/dev/null && [ ! -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 install."; trap SIGINT SIGQUIT; [ "$(type -t post_src_compile)" == "function" ] && post_src_compile; return; fi; if [ -d "${S}" ]; then srcdir=${S}; cd "${S}"; fi; export S D; export PWORKDIR="$WORKDIR"; vecho ">>> Compiling source in ${srcdir} ..."; src_compile; vecho ">>> Source compiled."; cd "${PORTAGE_BUILDDIR}"; touch .compiled; cd build-info; 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 >environment; export -p | sed 's:declare -rx:declare -x:' >>environment; bzip2 -9 environment; cp "${EBUILD}" "${PF}.ebuild"; if hasq nostrip ${FEATURES} ${RESTRICT} || hasq strip ${RESTRICT}; then touch DEBUGBUILD; fi; [ "$(type -t post_src_compile)" == "function" ] && 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 : creates a digest and a manifest file for the package"; echo " manifest : creates 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 : installs the package to the temporary install directory"; echo " qmerge : merge image into live filesystem, recording files in db"; echo " merge : does 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 tarball package in ${PKGDIR}/All"; echo " rpm : builds 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" ] && pre_src_install; rm -rf "${PORTAGE_BUILDDIR}/image"; mkdir "${PORTAGE_BUILDDIR}/image"; if [ -d "${S}" ]; then cd "${S}"; fi; vecho; vecho ">>> Install ${PF} into ${D} category ${CATEGORY}"; export S D; export PWORKDIR="$WORKDIR"; src_install; touch "${PORTAGE_BUILDDIR}/.installed"; vecho ">>> Completed installing ${PF} into ${D}"; vecho; cd ${PORTAGE_BUILDDIR}; [ "$(type -t post_src_install)" == "function" ] && 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" ] && pre_pkg_preinst; declare -r D=${IMAGE}; pkg_preinst; [ "$(type -t post_pkg_preinst)" == "function" ] && post_pkg_preinst } dyn_setup () { [ "$(type -t pre_pkg_setup)" == "function" ] && pre_pkg_setup; pkg_setup; [ "$(type -t post_pkg_setup)" == "function" ] && post_pkg_setup } dyn_test () { [ "$(type -t pre_src_test)" == "function" ] && 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" ] && post_src_test; return; fi; trap "abort_test" SIGINT SIGQUIT; if [ -d "${S}" ]; then cd "${S}"; fi; if ! hasq test $FEATURES; then vecho ">>> Test phase [not enabled]: ${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 /; src_test; SANDBOX_PREDICT="${SANDBOX_PREDICT%:/}"; fi; fi; cd "${PORTAGE_BUILDDIR}"; touch .tested || diefunc "$FUNCNAME" "$LINENO" "$?" "Failed to 'touch .tested' in ${PORTAGE_BUILDDIR}"; [ "$(type -t post_src_test)" == "function" ] && post_src_test; trap SIGINT SIGQUIT } dyn_unpack () { trap "abort_unpack" SIGINT SIGQUIT; [ "$(type -t pre_src_unpack)" == "function" ] && 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"; rm -rf "${WORKDIR}"; break; fi; done; if [ "${EBUILD}" -nt "${WORKDIR}" ]; then vecho ">>> ${EBUILD} has been updated; recreating WORKDIR..."; newstuff="yes"; rm -rf "${WORKDIR}"; else if [ ! -f "${PORTAGE_BUILDDIR}/.unpacked" ]; then vecho ">>> Not marked as unpacked; recreating WORKDIR..."; newstuff="yes"; rm -rf "${WORKDIR}"; fi; fi; fi; if [ -e "${WORKDIR}" ]; then if [ "$newstuff" == "no" ]; then vecho ">>> WORKDIR is up-to-date, keeping..."; [ "$(type -t post_src_unpack)" == "function" ] && 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..."; 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" ] && post_src_unpack; trap SIGINT SIGQUIT } ebeep () { local n; if [[ -z ${EBEEP_IGNORE} ]]; then for ((n=1 ; n <= ${1:-5} ; n++)) do echo -ne "\a"; sleep 0.1 >&/dev/null; sleep 0,1 >&/dev/null; echo -ne "\a"; sleep 1; done; fi } ebegin () { local msg="$*" dots spaces=${RC_DOT_PATTERN//?/ }; if [[ -n ${RC_DOT_PATTERN} ]]; then dots=$(printf "%$(( COLS - 3 - ${#RC_INDENTATION} - ${#msg} - 7 ))s" ''); dots=${dots//${spaces}/${RC_DOT_PATTERN}}; msg="${msg}${dots}"; else msg="${msg} ..."; fi; einfon "${msg}"; [[ ${RC_ENDCOL} == "yes" ]] && echo; LAST_E_LEN=$(( 3 + ${#RC_INDENTATION} + ${#msg} )); LAST_E_CMD="ebegin"; return 0 } econf () { local x; local LOCAL_EXTRA_ECONF="${EXTRA_ECONF}"; if [ -z "${ECONF_SOURCE}" ]; then ECONF_SOURCE="."; fi; if [ -x "${ECONF_SOURCE}/configure" ]; then if [ -e /usr/share/gnuconfig/ ]; then for x in $(find "${WORKDIR}" -type f '(' -name config.guess -o -name config.sub ')'); do vecho " * econf: updating ${x/${WORKDIR}\/} with /usr/share/gnuconfig/${x##*/}"; cp -f /usr/share/gnuconfig/${x##*/} ${x}; done; fi; if [ ! -z "${CBUILD}" ]; then LOCAL_EXTRA_ECONF="--build=${CBUILD} ${LOCAL_EXTRA_ECONF}"; fi; if [ ! -z "${CTARGET}" ]; then LOCAL_EXTRA_ECONF="--target=${CTARGET} ${LOCAL_EXTRA_ECONF}"; fi; LIBDIR_VAR="LIBDIR_${ABI}"; if [ -n "${ABI}" -a -n "${!LIBDIR_VAR}" ]; then CONF_LIBDIR="${!LIBDIR_VAR}"; fi; unset LIBDIR_VAR; if [ -n "${CONF_LIBDIR}" ] && [ "${*/--libdir}" == "$*" ]; then if [ "${*/--exec-prefix}" != "$*" ]; then local args="$(echo $*)"; local -a pref=($(echo ${args/*--exec-prefix[= ]})); CONF_PREFIX=${pref}; [ "${CONF_PREFIX:0:1}" != "/" ] && CONF_PREFIX="/${CONF_PREFIX}"; else if [ "${*/--prefix}" != "$*" ]; then local args="$(echo $*)"; local -a pref=($(echo ${args/*--prefix[= ]})); CONF_PREFIX=${pref}; [ "${CONF_PREFIX:0:1}" != "/" ] && CONF_PREFIX="/${CONF_PREFIX}"; else CONF_PREFIX="/usr"; fi; fi; export CONF_PREFIX; [ "${CONF_LIBDIR:0:1}" != "/" ] && CONF_LIBDIR="/${CONF_LIBDIR}"; CONF_LIBDIR_RESULT="$(strip_duplicate_slashes ${CONF_PREFIX}${CONF_LIBDIR})"; LOCAL_EXTRA_ECONF="--libdir=${CONF_LIBDIR_RESULT} ${LOCAL_EXTRA_ECONF}"; fi; local TMP_CONFCACHE_DIR CONFCACHE_ARG; if hasq confcache $FEATURES && ! hasq confcache $RESTRICT; then CONFCACHE="$(type -p confcache)"; if [ -z "${CONFCACHE}" ]; then ewarn "disabling confcache, binary cannot be found"; else CONFCACHE="${CONFCACHE/ /\ }"; TMP_CONFCACHE_DIR="${CONFCACHE:+${CONFCACHE_DIR:-${PORTAGE_TMPDIR}/confcache}}"; TMP_CONFCACHE_DIR="${TMP_CONFCACHE_DIR/ /\ }"; CONFCACHE_ARG="--confcache-dir"; local s; if [ -n "$CCACHE_DIR" ]; then s="$CCACHE_DIR"; fi; if [ -n "$DISTCC_DIR" ]; then s="${s:+${s}:}$DISTCC_DIR"; fi; if [ -n "$s" ]; then CONFCACHE_ARG="--confcache-ignore $s $CONFCACHE_ARG"; fi; fi; else CONFCACHE=; fi; vecho ${CONFCACHE} ${CONFCACHE_ARG} ${TMP_CONFCACHE_DIR} "${ECONF_SOURCE}/configure" --prefix=/usr --host=${CHOST} --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib "$@" ${LOCAL_EXTRA_ECONF}; if ! ${CONFCACHE} ${CONFCACHE_ARG} ${TMP_CONFCACHE_DIR} "${ECONF_SOURCE}/configure" --prefix=/usr --host=${CHOST} --mandir=/usr/share/man --infodir=/usr/share/info --datadir=/usr/share --sysconfdir=/etc --localstatedir=/var/lib "$@" ${LOCAL_EXTRA_ECONF}; then if [ -s config.log ]; then echo; echo "!!! Please attach the following file when filing a report to bugs.gentoo.org:"; echo "!!! ${PWD}/config.log"; fi; diefunc "$FUNCNAME" "$LINENO" "$?" "econf failed"; fi; else diefunc "$FUNCNAME" "$LINENO" "$?" "no configure script found"; fi } edos2unix () { for f in "$@"; do cp "${f}" ${T}/edos2unix; sed 's/\r$//' ${T}/edos2unix >"${f}"; done } eend () { local retval=${1:-0}; shift; _eend ${retval} eerror "$*"; return ${retval} } eerror () { elog_base ERROR "$*"; [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; echo -e " ${BAD}*${NORMAL} ${RC_INDENTATION}$*"; LAST_E_CMD="eerror"; return 0 } egetent () { case ${CHOST} in *-darwin*) case "$2" in *[!0-9]*) nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }" ;; *) nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }" ;; esac ;; *-freebsd* | *-dragonfly*) local opts action="user"; [[ $1 == "passwd" ]] || action="group"; if [[ $2 == [[:digit:]]* ]]; then [[ ${action} == "user" ]] && opts="-u" || opts="-g"; fi; pw show ${action} ${opts} "$2" -q ;; *-netbsd* | *-openbsd*) grep "$2:\*:" /etc/$1 ;; *) type -p nscd >&/dev/null && nscd -i "$1"; getent "$1" "$2" ;; esac } egethome () { ent=$(egetent passwd $1); case ${CHOST} in *-darwin* | *-freebsd* | *-dragonfly*) echo ${ent} | cut -d: -f9 ;; *) echo ${ent} | cut -d: -f6 ;; esac } egetshell () { ent=$(egetent passwd "$1"); case ${CHOST} in *-darwin* | *-freebsd* | *-dragonfly*) echo ${ent} | cut -d: -f10 ;; *) echo ${ent} cut -d: -f7 ;; esac } einfo () { elog_base INFO "$*"; [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; echo -e " ${GOOD}*${NORMAL} $*"; LAST_E_CMD="einfo"; return 0 } einfon () { elog_base INFO "$*"; [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; echo -ne " ${GOOD}*${NORMAL} $*"; LAST_E_CMD="einfon"; return 0 } einstall () { LIBDIR_VAR="LIBDIR_${ABI}"; if [ -n "${ABI}" -a -n "${!LIBDIR_VAR}" ]; then CONF_LIBDIR="${!LIBDIR_VAR}"; fi; unset LIBDIR_VAR; if [ -n "${CONF_LIBDIR}" ] && [ "${CONF_PREFIX:-unset}" != "unset" ]; then EI_DESTLIBDIR="${D}/${CONF_PREFIX}/${CONF_LIBDIR}"; EI_DESTLIBDIR="$(strip_duplicate_slashes ${EI_DESTLIBDIR})"; EXTRA_EINSTALL="libdir=${EI_DESTLIBDIR} ${EXTRA_EINSTALL}"; unset EI_DESTLIBDIR; fi; if [ -f ./[mM]akefile -o -f ./GNUmakefile ]; then if [ ! -z "${PORTAGE_DEBUG}" ]; then make -n prefix=${D}/usr datadir=${D}/usr/share infodir=${D}/usr/share/info localstatedir=${D}/var/lib mandir=${D}/usr/share/man sysconfdir=${D}/etc ${EXTRA_EINSTALL} "$@" install; fi; make prefix=${D}/usr datadir=${D}/usr/share infodir=${D}/usr/share/info localstatedir=${D}/var/lib mandir=${D}/usr/share/man sysconfdir=${D}/etc ${EXTRA_EINSTALL} "$@" install || diefunc "$FUNCNAME" "$LINENO" "$?" "einstall failed"; else diefunc "$FUNCNAME" "$LINENO" "$?" "no Makefile found"; fi } elog () { elog_base LOG "$*"; echo -e " ${GOOD}*${NORMAL} $*"; return 0 } elog_base () { local messagetype; [ -z "${1}" -o -z "${T}" -o ! -d "${T}/logging" ] && return 1; case "${1}" in INFO | WARN | ERROR | LOG) 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 [[ -z $(type -p mktemp) ]]; 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 [[ ${USERLAND} == "GNU" ]] && mktemp -p "${topdir}" || TMPDIR="${topdir}" mktemp -t tmp; else [[ ${USERLAND} == "GNU" ]] && mktemp -d "${topdir}" || TMPDIR="${topdir}" mktemp -dt tmp; 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 } esyslog () { return 0 } ewarn () { elog_base WARN "$*"; [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo; echo -e " ${WARN}*${NORMAL} ${RC_INDENTATION}$*"; LAST_E_CMD="ewarn"; return 0 } exeinto () { if [ "$1" == "/" ]; then export EXEDESTTREE=""; else export EXEDESTTREE="$1"; if [ ! -d "${D}${EXEDESTTREE}" ]; then install -d "${D}${EXEDESTTREE}"; fi; fi } exeopts () { export EXEOPTIONS="$@"; hasq -s ${EXEOPTIONS} && diefunc "$FUNCNAME" "$LINENO" "$?" "Never call exeopts() with -s" } filter_invalid_flags () { local flag broken_flags; eval broken_flags=($(get_broken_flags $(getPROG CC gcc) c ${CFLAGS})); for flag in "${broken_flags[@]}"; do ewarn "Filtering out invalid CFLAG \"${flag}\""; CFLAGS="$(remove_flag "${flag}" ${CFLAGS})"; done; eval broken_flags=($(get_broken_flags $(getPROG CXX g++) c++ ${CXXFLAGS})); for flag in "${broken_flags[@]}"; do ewarn "Filtering out invalid CXXFLAG \"${flag}\""; CXXFLAGS="$(remove_flag "${flag}" ${CXXFLAGS})"; done } find_unpackable_file () { local src=$1; if [[ -z ${src} ]]; then src=${DISTDIR}/${A}; else if [[ -e ${DISTDIR}/${src} ]]; then src=${DISTDIR}/${src}; else if [[ -e ${PWD}/${src} ]]; then src=${PWD}/${src}; else if [[ -e ${src} ]]; then src=${src}; fi; fi; fi; fi; [[ ! -e ${src} ]] && return 1; echo "${src}" } gcc-fullversion () { echo "$($(tc-getCC) -dumpversion)" } gcc-major-version () { echo "$(gcc-version | cut -f1 -d.)" } gcc-micro-version () { echo "$(gcc-fullversion | cut -f3 -d. | cut -f1 -d-)" } gcc-minor-version () { echo "$(gcc-version | cut -f2 -d.)" } gcc-specs-directive () { 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-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 () { echo "$(gcc-fullversion | cut -f1,2 -d.)" } gen_usr_ldscript () { _tc_gen_usr_ldscript "$@" } gen_wrapper () { cat >"$1" <<-EOF #!/bin/sh exec $2 "\$@" EOF chmod 0755 "$1" } getPROG () { local var=$1 prog=$2; if [[ -n ${!var} ]]; then echo "${!var}"; return 0; fi; local search=; [[ -n $3 ]] && search=$(type -p "$3-${prog}"); [[ -z ${search} && -n ${CHOST} ]] && search=$(type -p "${CHOST}-${prog}"); [[ -n ${search} ]] && prog=${search##*/}; export ${var}=${prog}; echo "${!var}" } get_KV () { [[ -z ${_RC_GET_KV_CACHE} ]] && _RC_GET_KV_CACHE=$(uname -r); echo $(KV_to_int "${_RC_GET_KV_CACHE}"); return $? } get_abi_ASFLAGS () { get_abi_var ASFLAGS "$@" } get_abi_CDEFINE () { get_abi_var CDEFINE "$@" } get_abi_CFLAGS () { get_abi_var CFLAGS "$@" } get_abi_CHOST () { get_abi_var CHOST "$@" } get_abi_CTARGET () { get_abi_var CTARGET "$@" } get_abi_FAKE_TARGETS () { get_abi_var FAKE_TARGETS "$@" } get_abi_LDFLAGS () { get_abi_var LDFLAGS "$@" } get_abi_LIBDIR () { get_abi_var LIBDIR "$@" } get_abi_var () { local flag=$1; local abi; if [ $# -gt 1 ]; then abi=${2}; else if [ -n "${ABI}" ]; then abi=${ABI}; else if [ -n "${DEFAULT_ABI}" ]; then abi=${DEFAULT_ABI}; else abi="default"; fi; fi; fi; local var="${flag}_${abi}"; echo ${!var} } get_all_abis () { local order=""; if [[ -z ${MULTILIB_ABIS} ]]; then echo "default"; return 0; fi; for x in ${MULTILIB_ABIS}; do if [[ ${x} != ${DEFAULT_ABI} ]]; then order="${order:+${order} }${x}"; fi; done; order="${order:+${order} }${DEFAULT_ABI}"; echo ${order}; return 0 } get_all_libdirs () { local libdirs="lib"; local abi; local dir; for abi in ${MULTILIB_ABIS}; do [ "$(get_abi_LIBDIR ${abi})" != "lib" ] && libdirs="${libdirs} $(get_abi_LIBDIR ${abi})"; done; echo "${libdirs}" } get_bmake () { if [[ ${USERLAND} == *BSD ]]; then echo make; else if [[ ${USERLAND} == "Darwin" ]]; then echo bsdmake; else echo pmake; fi; fi } get_broken_flags () { local myprog="${1}" lang="${2}"; shift 2; echo 'main(){}' | LC_ALL=C ${myprog} ${@} -x ${lang} -o /dev/null - 2>&1 | egrep "unrecognized .*option" | egrep -o -- '('\''|\"|`)-.*' | sed -r 's/('\''|`|")//g; s/^/"/; s/$/"/'; echo 'main(){}' | LC_ALL=C ${myprog} ${@} -x ${lang} -o /dev/null - 2>&1 | egrep "unrecognised debug output" | egrep -o -- '('\''|\"|`).*' | sed -r 's/('\''|`|")//g; s/^/"-g/; s/$/"/' } get_install_abis () { local order=""; if [[ -z ${MULTILIB_ABIS} ]]; then echo "default"; return 0; fi; if hasq multilib-pkg-force ${RESTRICT} || { hasq multilib-pkg ${FEATURES} && hasq multilib-pkg ${RESTRICT} }; then for x in ${MULTILIB_ABIS}; do if [[ ${x} != "${DEFAULT_ABI}" ]]; then hasq ${x} ${ABI_DENY} || ordera="${ordera} ${x}"; fi; done; hasq ${DEFAULT_ABI} ${ABI_DENY} || order="${ordera} ${DEFAULT_ABI}"; if [[ -n ${ABI_ALLOW} ]]; then local ordera=""; for x in ${order}; do if hasq ${x} ${ABI_ALLOW}; then ordera="${ordera} ${x}"; fi; done; order=${ordera}; fi; else order=${DEFAULT_ABI}; fi; if [[ -z ${order} ]]; then diefunc "$FUNCNAME" "$LINENO" "$?" "The ABI list is empty. Are you using a proper multilib profile? Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package."; fi; echo ${order}; return 0 } get_libdir () { local CONF_LIBDIR; if [ -n "${CONF_LIBDIR_OVERRIDE}" ]; then echo ${CONF_LIBDIR_OVERRIDE}; else get_abi_LIBDIR; fi } get_libdir_override () { if has_multilib_profile; then eerror "get_libdir_override called, but it shouldn't be needed with the new multilib approach. Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org"; exit 1; fi; CONF_LIBDIR="$1"; CONF_LIBDIR_OVERRIDE="$1"; LIBDIR_default="$1" } get_libname () { local libname; local ver=$1; case ${CHOST} in *-darwin*) libname="dylib" ;; *) libname="so" ;; esac; if [[ -z $@ ]]; then echo ".${libname}"; else for ver in "$@"; do case ${CHOST} in *-darwin*) echo ".${ver}.${libname}" ;; *) echo ".${libname}.${ver}" ;; esac; done; fi } get_ml_incdir () { local dir=/usr/include; if [[ $# -gt 0 ]]; then incdir=$1; shift; fi; if [[ -z "${MULTILIB_ABIS}" ]]; then echo ${incdir}; return 0; fi; local abi=${ABI-${DEFAULT_ABI}}; if [[ $# -gt 0 ]]; then abi=$1; shift; fi; if [[ -d "${dir}/gentoo-multilib/${abi}" ]]; then echo ${dir}/gentoo-multilib/${abi}; else echo ${dir}; fi } get_mounts () { local point= node= fs= opts= foo=; if [[ $(uname -s) == "Linux" ]]; then while read node point fs opts foo; do echo "${point} ${node} ${fs} ${opts}"; done 1 ]]; then debug-print "*** Multiple Inheritence (Level: ${ECLASS_DEPTH})"; fi; local location; local PECLASS; local B_IUSE; local B_DEPEND; local B_RDEPEND; local B_PDEPEND; while [ "$1" ]; do location="${ECLASSDIR}/${1}.eclass"; PECLASS="$ECLASS"; export ECLASS="$1"; if [ "$EBUILD_PHASE" != "depend" ]; then if ! hasq $ECLASS $INHERITED; then vecho; vecho "QA Notice: ECLASS '$ECLASS' inherited illegally in $CATEGORY/$PF" 1>&2; vecho; 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()"; 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; source "$location" || diefunc "$FUNCNAME" "$LINENO" "$?" "died sourcing $location in inherit()"; set -f; [ "${IUSE-unset}" != "unset" ] && export E_IUSE="${E_IUSE} ${IUSE}"; [ "${DEPEND-unset}" != "unset" ] && export E_DEPEND="${E_DEPEND} ${DEPEND}"; [ "${RDEPEND-unset}" != "unset" ] && export E_RDEPEND="${E_RDEPEND} ${RDEPEND}"; [ "${PDEPEND-unset}" != "unset" ] && export E_PDEPEND="${E_PDEPEND} ${PDEPEND}"; [ "${B_IUSE-unset}" != "unset" ] && IUSE="${B_IUSE}"; [ "${B_IUSE-unset}" != "unset" ] || unset IUSE; [ "${B_DEPEND-unset}" != "unset" ] && DEPEND="${B_DEPEND}"; [ "${B_DEPEND-unset}" != "unset" ] || unset DEPEND; [ "${B_RDEPEND-unset}" != "unset" ] && RDEPEND="${B_RDEPEND}"; [ "${B_RDEPEND-unset}" != "unset" ] || unset RDEPEND; [ "${B_PDEPEND-unset}" != "unset" ] && PDEPEND="${B_PDEPEND}"; [ "${B_PDEPEND-unset}" != "unset" ] || unset PDEPEND; set +f; hasq $1 $INHERITED || export INHERITED="$INHERITED $1"; export ECLASS="$PECLASS"; shift; done; ((--ECLASS_DEPTH)); return 0 } insinto () { if [ "$1" == "/" ]; then export INSDESTTREE=""; else export INSDESTTREE=$1; if [ ! -d "${D}${INSDESTTREE}" ]; then install -d "${D}${INSDESTTREE}"; fi; fi } insopts () { export INSOPTIONS="$@"; hasq -s ${INSOPTIONS} && diefunc "$FUNCNAME" "$LINENO" "$?" "Never call insopts() with -s" } into () { if [ "$1" == "/" ]; then export DESTTREE=""; else export DESTTREE=$1; if [ ! -d "${D}${DESTTREE}" ]; then install -d "${D}${DESTTREE}"; fi; fi } is-login-disabled () { shell=$(egetshell "$1"); case ${shell} in /bin/false | /usr/bin/false | /sbin/nologin | /usr/sbin/nologin) return 0 ;; *) return 1 ;; esac } is_final_abi () { has_multilib_profile || return 0; local ALL_ABIS=$(get_install_abis); local LAST_ABI=${ALL_ABIS/* /}; [[ ${LAST_ABI} == ${ABI} ]] } keepdir () { dodir "$@"; local x; if [ "$1" == "-R" ] || [ "$1" == "-r" ]; then shift; find "$@" -type d -printf "${D}/%p/.keep_${CATEGORY}_${PN}-${SLOT}\n" | tr "\n" "\0" | $XARGS -0 -n100 touch || diefunc "$FUNCNAME" "$LINENO" "$?" "Failed to recursive 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 } lchgrp () { chgrp -h "$@" } lchown () { chown -h "$@" } libopts () { export LIBOPTIONS="$@"; hasq -s ${LIBOPTIONS} && diefunc "$FUNCNAME" "$LINENO" "$?" "Never call libopts() with -s" } make_desktop_entry () { [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1; local exec=${1}; local name=${2:-${PN}}; local icon=${3:-${PN}.png}; local type=${4}; local path=${5}; if [[ -z ${type} ]]; then local catmaj=${CATEGORY%%-*}; local catmin=${CATEGORY##*-}; case ${catmaj} in app) case ${catmin} in admin) type=System ;; cdr) type=DiscBurning ;; dicts) type=Dictionary ;; editors) type=TextEditor ;; emacs) type=TextEditor ;; emulation) type=Emulator ;; laptop) type=HardwareSettings ;; office) type=Office ;; vim) type=TextEditor ;; xemacs) type=TextEditor ;; *) type= ;; esac ;; dev) type="Development" ;; games) case ${catmin} in action) type=ActionGame ;; arcade) type=ArcadeGame ;; board) type=BoardGame ;; kids) type=KidsGame ;; emulation) type=Emulator ;; puzzle) type=LogicGame ;; rpg) type=RolePlaying ;; roguelike) type=RolePlaying ;; simulation) type=Simulation ;; sports) type=SportsGame ;; strategy) type=StrategyGame ;; *) type= ;; esac; type="Game;${type}" ;; mail) type="Network;Email" ;; media) case ${catmin} in gfx) type=Graphics ;; radio) type=Tuner ;; sound) type=Audio ;; tv) type=TV ;; video) type=Video ;; *) type= ;; esac; type="AudioVideo;${type}" ;; net) case ${catmin} in dialup) type=Dialup ;; ftp) type=FileTransfer ;; im) type=InstantMessaging ;; irc) type=IRCClient ;; mail) type=Email ;; news) type=News ;; nntp) type=News ;; p2p) type=FileTransfer ;; *) type= ;; esac; type="Network;${type}" ;; sci) case ${catmin} in astro*) type=Astronomy ;; bio*) type=Biology ;; calc*) type=Calculator ;; chem*) type=Chemistry ;; geo*) type=Geology ;; math*) type=Math ;; *) type= ;; esac; type="Science;${type}" ;; www) case ${catmin} in client) type=WebBrowser ;; *) type= ;; esac; type="Network" ;; *) type= ;; esac; fi; if [ "${SLOT}" == "0" ]; then local desktop_name="${PN}"; else local desktop_name="${PN}-${SLOT}"; fi; local desktop=${T}/${exec%% *}-${desktop_name}.desktop; echo "[Desktop Entry] Encoding=UTF-8 Version=0.9.2 Name=${name} Type=Application Comment=${DESCRIPTION} Exec=${exec} TryExec=${exec%% *} Path=${path} Icon=${icon} Categories=Application;${type};" >"${desktop}"; ( insinto /usr/share/applications; doins "${desktop}" ) } make_session_desktop () { [[ -z $1 ]] && eerror "make_session_desktop: You must specify the title" && return 1; [[ -z $2 ]] && eerror "make_session_desktop: You must specify the command" && return 1; local title=$1; local command=$2; local desktop=${T}/${wm}.desktop; echo "[Desktop Entry] Encoding=UTF-8 Name=${title} Comment=This session logs you into ${title} Exec=${command} TryExec=${command} Type=Application" >"${desktop}"; 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) ; echo $2); (( COLS > 0 )) || (( COLS = 80 )); COLS=$((${COLS} - 8)); ENDCOL='['${COLS}'C'; [ -z "${GOOD}" ] && GOOD=''; [ -z "${WARN}" ] && WARN=''; [ -z "${BAD}" ] && BAD=''; [ -z "${HILITE}" ] && HILITE=''; [ -z "${BRACKET}" ] && BRACKET=''; NORMAL='' } src_compile () { echo -n 'TC_CONFIG_ATM:=' >Config; use atm && echo 'y' >>Config || echo 'n' >>Config; local SUBDIRS="lib ip tc misc netem"; use minimal && SUBDIRS="lib tc"; emake CC="$(tc-getCC)" AR="$(tc-getAR)" SUBDIRS="${SUBDIRS}" || diefunc "$FUNCNAME" "$LINENO" "$?" "make" } src_install () { if use minimal; then into /; dosbin tc/tc || diefunc "$FUNCNAME" "$LINENO" "$?" "minimal"; return 0; fi; make DESTDIR="${D}" SBINDIR=/sbin DOCDIR=/usr/share/doc/${PF} install || diefunc "$FUNCNAME" "$LINENO" "$?" "make install failed"; if use berkdb; then dodir /var/lib/arpd; dodir /usr/sbin; mv "${D}"/sbin/arpd "${D}"/usr/sbin/; fi } src_test () { if emake -j1 check -n >&/dev/null; then vecho ">>> Test phase [check]: ${CATEGORY}/${PF}"; if ! emake -j1 check; then hasq test $FEATURES && diefunc "$FUNCNAME" "$LINENO" "$?" "Make check failed. See above for details."; hasq test $FEATURES || eerror "Make check failed. See above for details."; fi; else if emake -j1 test -n >&/dev/null; then vecho ">>> Test phase [test]: ${CATEGORY}/${PF}"; if ! emake -j1 test; then hasq test $FEATURES && diefunc "$FUNCNAME" "$LINENO" "$?" "Make test failed. See above for details."; hasq test $FEATURES || eerror "Make test failed. See above for details."; fi; else vecho ">>> Test phase [none]: ${CATEGORY}/${PF}"; fi; fi } src_unpack () { unpack ${A}; cd "${S}"; sed -i "s:-O2:${CFLAGS}:" Makefile || diefunc "$FUNCNAME" "$LINENO" "$?" "sed Makefile failed"; epatch "${FILESDIR}"/${P}-ifcfg-catch-missing-argument.patch; epatch "${FILESDIR}"/${P}-build.patch; epatch "${FILESDIR}"/${P}-routef-safe.patch; epatch "${FILESDIR}"/${PN}-051007-esfq-2.6.13.patch; epatch "${FILESDIR}"/${PN}-2.6.11.20050330-wrr.patch; use berkdb || sed -i '/^TARGETS=/s: arpd : :' misc/Makefile; sed -i 's:/usr/local:/usr:' tc/m_ipt.c include/iptables.h; sed -i "s:/usr/lib:/usr/$(get_libdir):g" netem/Makefile tc/{Makefile,tc.c,q_netem.c,m_ipt.c} include/iptables.h || diefunc "$FUNCNAME" "$LINENO" "$?"; sed -i "s:/usr/local/lib/iptables:/$(get_libdir)/iptables:g" include/iptables.h } strip-linguas () { local ls newls nols; if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then local op=$1; shift; ls=$(find "$1" -name '*.po' -exec basename {} .po \;); shift; local d f; for d in "$@"; do if [[ ${op} == "-u" ]]; then newls=${ls}; else newls=""; fi; for f in $(find "$d" -name '*.po' -exec basename {} .po \;); do if [[ ${op} == "-i" ]]; then hasq ${f} ${ls} && newls="${newls} ${f}"; else hasq ${f} ${ls} || newls="${newls} ${f}"; fi; done; ls=${newls}; done; else ls="$@"; fi; nols=""; newls=""; for f in ${LINGUAS}; do if hasq ${f} ${ls}; then newls="${newls} ${f}"; else nols="${nols} ${f}"; fi; done; [[ -n ${nols} ]] && ewarn "Sorry, but ${PN} does not support the LINGUAs:" ${nols}; export LINGUAS=${newls:1} } strip_duplicate_slashes () { if [[ -n $1 ]]; then local removed=$1; while [[ ${removed} == *//* ]]; do removed=${removed//\/\///}; done; echo ${removed}; fi } tc-arch () { tc-ninja_magic_to_arch portage $@ } tc-arch-kernel () { tc-ninja_magic_to_arch kern $@ } tc-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-ninja_magic_to_arch () { function ninj () { [[ ${type} == "kern" ]] && echo $1 || echo $2 }; local type=$1; local host=$2; [[ -z ${host} ]] && host=${CTARGET:-${CHOST}}; case ${host} in alpha*) echo alpha ;; arm*) echo arm ;; bfin*) ninj blackfin bfin ;; cris*) echo cris ;; hppa*) ninj parisc hppa ;; i?86*) ninj i386 x86 ;; ia64*) echo ia64 ;; m68*) echo m68k ;; mips*) echo mips ;; nios2*) echo nios2 ;; nios*) echo nios ;; powerpc*) if [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.16) ]] && [[ ${type} == "kern" ]]; then echo powerpc; else if [[ $(KV_to_int ${KV}) -eq $(KV_to_int 2.6.15) ]] && [[ ${type} == "kern" ]]; then if [[ ${host} == powerpc64* ]] || [[ ${PROFILE_ARCH} == "ppc64" ]]; then echo powerpc; else echo ppc; fi; else if [[ ${host} == powerpc64* ]]; then echo ppc64; else if [[ ${PROFILE_ARCH} == "ppc64" ]]; then ninj ppc64 ppc; else echo ppc; fi; fi; fi; fi ;; s390*) echo s390 ;; sh64*) ninj sh64 sh ;; sh*) echo sh ;; sparc64*) ninj sparc64 sparc ;; sparc*) [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc ;; vax*) echo vax ;; x86_64*) ninj x86_64 amd64 ;; *) echo ${ARCH} ;; esac } treecopy () { dest=${!#}; files_count=$#; while (( $# > 1 )); do dirstruct=$(dirname "$1"); mkdir -p "${dest}/${dirstruct}"; cp -pPR "$1" "${dest}/${dirstruct}"; shift; done } unpack () { local x; local y; local myfail; local tarvars; if [ "$USERLAND" == "BSD" ]; then tarvars=""; else tarvars="--no-same-owner"; fi; [ -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 xf "${srcdir}${x}" ${tarvars} || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail" ;; tgz) tar xzf "${srcdir}${x}" ${tarvars} || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail" ;; tbz | tbz2) bzip2 -dc "${srcdir}${x}" | tar xf - ${tarvars}; _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 zxf "${srcdir}${x}" ${tarvars} || 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 xf - ${tarvars}; _pipestatus="${PIPESTATUS[*]}"; [[ "${_pipestatus// /}" -eq 0 ]] || diefunc "$FUNCNAME" "$LINENO" "$_pipestatus" "$myfail"; else bzip2 -dc "${srcdir}${x}" >${x%.*} || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail"; fi ;; 7Z | 7z) local my_output; my_output="$(7z x -y "${srcdir}/${x}")"; if [ $? -ne 0 ]; then echo "${my_output}" 1>&2; diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail"; fi ;; RAR | rar) unrar x -idq -o+ "${srcdir}/${x}" || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail" ;; LHa | LHA | lha | lzh) lha xqf "${srcdir}/${x}" || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail" ;; a | deb) ar x "${srcdir}/${x}" || diefunc "$FUNCNAME" "$LINENO" "$?" "$myfail" ;; *) vecho "unpack ${x}: file format not recognized. Ignoring." ;; esac; done; chmod -Rf a+rX,u+w,g-w,o-w . } unpack_makeself () { local src_input=${1:-${A}}; local src=$(find_unpackable_file "${src_input}"); local skip=$2; local exe=$3; [[ -z ${src} ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Could not locate source for '${src_input}'"; local shrtsrc=$(basename "${src}"); echo ">>> Unpacking ${shrtsrc} to ${PWD}"; if [[ -z ${skip} ]]; then local ver=$(grep -a '#.*Makeself' "${src}" | awk '{print $NF}'); local skip=0; exe=tail; case ${ver} in 1.5.* | 1.6.0-nv) skip=$(grep -a ^skip= "${src}" | cut -d= -f2) ;; 2.0 | 2.0.1) skip=$(grep -a ^' 'tail "${src}" | awk '{print $2}' | cut -b2-) ;; 2.1.1) skip=$(grep -a ^offset= "${src}" | awk '{print $2}' | cut -b2-); let skip="skip + 1" ;; 2.1.2) skip=$(grep -a ^offset= "${src}" | awk '{print $3}' | head -n 1); let skip="skip + 1" ;; 2.1.3) skip=`grep -a ^offset= "${src}" | awk '{print $3}'`; let skip="skip + 1" ;; 2.1.4 | 2.1.5) skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1); skip=$(head -n ${skip} "${src}" | wc -c); exe="dd" ;; *) eerror "I'm sorry, but I was unable to support the Makeself file."; eerror "The version I detected was '${ver}'."; eerror "Please file a bug about the file ${shrtsrc} at"; eerror "http://bugs.gentoo.org/ so that support can be added."; diefunc "$FUNCNAME" "$LINENO" "$?" "makeself version '${ver}' not supported" ;; esac; debug-print "Detected Makeself version ${ver} ... using ${skip} as offset"; fi; case ${exe} in tail) exe="tail -n +${skip} '${src}'" ;; dd) exe="dd ibs=${skip} skip=1 obs=1024 conv=sync if='${src}'" ;; *) diefunc "$FUNCNAME" "$LINENO" "$?" "makeself cant handle exe '${exe}'" ;; esac; local tmpfile="$(emktemp)"; eval ${exe} 2>/dev/null | head -c 512 >"${tmpfile}"; local filetype="$(file -b "${tmpfile}")"; case ${filetype} in *tar\ archive*) eval ${exe} | tar --no-same-owner -xf - ;; bzip2*) eval ${exe} | bzip2 -dc | tar --no-same-owner -xf - ;; gzip*) eval ${exe} | tar --no-same-owner -xzf - ;; compress*) eval ${exe} | gunzip | tar --no-same-owner -xf - ;; *) eerror "Unknown filetype \"${filetype}\" ?"; false ;; esac; _pipestatus="${PIPESTATUS[*]}"; [[ "${_pipestatus// /}" -eq 0 ]] || diefunc "$FUNCNAME" "$LINENO" "$_pipestatus" "failure unpacking (${filetype}) makeself ${shrtsrc} ('${ver}' +${skip})" } unpack_pdv () { local src=$(find_unpackable_file $1); local sizeoff_t=$2; [[ -z ${src} ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "Could not locate source for '$1'"; [[ -z ${sizeoff_t} ]] && diefunc "$FUNCNAME" "$LINENO" "$?" "No idea what off_t size was used for this pdv :("; local shrtsrc=$(basename "${src}"); echo ">>> Unpacking ${shrtsrc} to ${PWD}"; local metaskip=`tail -c ${sizeoff_t} ${src} | hexdump -e \"%i\"`; local tailskip=`tail -c $((${sizeoff_t}*2)) ${src} | head -c ${sizeoff_t} | hexdump -e \"%i\"`; local metafile="$(emktemp)"; tail -c +$((${metaskip}+1)) ${src} >${metafile}; local datafile="`tail -c +$((${metaskip}+1)) ${src} | strings | head -n 1`"; datafile="`basename ${datafile}`"; local tmpfile="$(emktemp)"; tail -c +$((${tailskip}+1)) ${src} 2>/dev/null | head -c 512 >${tmpfile}; local iscompressed="`file -b ${tmpfile}`"; if [ "${iscompressed:0:8}" == "compress" ]; then iscompressed=1; mv ${tmpfile}{,.Z}; gunzip ${tmpfile}; else iscompressed=0; fi; local istar="`file -b ${tmpfile}`"; if [ "${istar:0:9}" == "POSIX tar" ]; then istar=1; else istar=0; fi; if [ ${iscompressed} -eq 1 ]; then if [ ${istar} -eq 1 ]; then tail -c +$((${tailskip}+1)) ${src} 2>/dev/null | head -c $((${metaskip}-${tailskip})) | tar -xzf -; else tail -c +$((${tailskip}+1)) ${src} 2>/dev/null | head -c $((${metaskip}-${tailskip})) | gzip -dc >${datafile}; fi; else if [ ${istar} -eq 1 ]; then tail -c +$((${tailskip}+1)) ${src} 2>/dev/null | head -c $((${metaskip}-${tailskip})) | tar --no-same-owner -xf -; else tail -c +$((${tailskip}+1)) ${src} 2>/dev/null | head -c $((${metaskip}-${tailskip})) >${datafile}; fi; fi; true } unset_colors () { COLS="25 80"; ENDCOL=; GOOD=; WARN=; BAD=; NORMAL=; HILITE=; BRACKET= } use () { useq ${1} } use_enable () { if [ -z "$1" ]; then echo "!!! use_enable() called without a parameter." 1>&2; echo "!!! use_enable [ [value]]" 1>&2; return 1; fi; local UE_SUFFIX=""; if [ ! -z "${3}" ]; then UE_SUFFIX="=${3}"; fi; local UWORD="$2"; if [ -z "${UWORD}" ]; then UWORD="$1"; fi; if useq $1; then echo "--enable-${UWORD}${UE_SUFFIX}"; else echo "--disable-${UWORD}"; fi; return 0 } use_with () { if [ -z "$1" ]; then echo "!!! use_with() called without a parameter." 1>&2; echo "!!! use_with [ [value]]" 1>&2; return 1; fi; local UW_SUFFIX=""; if [ ! -z "${3}" ]; then UW_SUFFIX="=${3}"; fi; local UWORD="$2"; if [ -z "${UWORD}" ]; then UWORD="$1"; fi; if useq $1; then echo "--with-${UWORD}${UW_SUFFIX}"; else echo "--without-${UWORD}"; fi; return 0 } useq () { local u=$1; local found=0; if [[ ${u:0:1} == "!" ]]; then u=${u:1}; found=1; fi; if ! hasq "${u}" ${IUSE} ${E_IUSE} && ! hasq "${u}" ${PORTAGE_ARCHLIST} selinux; then vecho "QA Notice: USE Flag '${u}' not in IUSE for ${CATEGORY}/${PF}" 1>&2; fi; if hasq ${u} ${USE}; then return ${found}; else return $((!found)); fi } usev () { if useq ${1}; then echo "${1}"; return 0; fi; return 1 } vecho () { quiet_mode || echo "$@" } declare -x ABI="amd64" declare -x ACCEPT_KEYWORDS="amd64" declare -x ACCEPT_LICENSE="" declare -x ARCH="amd64" declare -x ASFLAGS_x86="--32" declare -x AUTOCLEAN="yes" declare -x BUILD_PREFIX="/var/tmp/portage" declare -x CBUILD="x86_64-pc-linux-gnu" declare -x CDEFINE_amd64="__x86_64__" declare -x CDEFINE_default="__unix__" declare -x CDEFINE_x86="__i386__" declare -x CFLAGS="-march=athlon64 -O2 -pipe -fomit-frame-pointer" declare -x CFLAGS_default declare -x CFLAGS_x86="-m32 -L/emul/linux/x86/lib -L/emul/linux/x86/usr/lib" declare -x CHOST="x86_64-pc-linux-gnu" declare -x CHOST_amd64="x86_64-pc-linux-gnu" declare -x CHOST_default="x86_64-pc-linux-gnu" declare -x CHOST_x86="i686-pc-linux-gnu" declare -x CLASSPATH="." declare -x CLEAN_DELAY="5" declare -x CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/X11/xkb /usr/share/config /var/bind" declare -x CONFIG_PROTECT_MASK="/etc/env.d /etc/env.d/java/ /etc/gconf /etc/java-config/vms/ /etc/revdep-rebuild /etc/terminfo" declare -x CTARGET_default="x86_64-pc-linux-gnu" declare -x CVS_RSH="ssh" declare -x CXXFLAGS="-march=athlon64 -O2 -pipe -fomit-frame-pointer" declare -x DEFAULT_ABI="amd64" declare -x DESTTREE="/usr" declare -x DIROPTIONS="-m0755" declare -x DISPLAY=":0.0" declare -x DISTCC_DIR="/var/tmp/.distcc" declare -x DISTDIR="/var/tmp/portage/iproute2-2.6.16.20060323/distdir" declare -x DOCDESTTREE="" declare -x ECLASS="" declare -x ECLASSDIR="/usr/portage/eclass" declare -ix ECLASS_DEPTH="0" declare -x EDITOR="/bin/nano" declare -x ELIBC="glibc" declare -x EMERGE_WARNING_DELAY="10" declare -x EXEDESTTREE="" declare -x EXEOPTIONS="-m0755" declare -x FETCHCOMMAND="/usr/bin/wget -t 5 -T 60 --passive-ftp -P \${DISTDIR} \${URI}" declare -x GCC_SPECS="" declare -x GDK_USE_XFT="1" declare -x GENERATION="2" declare -x GENTOO_MIRRORS="ftp://ftp.gtlib.gatech.edu/pub/gentoo http://www.gtlib.gatech.edu/pub/gentoo ftp://ftp.ucsb.edu/pub/mirrors/linux/gentoo/ http://ftp.ucsb.edu/pub/mirrors/linux/gentoo/ http://mirror.usu.edu/mirrors/gentoo/ ftp://mirror.usu.edu/mirrors/gentoo/ " declare -x G_BROKEN_FILENAMES="1" declare -x G_FILENAME_ENCODING="UTF-8" declare -x HOME="/var/tmp/portage/iproute2-2.6.16.20060323/homedir" declare -x INFOPATH="/usr/share/info:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.16.1/info:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.1/info" declare -x INHERITED="toolchain-funcs multilib eutils portability" declare -x INPUT_DEVICES="keyboard mouse" declare -x INSDESTTREE="" declare -x INSOPTIONS="-m0644" declare -x JAVAC="/etc/java-config-2/current-system-vm/bin/javac" declare -x JAVA_HOME="/etc/java-config-2/current-system-vm" declare -x JDK_HOME="/etc/java-config-2/current-system-vm" declare -x KDEDIRS="/usr" declare -x KERNEL="linux" declare -x KERNEL_ABI="amd64" declare -x KV="2.6.18-gentoo-r2" declare -x KVERS="." declare -x LDFLAGS_default declare -x LDFLAGS_x86="-m elf_i386 -L/emul/linux/x86/lib -L/emul/linux/x86/usr/lib" declare -x LD_PRELOAD="libsandbox.so" declare -x LESS="-R -M --shift 5" declare -x LESSOPEN="|lesspipe.sh %s" declare -x LIBDIR_amd64="lib64" declare -x LIBDIR_default="lib" declare -x LIBDIR_x86="lib32" declare -x LIBOPTIONS="-m0644" declare -x LOGNAME="root" declare -x MAKEOPTS="-j3" declare -x MANPATH="/usr/local/share/man:/usr/share/man:/usr/share/binutils-data/x86_64-pc-linux-gnu/2.16.1/man:/usr/share/gcc-data/x86_64-pc-linux-gnu/4.1.1/man:/opt/blackdown-jdk-1.4.2.03/man:/etc/java-config/system-vm/man/:/usr/qt/3/doc/man" declare -x MOPREFIX="iproute2" declare -x MULTILIB_ABIS="amd64 x86" declare -x MULTILIB_STRICT_DENY="64-bit.*shared object" declare -x MULTILIB_STRICT_DIRS="/lib /usr/lib /usr/kde/*/lib /usr/qt/*/lib /usr/X11R6/lib" declare -x MULTILIB_STRICT_EXEMPT="(perl5|gcc|gcc-lib|binutils|eclipse-3|debug|portage)" declare -x O="/usr/portage/sys-apps/iproute2" declare -x OLDPWD="/var/tmp/portage/iproute2-2.6.16.20060323" declare -x OPENGL_PROFILE="nvidia" declare -x PAGER="/usr/bin/less" declare -x PKGDIR="/usr/portage/packages" declare -x PKGUSE="" declare -x PKG_CONFIG_PATH="/usr/qt/3/lib64/pkgconfig" declare -x PKG_LOGDIR="/var/tmp/portage/iproute2-2.6.16.20060323/temp/logging" declare -x PKG_TMPDIR="/var/tmp/binpkgs" 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_BUILDDIR="/var/tmp/portage/iproute2-2.6.16.20060323" declare -x PORTAGE_CALLER="emerge" declare -x PORTAGE_CONFIGROOT="/" declare -x PORTAGE_DEBUG="0" declare -x PORTAGE_DEPCACHEDIR="/var/cache/edb/dep" declare -x PORTAGE_ELOG_CLASSES="log warn error" declare -x PORTAGE_ELOG_MAILFROM="portage" declare -x PORTAGE_ELOG_MAILSUBJECT="[portage] ebuild log for \${PACKAGE} on \${HOST}" declare -x PORTAGE_ELOG_MAILURI="root" declare -x PORTAGE_GID="250" declare -x PORTAGE_INST_GID="0" declare -x PORTAGE_INST_UID="0" declare -x PORTAGE_MASTER_PID="21134" 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'" declare -x PORTAGE_RSYNC_RETRIES="3" declare -x PORTAGE_WORKDIR_MODE="0700" declare -x PORTDIR="/usr/portage" declare -x PORTDIR_OVERLAY="/usr/local/portage" declare -x PRELINK_PATH="" declare -x PRELINK_PATH_MASK="/usr/lib/gstreamer-0.8" declare -x PROFILE_PATHS="/usr/portage/profiles/base /usr/portage/profiles/default-linux /usr/portage/profiles/default-linux/amd64 /usr/portage/profiles/default-linux/amd64/2006.1 /etc/portage/profile" declare -x PWD="/var/tmp/portage/iproute2-2.6.16.20060323/build-info" declare -x PWORKDIR="/var/tmp/portage/iproute2-2.6.16.20060323/work" declare -x PYTHONPATH="/usr/lib/portage/pym" declare -x QMAKESPEC="linux-g++" declare -x QTDIR="/usr/qt/3" declare -x RESTRICT="" declare -x RESUMECOMMAND="/usr/bin/wget -c -t 5 -T 60 --passive-ftp -P \${DISTDIR} \${URI}" declare -x ROOT="/" declare -x ROOTPATH="/opt/bin:/usr/x86_64-pc-linux-gnu/gcc-bin/4.1.1:/opt/blackdown-jdk-1.4.2.03/bin:/opt/blackdown-jdk-1.4.2.03/jre/bin:/usr/kde/3.5/sbin:/usr/kde/3.5/bin:/usr/qt/3/bin" declare -x RPMDIR="/usr/portage/rpm" declare -x S="/var/tmp/portage/iproute2-2.6.16.20060323/work/iproute2-2.6.16-060323" declare -x SHELL="/bin/bash" declare -x SHLVL="3" declare -x SLOT="0" declare -x STAGE1_USE="nptl nptlonly unicode" declare -x STARTDIR="/usr/local/portage/net-dialup/pptpconfig" declare -x SYMLINK_LIB="yes" declare -x SYNC="rsync://rsync.namerica.gentoo.org/gentoo-portage" declare -x TERM="xterm" declare -x TMP="/var/tmp/portage/iproute2-2.6.16.20060323/temp" declare -x TMPDIR="/var/tmp/portage/iproute2-2.6.16.20060323/temp" declare -x USE="amd64 X a52 aac alsa apache2 audiofile avi bcmath berkdb bitmap-fonts bzip2 calendar cjk clamav cli cracklib crypt ctype cups curl curlwrappers dio directfb dlloader dri dts dvb dvd dvdread elibc_glibc emu-linux-x86 encode exif fbcon ffmpeg flac fortran ftp gd gdbm gif gmp gpm gtk gtk2 hardenedphp hash iconv ieee1394 imagemagick imlib innodb input_devices_keyboard input_devices_mouse ipv6 isdnlog ithreads java javascript jpeg jpeg2k kde kernel_linux lcms ldap libg++ lzo mad matroska mcal mhash mime mjpeg mng mp3 mp4 mpeg mplayer msession mysql mysqli ncurses network nls nptl nptlonly nsplugin nvidia ogg openal opengl osc oss pam pcntl pcre pdf pdo pear perl png posix ppds pppd python qt qt3 qt4 quicktime readline reflection samba sasl sdl seamonkey session simplexml snmp soap sockets spl sqlite ssl svg tcpd theora threads tidy tiff tokenizer transcode truetype truetype-fonts type1-fonts udev unicode usb userland_GNU v4l v4l2 vcd video_cards_fbdev video_cards_nv video_cards_nvidia video_cards_v4l video_cards_vesa vorbis wddx wxwindows x264 xine xml xml2 xorg xpm xv xvid zlib" declare -x USER="root" declare -x USERLAND="GNU" declare -x USE_EXPAND="CROSSCOMPILE_OPTS DVB_CARDS ELIBC FCDSL_CARDS FOO2ZJS_DEVICES FRITZCAPI_CARDS INPUT_DEVICES KERNEL 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" declare -x VIDEO_CARDS="nv nvidia vesa fbdev v4l" declare -x VMHANDLE="blackdown-jdk-1.4.2" declare -x XARGS="xargs -r" declare -x XAUTHORITY="/root/.xauthap1fhv"