diff options
author | Brian Harring <ferringb@gmail.com> | 2006-06-04 01:57:01 -0700 |
---|---|---|
committer | Brian Harring <ferringb@gmail.com> | 2006-06-04 01:57:01 -0700 |
commit | 8d48937f2423ce8a033fc47b0b3031f0d09a877b (patch) | |
tree | a285d7f602b39f6e7150a1472d7224c126bad606 /bin | |
parent | expose find_binary on '*' import (diff) | |
download | pkgcore-8d48937f2423ce8a033fc47b0b3031f0d09a877b.tar.gz pkgcore-8d48937f2423ce8a033fc47b0b3031f0d09a877b.tar.bz2 pkgcore-8d48937f2423ce8a033fc47b0b3031f0d09a877b.zip |
distutils usage via marienz, with a few tweaks from me (install pquery mainly)
Diffstat (limited to 'bin')
61 files changed, 0 insertions, 4842 deletions
diff --git a/bin/Makefile.in b/bin/Makefile.in deleted file mode 100755 index f98bae3c0..000000000 --- a/bin/Makefile.in +++ /dev/null @@ -1,15 +0,0 @@ -PORTAGE_BASEDIR = @PORTAGE_BASE@ -INSTALL = @INSTALL@ -INSTALL_script = @INSTALL_PROGRAM@ -D -o 0 -g portage -m 755 - -all: -install: - $(INSTALL) -d -m 755 -o 0-g portage $(DESTDIR)/$(PORTAGE_BASEDIR)/bin || exit 1 - find . -type f -maxdepth 1 -exec $(INSTALL_script) {} $(DESTDIR)/$(PORTAGE_BASEDIR)/bin/{} \; || exit 1 - rm $(DESTDIR)/$(PORTAGE_BASEDIR)/bin/Makefile* || exit 1 - -distdir: - find . -type f -maxdepth 1 -exec $(INSTALL_script) {} $(distdir)/{} \; -clean: - -.PHONY: distdir install clean diff --git a/bin/ebuild-env/ebuild-daemon.lib b/bin/ebuild-env/ebuild-daemon.lib deleted file mode 100755 index a9da8022d..000000000 --- a/bin/ebuild-env/ebuild-daemon.lib +++ /dev/null @@ -1,141 +0,0 @@ -#!/bin/bash -# ebuild-daemon.lib; daemon lib code. -# Copyright 2005-2006 Brian Harring <ferringb@gmail.com> - -alias die='diefunc "$FUNCNAME" "$LINENO" "$?"' -#alias listen='read -u 3 -t 10' -alias assert='_pipestatus="${PIPESTATUS[*]}"; [[ "${_pipestatus// /}" -eq 0 ]] || diefunc "$FUNCNAME" "$LINENO" "$_pipestatus"' - - -# portageq hijack- redirects all requests back through the pipes and has the python side execute it. -# much faster, also avoids the gpg/sandbox being active issues. -portageq() { - local line e alive - if [ "${EBUILD_PHASE}" == "depend" ]; then - echo "QA Notice: portageq() in global scope for ${CATEGORY}/${PF}" >&2 - fi - speak "portageq $*" - listen line - declare -i e - e=$(( ${line/return_code=} + 0 )) - alive=1 - while [ $alive == 1 ]; do - listen line - if [ "$line" == "stop_text" ]; then - alive=0 - else - echo "portageq: $line" - fi - done - return $e -} - -# ask the python side to display sandbox complaints. -request_sandbox_summary() { - local line - speak "request_sandbox_summary ${SANDBOX_LOG}" - listen line - while [ "$line" != "end_sandbox_summary" ]; do - echo "$line" - listen line - done -} - -# request the global confcache be transferred to $1 for usage. -# flips the sandbox vars as needed. -request_confcache() { - if ! hasq confcache $FEATURES || ! hasq sandbox $FEATURES || hasq confcache $RESTRICT; then - return 1 - fi - local line - speak "request_confcache $1" - listen line s - while [ "${line#request}" != "${line}" ]; do - # var requests for updating the cache's ac_cv_env - # send set, then val - line="$(echo ${line#request})" - if [ "${!line:+set}" == "set" ]; then - speak set - speak "${!line}" - else - speak unset - fi - listen line - done - if [ "${line:0:9}" == "location:" ]; then - cp -v "${line:10}" $1 - elif [ "${line}" == "empty" ]; then - echo ">>> Confcache is empty, starting anew" - fi - if hasq "${line/: *}" location empty; then - echo ">>> Temporary configure cache file is $1" - export PORTAGE_CONFCACHE_STATE=1 - export SANDBOX_DEBUG_LOG="${T}/debug_log" - export SANDBOX_DEBUG=1 - return 0 - fi - return 1 -} - -# notify python side configure calls are finished. -update_confcache() { - local line - if [ "$PORTAGE_CONFCACHE_STATE" != "1" ]; then - return 0 - fi - unset SANDBOX_DEBUG - unset PORTAGE_CONFCACHE_STATE - if ! hasq sandbox $FEATURES; then - echo "not updating confcache, sandbox isn't set in features" >&2 - return 1 - fi - speak "update_confcache $SANDBOX_DEBUG_LOG $1" - unset SANDBOX_DEBUG_LOG - listen line - if [ "$line" == "updated" ]; then - return 0 - fi - return 1 -} - -internal_inherit() { - local line - if [ "$#" != "1" ]; then - die "internal_inherit accepts one arg, requested eclass location. $* is a bit much" - fi - speak "request_inherit $1" - listen line - if [ "$line" == "path" ]; then - listen line; - source "${line}" || die "failed sources inherit: ${line}" - elif [ "$line" == "transfer" ]; then - listen line; - eval "$line" || die "failed evaluating eclass $x on an inherit transfer" - else - speak "failed" - die "unknown inherit command from pythonic side, '$line' for eclass $x" - fi -} - -source_profiles() { - local line - speak request_profiles - listen line - while [ "$line" != end_request ]; do - if [ "$line" == "path" ]; then - listen line; - source "${line}" || die "failed sourcing profile bashrc: ${line}" - elif [ "$line" == "transfer" ]; then - listen line; - eval "$line" || die "failed evaluating profile bashrc: ${line}" - else - speak "failed" - die "unknown profile bashrc transfer mode from pythonic side, '$line'" - fi - speak "next" - listen line - done -} -DONT_EXPORT_FUNCS="${DONT_EXPORT_FUNCS} $(declare -F | cut -s -d ' ' -f 3)" - -: diff --git a/bin/ebuild-env/ebuild-daemon.sh b/bin/ebuild-env/ebuild-daemon.sh deleted file mode 100755 index a982a068c..000000000 --- a/bin/ebuild-env/ebuild-daemon.sh +++ /dev/null @@ -1,252 +0,0 @@ -#!/bin/bash -# ebuild-daemon.sh; core ebuild processor handling code -# Copyright 2004-2006 Brian Harring <ferringb@gmail.com> - -alias die='diefunc "$FUNCNAME" "$LINENO" "$?"' -#alias listen='read -u 3 -t 10' -alias assert='_pipestatus="${PIPESTATUS[*]}"; [[ "${_pipestatus// /}" -eq 0 ]] || diefunc "$FUNCNAME" "$LINENO" "$_pipestatus"' - -# use listen/speak for talking to the running portage instance instead of echo'ing to the fd yourself. -# this allows us to move the open fd's w/out issues down the line. -listen() { - if ! read -u ${EBD_READ_FD} $1; then - echo "coms error, read failed: backing out of daemon." - exit 1 - fi -} - -speak() { - echo "$*" >&${EBD_WRITE_FD} -} -declare -rf speak -declare -r EBD_WRITE_FD EBD_READ_FD -# ensure the other side is still there. Well, this moreso is for the python side to ensure -# loading up the intermediate funcs succeeded. -listen com -if [ "$com" != "dude?" ]; then - echo "serv init coms failed, received $com when expecting 'dude?'" - exit 1 -fi -speak "dude!" -listen PORTAGE_BIN_PATH -[ -z "$PORTAGE_BIN_PATH" ] && die "PORTAGE_BIN_PATH=$PORTAGE_BIN_PATH , bailing" -declare -rx PORTAGE_BIN_PATH - -if ! source "${PORTAGE_BIN_PATH}/ebuild.sh" daemonize; then - speak "failed" - die "failed sourcing ${PORTAGE_BIN_PATH}/ebuild.sh" -fi - -if [ ! -z "$SANDBOX_LOG" ]; then - listen com - if [ "$com" != "sandbox_log?" ]; then - echo "unknown com '$com'" - exit 1 - fi - speak "$SANDBOX_LOG" - declare -rx SANDBOX_LOG="$SANDBOX_LOG" # #="/tmp/sandbox-${P}-${PORTAGE_SANDBOX_PID}.log" - addwrite $SANDBOX_LOG -fi - -alive='1' -re="$(readonly | cut -s -d '=' -f 1 | cut -s -d ' ' -f 3)" -for x in $re; do - if ! hasq $x "$DONT_EXPORT_VARS"; then - DONT_EXPORT_VARS="${DONT_EXPORT_VARS} $x" - fi -done -speak $re -unset x re - - -if ! source "${PORTAGE_BIN_PATH}/ebuild-daemon.lib"; then - speak failed - die "failed source ${PORTAGE_BIN_PATH}/ebuild-daemon.lib" -fi - -DONT_EXPORT_FUNCS="$(declare -F | cut -s -d ' ' -f 3)" -DONT_EXPORT_VARS="${DONT_EXPORT_VARS} alive com PORTAGE_LOGFILE cont" - -# depend's speed up. turn on qa interceptors by default, instead of flipping them on for each depends -# call. -export QA_CONTROLLED_EXTERNALLY="yes" -enable_qa_interceptors - -if ! source "${PORTAGE_BIN_PATH}/ebuild-functions.sh"; then - speak failed - die "failed sourcing ${PORTAGE_LIB}/ebuild-functions.sh" -fi - -export PORTAGE_PRELOADED_ECLASSES='' -unset_colors - - -# XXX this sucks even more then the rest, we're talking loss of chrome on a trailer hitch type suck. -#PATH='/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:${PORTAGE_BIN_PATH}' -while [ "$alive" == "1" ]; do - com='' - listen com - case $com in - process_ebuild*) - # cleanse whitespace. - phases="$(echo ${com#process_ebuild})" - PORTAGE_SANDBOX_PID="$PPID" - # note the (; forks. prevents the initialized ebd env from being polluted by ebuild calls. - ( - if [ "${phases/depend/}" == "$phases" ]; then - disable_qa_interceptors - fi - line='' - cont=0 - - while [ "$cont" == 0 ]; do - line='' - listen line - if [ "$line" == "start_receiving_env" ]; then - while listen line && [ "$line" != "end_receiving_env" ]; do #[ "$line" != "end_receiving_env" ]; do -# if [[ "${line/SUDO_COMMAND}" != "${line}" ]] && -# [[ "${line/export}" == "${line}" ]]; then -# on=1 -# echo "received $line" >&2 -# fi - save_IFS - IFS=$'\0' - eval ${line}; - val=$?; - restore_IFS - if [ $val != "0" ]; then - echo "err, env receiving threw an error for '$line': $?" >&2 -# echo "env_receiving_failed" >&2 - speak "env_receiving_failed" - cont=1 - break - fi - if [ "${on:-unset}" != "unset" ]; then - echo "sudo = ${SUDO_COMMAND}" >&2 - declare | grep -i sudo_command >&@ - echo "disabling" >&2 - unset on - fi - done - if [ "$cont" == "0" ]; then - speak "env_received" - fi - elif [ "${line:0:7}" == "logging" ]; then - PORTAGE_LOGFILE="$(echo ${line#logging})" -# echo "logging to $logfile" >&2 - speak "logging_ack" - elif [ "${line:0:17}" == "set_sandbox_state" ]; then - if [ $((${line:18})) -eq 0 ]; then - export SANDBOX_DISABLED=1 -# echo "disabling sandbox due to '$line'" >&2 - else - export SANDBOX_DISABLED=0 - export SANDBOX_VERBOSE="no" -# echo "enabling sandbox" >&2 - fi - elif [ "${line}" == "start_processing" ]; then - cont=2 - else - echo "received unknown com: $line" >&2 - fi - done - if [ "$cont" != 2 ]; then - exit $cont - else - reset_sandbox - if [ -n "$SANDBOX_LOG" ]; then - addwrite $SANDBOX_LOG - if [ -n "$PORTAGE_LOGFILE" ]; then - addwrite "$PORTAGE_LOGFILE" - fi - fi - if [ -z $RC_NOCOLOR ]; then - set_colors - fi - if ! type -p filter-env &> /dev/null; then - echo "couldn't find filter-env in $PATH" >&2 - die "can't find filter-env!" - fi -# speak "starting ${phases}" - - DONT_EXPORT_FUNCS="${DONT_EXPORT_FUNCS} ${PORTAGE_PRELOADED_ECLASSES}" - for x in $DONT_EXPORT_FUNCS; do - declare -fr $x &> /dev/null - done - for e in $phases; do - if [ -z $PORTAGE_LOGFILE ]; then - execute_phases ${e} - ret=$? - else - # why do it this way rather then the old '[ -f ${T}/.succesfull }'? - # simple. this allows the actual exit code to be used, rather then just stating no .success == 1 || 0 - # note this was - # execute_phases ${e] &> >(umask 0002; tee -i -a $PORTAGE_LOGFILE) - # less then bash v3 however hates it. And I hate less then v3. - # circle of hate you see. - execute_phases ${e} 2>&1 | { - umask 0002 - tee -i -a $PORTAGE_LOGFILE - } - ret=${PIPESTATUS[0]} - fi - # if sandbox log exists, then there were complaints from it. - # tell python to display the errors, then dump relevant vars for debugging. - if [ -n "$SANDBOX_LOG" ] && [ -e "$SANDBOX_LOG" ]; then - ret=1 - echo "sandbox exists- $SANDBOX_LOG" - request_sandbox_summary - echo "SANDBOX_ON:=${SANDBOX_ON:-unset}" >&2 - echo "SANDBOX_DISABLED:=${SANDBOX_DISABLED:-unset}" >&2 - echo "SANDBOX_READ:=${SANDBOX_READ:-unset}" >&2 - echo "SANDBOX_WRITE:=${SANDBOX_WRITE:-unset}" >&2 - echo "SANDBOX_PREDICT:=${SANDBOX_PREDICT:-unset}" >&2 - echo "SANDBOX_DEBUG:=${SANDBOX_DEBUG:-unset}" >&2 - echo "SANDBOX_DEBUG_LOG:=${SANDBOX_DEBUG_LOG:-unset}" >&2 - echo "SANDBOX_LOG:=${SANDBOX_LOG:-unset}" >&2 - echo "SANDBOX_ARMED:=${SANDBOX_ARMED:-unset}" >&2 - fi - if [ "$ret" != "0" ]; then - exit $(($ret)) - fi - done - fi - ) - # post fork. tell python if it succeeded or not. - if [ $? != 0 ]; then - echo "phases failed" - speak "phases failed" - else - speak "phases succeeded" - fi - ;; - shutdown_daemon) - alive="0" - ;; - preload_eclass*) - echo "preloading eclasses into funcs." >&2 - disable_qa_interceptors - success="succeeded" - com="${com#preload_eclass }" - for e in ${com}; do - x="${e##*/}" - x="${x%.eclass}" - echo "preloading eclass $x" >&2 - if ! bash -n "$e"; then - echo "errors detected in '$e'" >&2 - success='failed' - break - fi - y="$( < $e)" - eval "eclass_${x}_inherit() { - $y - }" - done - speak "preload_eclass ${success}" - unset e x y success - enable_qa_interceptors - export PORTAGE_PRELOADED_ECLASSES="$PORTAGE_PRELOADED_ECLASSES ${com}" - ;; - esac -done -exit 0 diff --git a/bin/ebuild-env/ebuild-default-functions.sh b/bin/ebuild-env/ebuild-default-functions.sh deleted file mode 100755 index 5311c9f8c..000000000 --- a/bin/ebuild-env/ebuild-default-functions.sh +++ /dev/null @@ -1,1048 +0,0 @@ -#!/bin/bash -# ebuild-default-functions.sh; default functions for ebuild env that aren't saved- specific to the portage instance. -# Copyright 2005-2006 Brian Harring <ferringb@gmail.com> -# Copyright 2004-2006 Gentoo Foundation - -has_version() -{ - # if there is a predefined portageq call, use it. - # why? Because if we're being called from an ebuild daemon/processor, it can hijack the call, and access the - # running portage instance already, saving at least .5s in load up of portageq. - # time emerge -s mod_php w/out the hijack == 23s - # time emerge -s mod_php w/ the hijack == < 6s - local -i e - [ "${EBUILD_PHASE}" == "depend" ] && echo "QA Notice: has_version() in global scope: ${CATEGORY}/$PF" >&2 - # return shell-true/shell-false if exists. - # Takes single depend-type atoms. - - # XXX: harring; portageq should be in path if there isn't a func. if not, well, tough cookies - portageq 'has_version' "${ROOT}" "$1" - return $? -} - -best_version() -{ - local -i e - # see above - portageq 'best_version' "${ROOT}" "$1" - return $? -} - -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 "" - die - fi -} - -# adds ".keep" files so that dirs aren't auto-cleaned -keepdir() -{ - dodir "$@" - local x - if [ "$1" == "-R" ] || [ "$1" == "-r" ]; then - shift - find "$@" -type d -printf "${D}/%p/.keep\n" | tr "\n" "\0" | $XARGS -0 -n100 touch || die "Failed to recursive create .keep files" - else - for x in "$@"; do - touch "${D}/${x}/.keep" || die "Failed to create .keep in ${D}/${x}" - done - fi -} - -# sandbox support functions -addread() -{ - export SANDBOX_READ="$SANDBOX_READ:$1" -} - -addwrite() -{ - export SANDBOX_WRITE="$SANDBOX_WRITE:$1" -} - -adddeny() -{ - export SANDBOX_DENY="$SANDBOX_DENY:$1" -} - -addpredict() -{ - export SANDBOX_PREDICT="$SANDBOX_PREDICT:$1" -} - -unpack() -{ - local x y myfail tarvars srcdir - if [ "$USERLAND" == "BSD" ]; then - tarvars="" - else - tarvars="--no-same-owner" - fi - - [ -z "$*" ] && die "Nothing passed to the 'unpack' command" - - for x in "$@"; do - echo ">>> Unpacking ${x} to ${PWD}" - myfail="failure unpacking ${x}" - y="${x%.*}" - y="${y##*.}" - if [ "${x:0:2}" == "./" ]; then - srcdir='' - else - srcdir="${DISTDIR}" - fi - - [ ! -s "${srcdir}/${x}" ] && die "$myfail: empty file" - - case "${x##*.}" in - tar) - tar ${tarvars} -xf "${src}${x}" || die "$myfail" - ;; - tgz) - tar ${tarvars} -xzf "${srcdir}${x}" || die "$myfail" - ;; - tbz2) - bzip2 -dc "${srcdir}${x}" | tar ${tarvars} -xf - - assert "$myfail" - ;; - ZIP|zip|jar) - unzip -qo "${srcdir}${x}" || die "$myfail" - ;; - gz|Z|z) - if [ "${y}" == "tar" ]; then - gzip -dc "${srcdir}${x}" | tar ${tarvars} -xf - - assert "$myfail" - else - gzip -dc "${srcdir}${x}" > ${x%.*} || die "$myfail" - fi - ;; - bz2) - if [ "${y}" == "tar" ]; then - bzip2 -dc "${srcdir}${x}" | tar ${tarvars} -xf - - assert "$myfail" - else - bzip2 -dc "${srcdir}${x}" > ${x%.*} || die "$myfail" - fi - ;; - RAR|rar) - unrar x -idq "${srcdir}/${x}" || die "$myfail" - ;; - LHa|LHA|lha|lzh) - lha xqf "${srcdir}/${x}" || die "$myfail" - ;; - *) - echo "unpack ${x}: file format not recognized. Ignoring." - ;; - esac - done -} - -dyn_setup() -{ - MUST_EXPORT_ENV="yes" - if [ "$USERLAND" == "Linux" ]; then - # The next bit is to ease the broken pkg_postrm()'s - # some of the gcc ebuilds have that nuke the new - # /lib/cpp and /usr/bin/cc wrappers ... - - # Make sure we can have it disabled somehow .... - if [ "${DISABLE_GEN_GCC_WRAPPERS}" != "yes" ]; then - # Create /lib/cpp if missing or a symlink - if [ -L /lib/cpp -o ! -e /lib/cpp ]; then - [ -L /lib/cpp ] && rm -f /lib/cpp - gen_wrapper /lib/cpp cpp - fi - # Create /usr/bin/cc if missing for a symlink - if [ -L /usr/bin/cc -o ! -e /usr/bin/cc ]; then - [ -L /usr/bin/cc ] && rm -f /usr/bin/cc - gen_wrapper /usr/bin/cc gcc - fi - fi - fi - pkg_setup -} - -dyn_unpack() -{ - trap "abort_unpack" SIGINT SIGQUIT - local newstuff="no" - MUST_EXPORT_ENV="yes" - if [ -e "${WORKDIR}" ]; then - local x - local checkme - for x in ${AA}; do - echo ">>> Checking ${x}'s mtime..." - if [ "${DISTDIR}/${x}" -nt "${WORKDIR}" ]; then - echo ">>> ${x} has been updated; recreating WORKDIR..." - newstuff="yes" - rm -rf "${WORKDIR}" - break - fi - done - if [ "${EBUILD}" -nt "${WORKDIR}" ]; then - echo ">>> ${EBUILD} has been updated; recreating WORKDIR..." - newstuff="yes" - rm -rf "${WORKDIR}" - fi - fi - - install -m0700 -d "${WORKDIR}" || die "Failed to create dir '${WORKDIR}'" - [ -d "$WORKDIR" ] && cd "${WORKDIR}" - echo ">>> Unpacking source..." - src_unpack - echo ">>> Source unpacked." - trap SIGINT SIGQUIT -} - -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} - #unset signal handler - trap SIGINT SIGQUIT -} - -abort_compile() -{ - abort_handler "src_compile" $1 - exit 1 -} - -abort_unpack() -{ - abort_handler "src_unpack" $1 - exit 1 -} - -abort_package() -{ - abort_handler "dyn_package" $1 - rm -f "${PKGDIR}"/All/${PF}.t* - exit 1 -} - -abort_test() -{ - abort_handler "dyn_test" $1 - exit 1 -} - -abort_install() -{ - abort_handler "src_install" $1 - exit 1 -} - -dyn_compile() -{ - MUST_EXPORT_ENV="yes" - export DESTTREE=/usr - export INSDESTTREE="" - export EXEDESTTREE="" - export DOCDESTTREE="" - export INSOPTIONS="-m0644" - export EXEOPTIONS="-m0755" - export LIBOPTIONS="-m0644" - export DIROPTIONS="-m0755" - export MOPREFIX=${PN} - - trap "abort_compile" SIGINT SIGQUIT - [ "${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 - - [ ! -z "${DISTCC_DIR}" ] && addwrite "${DISTCC_DIR}" - - if [ ! -e "${T}/build-info" ]; then - mkdir "${T}/build-info" - fi - cp "${EBUILD}" "${T}/build-info/" - - if [ -d "${S}" ]; then - cd "${S}" - fi - #our custom version of libtool uses $S and $D to fix - #invalid paths in .la files - export S D - #some packages use an alternative to $S to build in, cause - #our libtool to create problematic .la files - export PWORKDIR="$WORKDIR" - src_compile - #|| abort_compile "fail" - cd "${T}/build-info" - - echo "$ASFLAGS" > ASFLAGS - echo "$CATEGORY" > CATEGORY - echo "$CBUILD" > CBUILD - echo "$CC" > CC - echo "$CDEPEND" > CDEPEND - echo "$CFLAGS" > CFLAGS - echo "$CHOST" > CHOST - echo "$CXX" > CXX - echo "$CXXFLAGS" > CXXFLAGS - echo "$DEPEND" > DEPEND - echo "$EXTRA_ECONF" > EXTRA_ECONF - echo "$FEATURES" > FEATURES - echo "$INHERITED" > INHERITED - echo "$IUSE" > IUSE - echo "$PKGUSE" > PKGUSE - echo "$LDFLAGS" > LDFLAGS - echo "$LIBCFLAGS" > LIBCFLAGS - echo "$LIBCXXFLAGS" > LIBCXXFLAGS - echo "$LICENSE" > LICENSE - echo "$PDEPEND" > PDEPEND - echo "$PF" > PF - echo "$PROVIDE" > PROVIDE - echo "$RDEPEND" > RDEPEND - echo "$RESTRICT" > RESTRICT - echo "$SLOT" > SLOT - echo "$USE" > USE - export_environ "${T}/build-info/environment.bz2" 'bzip2 -c9' - if hasq nostrip $FEATURES $RESTRICT; then - touch DEBUGBUILD - fi - trap SIGINT SIGQUIT -} - - -dyn_test() -{ - trap "abort_test" SIGINT SIGQUIT - - echo ">>> Test phase [enabled]: ${CATEGORY}/${PF}" - MUST_EXPORT_ENV="yes" - if [ -d "${S}" ]; then - cd "${S}" - fi - src_test - trap SIGINT SIGQUIT -} - -stat_perms() -{ - local f - f=$(stat -c '%f' "$1") - f=$(printf "%o" 0x$f) - f=${f:${#f}-4} - echo $f -} - - -dyn_install() -{ - trap "abort_install" SIGINT SIGQUIT - rm -rf "${D}" - mkdir "${D}" - if [ -d "${S}" ]; then - cd "${S}" - fi - echo - echo ">>> Install ${PF} into ${D} category ${CATEGORY}" - #our custom version of libtool uses $S and $D to fix - #invalid paths in .la files - export S D - #some packages uses an alternative to $S to build in, cause - #our libtool to create problematic .la files - export PWORKDIR="$WORKDIR" - src_install - #|| abort_install "fail" - prepall - cd "${D}" - - declare -i UNSAFE=0 - for i in $(find "${D}/" -type f -perm -2002); do - UNSAFE=$(($UNSAFE + 1)) - echo "UNSAFE SetGID: $i" - done - for i in $(find "${D}/" -type f -perm -4002); do - UNSAFE=$(($UNSAFE + 1)) - echo "UNSAFE SetUID: $i" - done - - if type -p scanelf > /dev/null ; then - # Make sure we disallow insecure RUNPATH/RPATH's - # Don't want paths that point to the tree where the package was built - # (older, broken libtools would do this). Also check for null paths - # because the loader will search $PWD when it finds null paths. - f=$(scanelf -qyRF '%r %p' "${D}" | grep -E "(${WORKDIR}|${D}|: |::|^ )") - if [[ -n ${f} ]] ; then - echo -ne '\a\n' - echo "QA Notice: the following files contain insecure RUNPATH's" - echo " Please file a bug about this at http://bugs.gentoo.org/" - echo " For more information on this issue, kindly review:" - echo " http://bugs.gentoo.org/81745" - echo "${f}" - echo -ne '\a\n' - die "Insecure binaries detected" - fi - - # Check for setid binaries but are not built with BIND_NOW - f=$(scanelf -qyRF '%b %p' "${D}") - if [[ -n ${f} ]] ; then - echo -ne '\a\n' - echo "QA Notice: the following files are setXid, dyn linked, and using lazy bindings" - echo " This combination is generally discouraged. Try re-emerging the package:" - echo " LDFLAGS='-Wl,-z,now' emerge ${PN}" - echo "${f}" - echo -ne '\a\n' - [[ ${FEATURES/stricter} != "${FEATURES}" ]] \ - && die "Aborting due to lazy bindings" - sleep 1 - fi - - # TEXTREL's are baaaaaaaad - f=$(scanelf -qyRF '%t %p' "${D}") - if [[ -n ${f} ]] ; then - echo -ne '\a\n' - echo "QA Notice: the following files contain runtime text relocations" - echo " Text relocations require a lot of extra work to be preformed by the" - echo " dynamic linker which will cause serious performance impact on IA-32" - echo " and might not function properly on other architectures hppa for example." - echo " If you are a programmer please take a closer look at this package and" - echo " consider writing a patch which addresses this problem." - echo "${f}" - echo -ne '\a\n' - [[ ${FEATURES/stricter} != "${FEATURES}" ]] \ - && die "Aborting due to textrels" - sleep 1 - fi - - # Check for files with executable stacks - f=$(scanelf -qyRF '%e %p' "${D}") - if [[ -n ${f} ]] ; then - echo -ne '\a\n' - echo "QA Notice: the following files contain executable stacks" - echo " Files with executable stacks will not work properly (or at all!)" - echo " on some architectures/operating systems. A bug should be filed" - echo " at http://bugs.gentoo.org/ to make sure the file is fixed." - echo "${f}" - echo -ne '\a\n' - [[ ${FEATURES/stricter} != "${FEATURES}" ]] \ - && die "Aborting due to +x stack" - sleep 1 - fi - - # Save NEEDED information - scanelf -qyRF '%p %n' "${D}" | sed -e 's:^:/:' > "${T}/build-info/NEEDED" - fi - - if [[ $UNSAFE > 0 ]]; then - die "There are ${UNSAFE} unsafe files. Portage will not install them." - fi - - local file s - - find "${D}/" -user portage -print | while read file; do - ewarn "file $file was installed with user portage!" - s=$(stat_perms "$file") - chown root "$file" - #XXX: Stable does not have the symlink test - [ -h "$file" ] || chmod "$s" "$file" - done - - find "${D}/" -group portage -print | while read file; do - # Too annoying - uncommenting this as it's a regression - #ewarn "file $file was installed with group portage!" - s=$(stat_perms "$file") - if [ "$USERLAND" == "BSD" ]; then - chgrp wheel "$file" - else - chgrp root "$file" - fi - #XXX: Stable does not have the symlink test - [ -h "$file" ] || chmod "$s" "$file" - done - - if hasq multilib-strict ${FEATURES} && [ -x /usr/bin/file -a -x /usr/bin/find -a \ - -n "${MULTILIB_STRICT_DIRS}" -a -n "${MULTILIB_STRICT_DENY}" ]; then - MULTILIB_STRICT_EXEMPT=${MULTILIB_STRICT_EXEMPT:-"(perl5|gcc|gcc-lib)"} - for dir in ${MULTILIB_STRICT_DIRS}; do - [ -d "${D}/${dir}" ] || continue - for file in $(find ${D}/${dir} -type f | egrep -v "^${D}/${dir}/${MULTILIB_STRICT_EXEMPT}"); do - file ${file} | egrep -q "${MULTILIB_STRICT_DENY}" && die "File ${file} matches a file type that is not allowed in ${dir}" - done - done - fi - - echo ">>> Completed installing ${PF} into ${D}" - echo - MUST_EXPORT_ENV="yes" - trap SIGINT SIGQUIT -} - -dyn_postinst() -{ - pkg_postinst -} - -dyn_preinst() -{ - # set IMAGE depending if this is a binary or compile merge - local IMAGE=${D} - [ "${EMERGE_FROM}" == "binary" ] && IMAGE=${PKG_TMPDIR}/${PF}/bin/ - - # Make sure D is where the package expects it - D=${IMAGE} pkg_preinst - - # remove man pages - if hasq noman $FEATURES; then - rm -fR "${IMAGE}"/usr/share/man - fi - - # remove info pages - if hasq noinfo $FEATURES; then - rm -fR "${IMAGE}"/usr/share/info - fi - - # remove docs - if hasq nodoc $FEATURES; then - rm -fR "${IMAGE}"/usr/share/doc - fi - - # hopefully this will someday allow us to get rid of the no* feature flags - # we don't want globbing for initial expansion, but afterwards, we do - #XXX: rewrite this to use a while loop instead. - local shopts=$- - set -o noglob - for no_inst in `echo "${INSTALL_MASK}"` ; do - set +o noglob - einfo "Removing ${no_inst}" - # normal stuff - rm -Rf "${IMAGE}"/${no_inst} &> /dev/null - # we also need to handle globs (*.a, *.h, etc) - find "${IMAGE}" -name ${no_inst} -exec rm -fR {} \; &> /dev/null - done - # set everything back the way we found it - set +o noglob - set -${shopts} - - # remove share dir if unnessesary - if hasq nodoc $FEATURES -o hasq noman $FEATURES -o hasq noinfo $FEATURES; then - rmdir "${IMAGE}"/usr/share &> /dev/null - fi - - # Smart FileSystem Permissions - if hasq sfperms $FEATURES; then - for i in $(find "${IMAGE}"/ -type f -perm -4000); do - ebegin ">>> SetUID: [chmod go-r] $i " - chmod go-r "$i" - eend $? - done - for i in $(find "${IMAGE}"/ -type f -perm -2000); do - ebegin ">>> SetGID: [chmod o-r] $i " - chmod o-r "$i" - eend $? - done - fi - - # total suid control. - if hasq suidctl $FEATURES > /dev/null ; then - sfconf=/etc/portage/suidctl.conf - echo ">>> Preforming suid scan in ${IMAGE}" - for i in $(find "${IMAGE}"/ -type f \( -perm -4000 -o -perm -2000 \) ); do - if [ -s "${sfconf}" ]; then - suid=$(grep ^${i/${IMAGE}/}$ ${sfconf}) - if [ "${suid}" = "${i/${IMAGE}/}" ]; then - echo "- ${i/${IMAGE}/} is an approved suid file" - else - echo ">>> Removing sbit on non registered ${i/${IMAGE}/}" - sleepbeep 6 - chmod ugo-s "${i}" - grep ^#${i/${IMAGE}/}$ ${sfconf} > /dev/null || { - # sandbox prevents us from writing directly - # to files outside of the sandbox, but this - # can easly be bypassed using the addwrite() function - addwrite "${sfconf}" - echo ">>> Appending commented out entry to ${sfconf} for ${PF}" - ls_ret=`ls -ldh "${i}"` - echo "## ${ls_ret%${IMAGE}*}${ls_ret#*${IMAGE}}" >> ${sfconf} - echo "#${i/${IMAGE}/}" >> ${sfconf} - # no delwrite() eh? - # delwrite ${sconf} - } - fi - else - echo "suidctl feature set but you are lacking a ${sfconf}" - fi - done - fi - - # SELinux file labeling (needs to always be last in dyn_preinst) - if hasq selinux $FEATURES || use selinux; then - # only attempt to label if setfiles is executable - # and 'context' is available on selinuxfs. - if [ -f /selinux/context -a -x /usr/sbin/setfiles ]; then - echo ">>> Setting SELinux security labels" - if [ -f ${POLICYDIR}/file_contexts/file_contexts ]; then - cp -f "${POLICYDIR}/file_contexts/file_contexts" "${T}" - else - make -C "${POLICYDIR}" FC=${T}/file_contexts "${T}/file_contexts" - fi - - addwrite /selinux/context - /usr/sbin/setfiles -r "${IMAGE}" "${T}/file_contexts" "${IMAGE}" \ - || die "Failed to set SELinux security labels." - else - # nonfatal, since merging can happen outside a SE kernel - # like during a recovery situation - echo "!!! Unable to set SELinux security labels" - fi - fi - MUST_EXPORT_ENV="yes" - trap SIGINT SIGQUIT -} - - -# debug-print() gets called from many places with verbose status information useful -# for tracking down problems. The output is in $T/eclass-debug.log. -# You can set ECLASS_DEBUG_OUTPUT to redirect the output somewhere else as well. -# The special "on" setting echoes the information, mixing it with the rest of the -# emerge output. -# You can override the setting by exporting a new one from the console, or you can -# set a new default in make.*. Here the default is "" or unset. - -# in the future might use e* from /etc/init.d/functions.sh if i feel like it -debug-print() -{ - if [ "$EBUILD_PHASE" == "depend" ] && [ -z "${PORTAGE_DEBUG}" ]; then - return - fi - # if $T isn't defined, we're in dep calculation mode and - # shouldn't do anything - [ -z "$T" ] && return 0 - - while [ "$1" ]; do - - # extra user-configurable targets - if [ "$ECLASS_DEBUG_OUTPUT" == "on" ]; then - echo "debug: $1" - elif [ -n "$ECLASS_DEBUG_OUTPUT" ]; then - echo "debug: $1" >> $ECLASS_DEBUG_OUTPUT - fi - - # default target - echo "$1" >> "${T}/eclass-debug.log" - # let the portage user own/write to this file - chmod g+w "${T}/eclass-debug.log" &>/dev/null - - shift - done -} - -# The following 2 functions are debug-print() wrappers - -debug-print-function() -{ - str="$1: entering function" - shift - debug-print "$str, parameters: $*" -} - -debug-print-section() -{ - debug-print "now in section $*" -} - - -internal_inherit() -{ - # default, backwards compatible beast. - local location overlay - location="${ECLASSDIR}/${1}.eclass" - - if [ -n "$PORTDIR_OVERLAY" ]; then - local overlay - for overlay in ${PORTDIR_OVERLAY}; do - if [ -e "${overlay}/eclass/${1}.eclass" ]; then - location="${overlay}/eclass/${1}.eclass" - debug-print " eclass exists: ${location}" - fi - done - fi - debug-print "inherit: $1 -> $location" - source "$location" || die "died sourcing $location in inherit()" - return 0 -} - -# Sources all eclasses in parameters -declare -ix ECLASS_DEPTH=0 -inherit() -{ - local SAVED_INHERIT_COUNT=0 INHERITED_ALREADY=0 - - if [[ $ECLASS_DEPTH < 0 ]] && [ "${EBUILD_PHASE}" == "depend" ]; then - echo "QA Notice: ${CATEGORY}/${PF} makes multiple inherit calls: $1" >&2 - SAVED_INHERIT_COUNT=$ECLASS_DEPTH - ECLASS_DEPTH=0 - fi - if hasq $1 $INHERITED && [ "${EBUILD_PHASE}" == "depend" ]; then - #echo "QA notice: $1 is inherited multiple times: ${CATEGORY}/${PF}" >&2 - INHERITED_ALREADY=1 - fi - ECLASS_DEPTH=$(($ECLASS_DEPTH + 1)) - if [[ $ECLASS_DEPTH > 1 ]]; then - debug-print "*** Multiple Inheritence (Level: ${ECLASS_DEPTH})" - fi - - local location olocation - local PECLASS - - local B_IUSE - local B_DEPEND - local B_RDEPEND - local B_CDEPEND - local B_PDEPEND - while [ -n "$1" ]; do - - # PECLASS is used to restore the ECLASS var after recursion. - PECLASS="$ECLASS" - export ECLASS="$1" - - if [ "$EBUILD_PHASE" != "depend" ]; then - if ! hasq $ECLASS $INHERITED; then - echo - echo "QA Notice: ECLASS '$ECLASS' illegal conditional inherit in $CATEGORY/$PF" >&2 - echo - fi - fi - - #We need to back up the value of DEPEND and RDEPEND to B_DEPEND and B_RDEPEND - #(if set).. and then restore them after the inherit call. - - #turn off glob expansion - set -f - - # Retain the old data and restore it later. - unset B_IUSE B_DEPEND B_RDEPEND B_CDEPEND B_PDEPEND - [ "${IUSE-unset}" != "unset" ] && B_IUSE="${IUSE}" - [ "${DEPEND-unset}" != "unset" ] && B_DEPEND="${DEPEND}" - [ "${RDEPEND-unset}" != "unset" ] && B_RDEPEND="${RDEPEND}" - [ "${CDEPEND-unset}" != "unset" ] && B_CDEPEND="${CDEPEND}" - [ "${PDEPEND-unset}" != "unset" ] && B_PDEPEND="${PDEPEND}" - unset IUSE DEPEND RDEPEND CDEPEND PDEPEND - #turn on glob expansion - set +f - if ! internal_inherit "$1"; then - die "failed sourcing $1 in inherit()" - fi - - #turn off glob expansion - set -f - - # If each var has a value, append it to the global variable E_* to - # be applied after everything is finished. New incremental behavior. - [ "${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}" - [ "${CDEPEND-unset}" != "unset" ] && export E_CDEPEND="${E_CDEPEND} ${CDEPEND}" - [ "${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_CDEPEND-unset}" != "unset" ] && CDEPEND="${B_CDEPEND}" - [ "${B_CDEPEND-unset}" != "unset" ] || unset CDEPEND - - [ "${B_PDEPEND-unset}" != "unset" ] && PDEPEND="${B_PDEPEND}" - [ "${B_PDEPEND-unset}" != "unset" ] || unset PDEPEND - - #turn on glob expansion - set +f - - if hasq $1 $INHERITED && [ $INHERITED_ALREADY == 0 ]; then -# -# enable this one eclasses no longer fool with eclass and inherited. -# if [ "${EBUILD_PHASE}" == "depend" ]; then -# echo "QA Notice: ${CATEGORY}/${PF}: eclass $1 is incorrectly setting \$INHERITED." >&2 -# fi - : - else - INHERITED="$INHERITED $ECLASS" - fi - export ECLASS="$PECLASS" - - shift - done - ECLASS_DEPTH=$(($ECLASS_DEPTH - 1)) - if [[ $ECLASS_DEPTH == 0 ]]; then - ECLASS_DEPTH=$(($SAVED_INHERIT_COUNT - 1)) - fi -} - -# Exports stub functions that call the eclass's functions, thereby making them default. -# For example, if ECLASS="base" and you call "EXPORT_FUNCTIONS src_unpack", the following -# code will be eval'd: -# src_unpack() { base_src_unpack; } -EXPORT_FUNCTIONS() -{ - if [ -z "$ECLASS" ]; then - echo "EXPORT_FUNCTIONS without a defined ECLASS" >&2 - exit 1 - fi - while [ "$1" ]; do - debug-print "EXPORT_FUNCTIONS: ${1} -> ${ECLASS}_${1}" - eval "$1() { ${ECLASS}_$1 "\$@" ; }" > /dev/null - shift - done -} - -# adds all parameters to E_DEPEND and E_RDEPEND, which get added to DEPEND -# and RDEPEND after the ebuild has been processed. This is important to -# allow users to use DEPEND="foo" without frying dependencies added by an -# earlier inherit. It also allows RDEPEND to work properly, since a lot -# of ebuilds assume that an unset RDEPEND gets its value from DEPEND. -# Without eclasses, this is true. But with them, the eclass may set -# RDEPEND itself (or at least used to) which would prevent RDEPEND from -# getting its value from DEPEND. This is a side-effect that made eclasses -# have unreliable dependencies. - -newdepend() -{ - debug-print-function newdepend $* - debug-print "newdepend: E_DEPEND=$E_DEPEND E_RDEPEND=$E_RDEPEND" - - while [ -n "$1" ]; do - case $1 in - "/autotools") - do_newdepend DEPEND sys-devel/autoconf sys-devel/automake sys-devel/make - ;; - "/c") - do_newdepend DEPEND sys-devel/gcc virtual/libc - do_newdepend RDEPEND virtual/libc - ;; - *) - do_newdepend DEPEND $1 - ;; - esac - shift - done -} - -newrdepend() -{ - debug-print-function newrdepend $* - do_newdepend RDEPEND $1 -} - -newcdepend() -{ - debug-print-function newcdepend $* - do_newdepend CDEPEND $1 -} - -newpdepend() -{ - debug-print-function newpdepend $* - do_newdepend PDEPEND $1 -} - -do_newdepend() -{ - # This function does a generic change determining whether we're in an - # eclass or not. If we are, we change the E_* variables for deps. - debug-print-function do_newdepend $* - [ -z "$1" ] && die "do_newdepend without arguments" - - # Grab what we're affecting... Figure out if we're affecting eclasses. - [[ ${ECLASS_DEPTH} > 0 ]] && TARGET="E_$1" - [[ ${ECLASS_DEPTH} > 0 ]] || TARGET="$1" - shift # $1 was a variable name. - - while [ -n "$1" ]; do - # This bit of evil takes TARGET and uses it to evaluate down to a - # variable. This is a sneaky way to make this infinately expandable. - # The normal translation of this would look something like this: - # E_DEPEND="${E_DEPEND} $1" :::::: Cool, huh? :) - eval export ${TARGET}=\"\${${TARGET}} \$1\" - shift - done -} - -# this is a function for removing any directory matching a passed in pattern from -# PATH -remove_path_entry() -{ - save_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 - restore_IFS - PATH="${stripped_path}" -} - -QA_INTERCEPTORS="javac java-config python python-config perl grep egrep fgrep sed gcc g++ cc bash awk nawk pkg-config" -enable_qa_interceptors() -{ - - # Turn of extended glob matching so that g++ doesn't get incorrectly matched. - shopt -u extglob - - # QA INTERCEPTORS - local FUNC_SRC BIN BODY BIN_PATH - for BIN in ${QA_INTERCEPTORS}; do - BIN_PATH=$(type -pf ${BIN}) - if [ "$?" != "0" ]; then - BODY="echo \"*** missing command: ${BIN}\" >&2; return 127" - else - BODY="${BIN_PATH} \"\$@\"; return \$?" - fi - FUNC_SRC="function ${BIN}() { - echo -n \"QA Notice: ${BIN} in global scope: \" >&2 - if [ \$ECLASS_DEPTH -gt 0 ]; then - echo \"eclass \${ECLASS}\" >&2 - else - echo \"\${CATEGORY}/\${PF}\" >&2 - fi - ${BODY} - }"; - eval "$FUNC_SRC" || echo "error creating QA interceptor ${BIN}" >&2 - done -} - -disable_qa_interceptors() -{ - for x in $QA_INTERCEPTORS; do - unset -f $x - done -} - -useq() -{ - local u="${1}" - local neg=0 - if [ "${u:0:1}" == "!" ]; then - u="${u:1}" - neg=1 - fi - local x - - # Make sure we have this USE flag in IUSE - if ! hasq "${u}" ${IUSE} ${E_IUSE} && ! hasq "${u}" ${PORTAGE_ARCHLIST} selinux; then - echo "QA Notice: USE Flag '${u}' not in IUSE for ${CATEGORY}/${PF}" >&2 - fi - - for x in ${USE}; do - if [ "${x}" == "${u}" ]; then - if [ ${neg} -eq 1 ]; then - return 1 - else - return 0 - fi - fi - done - if [ ${neg} -eq 1 ]; then - return 0 - else - return 1 - fi -} - -usev() -{ - if useq ${1}; then - echo "${1}" - return 0 - fi - return 1 -} - -# Used to generate the /lib/cpp and /usr/bin/cc wrappers -gen_wrapper() -{ - cat > $1 << END -#!/bin/sh - -$2 "\$@" -END - - chmod 0755 $1 -} - -insopts() -{ - INSOPTIONS="" - for x in $*; do - #if we have a debug build, let's not strip anything - if hasq nostrip $FEATURES $RESTRICT && [ "$x" == "-s" ]; then - continue - else - INSOPTIONS="$INSOPTIONS $x" - fi - done - export INSOPTIONS -} - -diropts() -{ - DIROPTIONS="" - for x in $*; do - DIROPTIONS="${DIROPTIONS} $x" - done - export DIROPTIONS -} - -exeopts() -{ - EXEOPTIONS="" - for x in $*; do - #if we have a debug build, let's not strip anything - if hasq nostrip $FEATURES $RESTRICT && [ "$x" == "-s" ]; then - continue - else - EXEOPTIONS="$EXEOPTIONS $x" - fi - done - export EXEOPTIONS -} - -libopts() -{ - LIBOPTIONS="" - for x in $*; do - #if we have a debug build, let's not strip anything - if hasq nostrip $FEATURES $RESTRICT && [ "$x" == "-s" ]; then - continue - else - LIBOPTIONS="$LIBOPTIONS $x" - fi - done - export LIBOPTIONS -} - -DONT_EXPORT_VARS="${DONT_EXPORT_VARS} ECLASS_DEPTH" -true diff --git a/bin/ebuild-env/ebuild-functions.sh b/bin/ebuild-env/ebuild-functions.sh deleted file mode 100755 index 8dfc02fca..000000000 --- a/bin/ebuild-env/ebuild-functions.sh +++ /dev/null @@ -1,345 +0,0 @@ -#!/bin/bash -# ebuild-functions.sh; ebuild env functions, saved with the ebuild (not specific to the portage version). -# Copyright 2004-2005 Gentoo Foundation - -use() -{ - if useq ${1}; then - return 0 - fi - return 1 -} - -has() -{ - if hasq "$@"; then - return 0 - fi - return 1 -} - -use_with() -{ - if [ -z "$1" ]; then - echo "!!! use_with() called without a parameter." >&2 - echo "!!! use_with <USEFLAG> [<flagname> [value]]" >&2 - return - 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}" - return 0 - else - echo "--without-${UWORD}" - return 1 - fi -} - -use_enable() -{ - if [ -z "$1" ]; then - echo "!!! use_enable() called without a parameter." >&2 - echo "!!! use_enable <USEFLAG> [<flagname> [value]]" >&2 - return - 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}" - return 0 - else - echo "--disable-${UWORD}" - return 1 - fi -} - -econf() -{ - local ret - ECONF_SOURCE="${ECONF_SOURCE:-.}" - if [ -x "${ECONF_SOURCE}/configure" ]; then - if ! hasq autoconfig $RESTRICT; then - if [ -e /usr/share/gnuconfig/ ]; then - local x - for x in $(find ${WORKDIR} -type f '(' -name config.guess -o -name config.sub ')' ); do - echo " * econf: updating ${x/${WORKDIR}\/} with /usr/share/gnuconfig/${x##*/}" - cp -f "/usr/share/gnuconfig/${x##*/}" "${x}" - chmod a+x "${x}" - done - fi - fi - if [ ! -z "${CBUILD}" ]; then - EXTRA_ECONF="--build=${CBUILD} ${EXTRA_ECONF}" - fi - - # if the profile defines a location to install libs to aside from default, pass it on. - # if the ebuild passes in --libdir, they're responsible for the conf_libdir fun. - 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}" - elif [ "${*/--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 - export CONF_PREFIX - [ "${CONF_LIBDIR:0:1}" != "/" ] && CONF_LIBDIR="/${CONF_LIBDIR}" - - CONF_LIBDIR_RESULT="${CONF_PREFIX}${CONF_LIBDIR}" - for X in 1 2 3; do - # The escaping is weird. It will break if you escape the last one. - CONF_LIBDIR_RESULT="${CONF_LIBDIR_RESULT//\/\///}" - done - - EXTRA_ECONF="--libdir=${CONF_LIBDIR_RESULT} ${EXTRA_ECONF}" - fi - local EECONF_CACHE - if request_confcache "${T}/local_cache"; then - EECONF_CACHE="--cache-file=${T}/local_cache" - fi - echo ${ECONF_SOURCE}/configure \ - --prefix=/usr \ - --host=${CHOST} \ - --mandir=/usr/share/man \ - --infodir=/usr/share/info \ - --datadir=/usr/share \ - --sysconfdir=/etc \ - --localstatedir=/var/lib \ - ${EXTRA_ECONF} \ - ${EECONF_CACHE} \ - "$@" - - if ! ${ECONF_SOURCE}/configure \ - --prefix=/usr \ - --host=${CHOST} \ - --mandir=/usr/share/man \ - --infodir=/usr/share/info \ - --datadir=/usr/share \ - --sysconfdir=/etc \ - --localstatedir=/var/lib \ - ${EXTRA_ECONF} \ - ${EECONF_CACHE} \ - "$@" ; then - - if [ -s config.log ]; then - echo - echo "!!! Please attach the config.log to your bug report:" - echo "!!! ${PWD}/config.log" - fi - die "econf failed" - fi - - # store the returned exit code. don't rely on update_confcache returning true. - ret=$? - update_confcache "${T}/local_cache" - return $ret - else - die "no configure script found" - fi -} - -strip_duplicate_slashes () -{ - if [ -n "${1}" ]; then - local removed="${1/\/\///}" - [ "${removed}" != "${removed/\/\///}" ] && removed=$(strip_duplicate_slashes "${removed}") - echo ${removed} - fi -} - -einstall() -{ - # CONF_PREFIX is only set if they didn't pass in libdir above - 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 || die "einstall failed" - else - die "no Makefile found" - fi -} - -pkg_setup() -{ - return -} - -pkg_nofetch() -{ - [ -z "${SRC_URI}" ] && return - - echo "!!! The following are listed in SRC_URI for ${PN}:" - for MYFILE in `echo ${SRC_URI}`; do - echo "!!! $MYFILE" - done -} - -src_unpack() -{ - if [ "${A}" != "" ]; then - unpack ${A} - fi -} - -src_compile() -{ - if [ -x ./configure ]; then - econf || die "econf failed" - fi - if [ -f Makefile ] || [ -f GNUmakefile ] || [ -f makefile ]; then - emake || die "emake failed" - fi -} - -src_test() -{ - addpredict / - if make check -n &> /dev/null; then - echo ">>> Test phase [check]: ${CATEGORY}/${PF}" - if ! make check; then - hasq test $FEATURES && die "Make check failed. See above for details." - hasq test $FEATURES || eerror "Make check failed. See above for details." - fi - elif make test -n &> /dev/null; then - echo ">>> Test phase [test]: ${CATEGORY}/${PF}" - if ! make test; then - hasq test $FEATURES && die "Make test failed. See above for details." - hasq test $FEATURES || eerror "Make test failed. See above for details." - fi - else - echo ">>> Test phase [none]: ${CATEGORY}/${PF}" - fi - SANDBOX_PREDICT="${SANDBOX_PREDICT%:/}" -} - -src_install() -{ - return -} - -pkg_preinst() -{ - return -} - -pkg_postinst() -{ - return -} - -pkg_prerm() -{ - return -} - -pkg_postrm() -{ - return -} - -into() -{ - if [ $1 == "/" ]; then - export DESTTREE="" - else - export DESTTREE=$1 - if [ ! -d "${D}${DESTTREE}" ]; then - install -d "${D}${DESTTREE}" - fi - fi -} - -insinto() -{ - if [ "$1" == "/" ]; then - export INSDESTTREE="" - else - export INSDESTTREE=$1 - if [ ! -d "${D}${INSDESTTREE}" ]; then - install -d "${D}${INSDESTTREE}" - fi - fi -} - -exeinto() -{ - if [ "$1" == "/" ]; then - export EXEDESTTREE="" - else - export EXEDESTTREE="$1" - if [ ! -d "${D}${EXEDESTTREE}" ]; then - install -d "${D}${EXEDESTTREE}" - fi - fi -} - -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 -} - -true diff --git a/bin/ebuild-env/ebuild.sh b/bin/ebuild-env/ebuild.sh deleted file mode 100755 index 7c99ac32f..000000000 --- a/bin/ebuild-env/ebuild.sh +++ /dev/null @@ -1,702 +0,0 @@ -#!/bin/bash -# ebuild.sh; ebuild phase processing, env handling -# Copyright 2005-2006 Brian Harring <ferringb@gmail.com> -# Copyright 2004-2005 Gentoo Foundation - -# general phase execution path- -# execute_phases is called, which sets EBUILD_PHASE, and then depending on the phase, -# loads or initializes. Env is init'd for non src based stages if the env isn't found- otherwise -# it loads the environ via load_environ call. In cases where env isn't found for phases setup -> merge, -# it bails (theres no way the env should be missing- exemption is setup phase). -# -# for env filtering for restoration and reloading, note the updates to DONT_EXPORT_(VARS|FUNCS). -# those vars are basically used to track what shouldn't be saved/restored. Whitespace seperated, -# those vars can support posix (think egrep) regex. They should hold all vars/funcs that are internal -# ebuild.sh vars. Basically, filter all vars/funcs that are specific to ebuild.sh, not the ebuild. -# -# after loading the env, user defined pre hooks are executed, dyn_${EBUILD_PHASE} is executed, -# and the post hooks are executed. If the env needs to be flushed to disk, MUST_EXPORT_ENV is set to -# "yes", and execute_phases will dump it to ${T}/environment. -# -# few notes on general env stuff- if it's not ebuild specific or a user option, it's typically marked -# readonly. This limits users, but also helps to ensure that reloaded envs from older portages don't -# overwrite an internal ebd.sh function that has since changed. -ORIG_VARS=`declare | egrep '^[^[:space:]{}()]+=' | cut -s -d '=' -f 1` -ORIG_FUNCS=`declare -F | cut -s -d ' ' -f 3` -DONT_EXPORT_FUNCS='portageq speak' -DONT_EXPORT_VARS="ORIG_VARS GROUPS ORIG_FUNCS FUNCNAME DAEMONIZED CCACHE.* DISTCC.* AUTOCLEAN CLEAN_DELAY SYNC -\(TMP\|\)DIR FEATURES CONFIG_PROTECT.* P\?WORKDIR \(FETCH\|RESUME\) COMMAND RSYNC_.* GENTOO_MIRRORS -\(DIST\|FILES\|RPM\|ECLASS\)DIR HOME MUST_EXPORT_ENV QA_CONTROLLED_EXTERNALLY COLORTERM COLS ROWS HOSTNAME -myarg SANDBOX_.* BASH.* EUID PPID SHELLOPTS UID ACCEPT_\(KEYWORDS\|LICENSE\) BUILD\(_PREFIX\|DIR\) T DIRSTACK -DISPLAY \(EBUILD\)\?_PHASE PORTAGE_.* RC_.* SUDO_.* IFS PATH LD_PRELOAD ret line phases D EMERGE_FROM -PORT\(_LOGDIR\|DIR\(_OVERLAY\)\?\) ROOT TERM _ done e ENDCOLS PROFILE_.* BRACKET BAD WARN GOOD NORMAL EBUILD ECLASS LINENO -HILITE IMAGE TMP" -# flip this on to enable extra noisy output for debugging. -#DEBUGGING="yes" - -# XXX: required for migration from .51 to this. -if [ -z "$PORTAGE_BIN_PATH" ]; then - declare -rx PORTAGE_BIN_PATH="/usr/lib/portage/bin" -fi - -# knock the sandbox vars back to the defaults. -reset_sandbox() { - export SANDBOX_ON="1" - export SANDBOX_PREDICT="${SANDBOX_PREDICT:+${SANDBOX_PREDICT}:}/proc/self/maps:/dev/console:/usr/lib/portage/pym:/dev/random" - export SANDBOX_WRITE="${SANDBOX_WRITE:+${SANDBOX_WRITE}:}/dev/shm" - export SANDBOX_READ="${SANDBOX_READ:+${SANDBOX_READ}:}/dev/shm" - local s - for x in CCACHE_DIR DISTCC_DIR D WORKDIR T; do - if [ -n "${!x}" ]; then - addread "${!x}" - addwrite "${!x}" - fi - done -} - -# Prevent aliases from causing portage to act inappropriately. -# Make sure it's before everything so we don't mess aliases that follow. -unalias -a - -# We need this next line for "die" and "assert". It expands -# It _must_ preceed all the calls to die and assert. -shopt -s expand_aliases - -# Unset some variables that break things. -unset GZIP BZIP BZIP2 CDPATH GREP_OPTIONS GREP_COLOR GLOB_IGNORE - -alias die='diefunc "$FUNCNAME" "$LINENO" "$?"' -alias assert='_pipestatus="${PIPESTATUS[*]}"; [[ "${_pipestatus// /}" -eq 0 ]] || diefunc "$FUNCNAME" "$LINENO" "$_pipestatus"' -alias save_IFS='[ "${IFS:-unset}" != "unset" ] && portage_old_IFS="${IFS}"' -alias restore_IFS='if [ "${portage_old_IFS:-unset}" != "unset" ]; then IFS="${portage_old_IFS}"; unset portage_old_IFS; else unset IFS; fi' - -diefunc() { - set +x - local funcname="$1" lineno="$2" exitcode="$3" - shift 3 - echo >&2 - echo "!!! ERROR: $CATEGORY/$PF failed." >&2 - dump_trace 2 >&2 - echo "!!! ${*:-(no error message)}" >&2 - echo "!!! If you need support, post the topmost build error, NOT this status message." >&2 - if [ "${EBUILD_PHASE/depend}" == "${EBUILD_PHASE}" ]; then - for x in ${EBUILD_DEATH_HOOKS}; do - ${x} ${1} ${2} ${3} "${@}" >&2 1>&2 - done - fi - echo >&2 - exit 1 -} - - -shopt -s extdebug &> /dev/null - -# usage- first arg is the number of funcs on the stack to ignore. -# defaults to 1 (ignoring dump_trace) -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]} - # Display function arguments - args= - if [[ -n "${BASH_ARGV[@]}" ]]; then - for (( j = 0 ; 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 -} - -killparent() { - trap INT - kill ${PORTAGE_MASTER_PID} -} - -hasq() { - local x - - local me=$1 - shift - - # All the TTY checks really only help out depend. Which is nice. - # Logging kills all this anyway. Everything becomes a pipe. --NJ - for x in "$@"; do - if [ "${x}" == "${me}" ]; then - return 0 - fi - done - return 1 -} - -hasv() { - if hasq "$@"; then - echo "${1}" - return 0 - fi - return 1 -} - -#if no perms are specified, dirs/files will have decent defaults -#(not secretive, but not stupid) -umask 022 - -# the sandbox is disabled by default except when overridden in the relevant stages -export SANDBOX_ON="0" - -gen_func_filter() { - if [ "$#" == "1" ]; then - echo -n "$1" - return - fi - echo -n "\($1" - shift - while [ -n "$1" ]; do - # expand .* to a sane range - echo -n "\|${1//.*/[A-Za-z0-9_-+./]*}" - shift - done - echo -n "\)" -} - -gen_var_filter() { - if [ "$#" == 1 ]; then - echo -n "$1" - return - fi - echo -n "\($1" - shift - while [ -n "$1" ]; do - # expand .* to a sane range - echo -n "\|${1//.*/[A-Za-z0-9_+]*}" - shift - done - echo -n "\)" -} - -# func for beeping and delaying a defined period of time. -sleepbeep() { - if [ ! "$#" -lt 3 ] || [ ! "$#" -gt 0 ]; then - echo "sleepbeep requires one arg- number of beeps" - echo "additionally, can supply a 2nd arg- interval between beeps (defaults to 0.25s" - die "invalid call to sleepbeep" - fi - local count=$(($1)) - local interval="${2:-0.25}" - while [ $count -gt 0 ]; do - echo -en "\a"; - sleep $interval &> /dev/null - count=$(($count - 1)) - done - return 0 -} - -# selectively saves the environ- specifically removes things that have been marked to not be exported. -# dump the environ to stdout. -dump_environ() { - # scope it so we can pass the output through a sed correction for newlines. - local x y; - #env dump, if it doesn't match a var pattern, stop processing, else print only if - #it doesn't match one of the filter lists. - # vars, then funcs. - declare | sed -n "/[a-zA-Z0-9_]\+=/! { q; }; /^$(gen_var_filter ${DONT_EXPORT_VARS} f x)=/! p;" - fails= - for x in $(declare -F | sed -n "s/^declare -f[^ ]* \+\([^ ]\+\) *\$/\1/; /^$(gen_func_filter ${DONT_EXPORT_FUNCS})$/! p;"); do - y=$(declare -f "$x" 2> /dev/null) - if [[ $? != 0 ]]; then - # older bash that lacks declare -f x-y validity check fix. - fails="$fails $x" - else - echo "$y" - fi - done - if [ -n "$fails" ]; then - declare | filter-env -F -f "${fails// /,}" -v '.*' | sed -e '/^[[:space:]]*$/d' - fi - unset fails - if ! hasq "--no-attributes" "$@"; then - echo $'reinstate_loaded_env_attributes ()\n{' -# echo "echo starting reinstate \${EBUILD_PHASE}>&2;" - for y in export 'declare -i' readonly; do - x=$(${y} | sed -n "s:^declare \(-[^ ]\+ \)*\([A-Za-z0-9_+]\+\)\(=.*$\)\?$:\2:; /^$(gen_var_filter ${DONT_EXPORT_VARS} x y)$/! p;") - [ -n "$x" ] && echo " ${y} $(echo $x);" -# echo "echo dump- $y $(echo $x) >&2;" -# echo "echo dump- $y original was $(echo $(${y})) >&2" - done - - # if it's just declare -f some_func, filter it, else drop it if it's one of the filtered funcs - declare -F | sed -n "/^declare -[^ ]\( \|[^ ]? $(gen_func_filter ${DONT_EXPORT_FUNCS})$\)\?/d; s/^/ /;s/;*$/;/p;" - - shopt -p | sed -e 's:^: :; s/;*$/;/;' - echo "}" - fi - -# debug-print "dumped" - if [ -n "${DEBUGGING}" ]; then - echo "#dumping debug info" - echo "#var filter..." - echo "#$(gen_var_filter ${DONT_EXPORT_VARS} f x | sort)" - echo "#" - echo "#funcs" - declare -F | sed -e 's:^:# :' - echo "#" - echo "#func filter..." - echo "#$(gen_func_filter ${DONT_EXPORT_FUNCS} | sort)" - echo "#DONT_EXPORT_VARS follow" - for x in `echo $DONT_EXPORT_VARS | sort`; do - echo "# $x"; - done - echo "" - echo "#DONT_EXPORT_FUNCS follow" - for x in `echo $DONT_EXPORT_FUNCS | sort`; do - echo "# $x"; - done - fi -} - -# dump environ to $1, optionally piping it through $2 and redirecting $2's output to $1. -export_environ() { - local temp_umask - if [ "${1:-unset}" == "unset" ]; then - die "export_environ requires at least one arguement" - fi - - #the spaces on both sides are important- otherwise, the later ${DONT_EXPORT_VARS/ temp_umask /} won't match. - #we use spaces on both sides, to ensure we don't remove part of a variable w/ the same name- - # ex: temp_umask_for_some_app == _for_some_app. - #Do it with spaces on both sides. - - DONT_EXPORT_VARS="${DONT_EXPORT_VARS} temp_umask " - temp_umask=`umask` - umask 0002 - - debug-print "exporting env for ${EBUILD_PHASE} to $1, using optional post-processor '${2:-none}'" - - if [ "${2:-unset}" == "unset" ]; then - dump_environ > "$1" - else - dump_environ | $2 > "$1" - fi - chown portage:portage "$1" &>/dev/null - chmod 0664 "$1" &>/dev/null - - DONT_EXPORT_VARS="${DONT_EXPORT_VARS/ temp_umask /}" - - umask $temp_umask - debug-print "exported." -} - -# reload a saved env, applying usual filters to the env prior to eval'ing it. -load_environ() { - local src e ret - # localize these so the reload doesn't have the ability to change them - local DONT_EXPORT_VARS="${DONT_EXPORT_VARS} src e ret" - local DONT_EXPORT_FUNCS="${DONT_EXPORT_FUNCS} load_file declare" - local SANDBOX_STATE=$SANDBOX_ON - local EBUILD_PHASE=$EBUILD_PHASE - local reload_failure=0 - SANDBOX_ON=0 - - SANDBOX_READ="/bin:${SANDBOX_READ}:/dev/urandom:/dev/random:$PORTAGE_BIN_PATH" - SANDBOX_ON=$SANDBOX_STATE - - if [ -n "$DEBUGGING" ]; then - echo "loading env for $EBUILD_PHASE" >&2 - fi - - if [ -z "$1" ]; then - die "load_environ called with no args, need args" - fi - src="$1" - [ -n "$DEBUGGING" ] && echo "loading environment from $src" >&2 - - # XXX: note all of the *very careful* handling of bash env dumps through this code, and the fact - # it took 4 months to get it right. There's a reason you can't just pipe the $(export) to a file. - # They were implemented wrong, as I stated when the export kludge was added. - # so we're just dropping the attributes. .51-r4 should carry a fixed version, .51 -> .51-r3 - # aren't worth the trouble. Drop all inline declare's that would be executed. - # potentially handle this via filter-env? - # ~harring - load_file() { - if [ "${src%bz2}" != "${src}" ]; then - bzcat "${src}" - else - cat "${src}" - fi - } - if [ -f "$src" ]; then - # double exec. -# #2<>>(grep -v 'readonly' >&2)"; -# ; } 2<>>(grep -v 'readonly' >&2)"; - - eval "$( - unset DEBUGGING; - function declare() { - : - }; - shopt -s execfail; - eval "$(load_file "$src")" - shopt -u execfail; - unset -f declare load_file; - # leave the existing reinstate attribs in place - dump_environ --no-attributes; - )" - ret=$? - else - echo "ebuild=${EBUILD}, phase $EBUILD_PHASE" >&2 - ret=1 - fi - unset -f load_file &> /dev/null; - return $(( $ret )) -} - -# walk the cascaded profile src'ing it's various bashrcs. -# overriden by daemon normally. -source_profiles() { - local dir - save_IFS - # XXX: Given the following unset, is this set needed? - IFS=$'\n' - for dir in ${PROFILE_PATHS}; do - # Must unset it so that it doesn't mess up assumptions in the RCs. - unset IFS - if [ -f "${dir}/profile.bashrc" ]; then - source "${dir}/profile.bashrc" - fi - done - restore_IFS - if [ -f "$PORTAGE_BASHRC" ]; then - source "$PORTAGE_BASHRC" - fi -} - -# do all profile, bashrc's, and ebuild sourcing. Should only be called in setup phase, unless the -# env is *completely* missing, as it is occasionally for ebuilds during prerm/postrm. -init_environ() { -# echo "initializating environment" >&2 - OCC="$CC" - OCXX="$CXX" - - - # XXX this too, sucks. -# export PATH="/sbin:/usr/sbin:/usr/lib/portage/bin:/bin:/usr/bin" - if [ "${EBUILD_PHASE}" == "setup" ]; then - #we specifically save the env so it's not stomped on by sourcing. - #bug 51552 - dump_environ --no-attributes > "${T}/.temp_env" - - if [ "$USERLAND" == "GNU" ]; then - local PORTAGE_SHIFTED_PATH="$PATH" - source /etc/profile.env &>/dev/null - PATH="${PORTAGE_SHIFTED_PATH:+${PORTAGE_SHIFTED_PATH}}${PATH:+:${PATH}}" - fi - #shift path. I don't care about 51552, I'm not using the env's supplied path, alright? :) - - #restore the saved env vars. - if ! load_environ "${T}/.temp_env"; then - #this shouldn't happen. - die "failed to load ${T}/.tmp_env- fs is readonly?" - fi - - rm "${T}/.temp_env" - source_profiles - fi - - if [ "${EBUILD_PHASE}" != "depend" ]; then - [ ! -z "$OCC" ] && export CC="$OCC" - [ ! -z "$OCXX" ] && export CXX="$OCXX" - - fi - - # if daemonized, it's already loaded these funcs. - if [ "$DAEMONIZED" != "yes" ]; then - source "${PORTAGE_BIN_PATH}/ebuild-functions.sh" || die "failed sourcing ebuild-functions.sh" - fi - SANDBOX_ON="1" - export S=${WORKDIR}/${P} - - # Expand KEYWORDS - # We need to turn off pathname expansion for -* in KEYWORDS and - # we need to escape ~ to avoid tilde expansion (damn bash) :) - set -f - KEYWORDS="$(echo ${KEYWORDS//~/\\~})" - set +f - - unset IUSE DEPEND RDEPEND CDEPEND PDEPEND - unset E_IUSE E_DEPEND E_RDEPEND E_CDEPEND E_PDEPEND - - if [ ! -f "${EBUILD}" ]; then - echo "bailing, ebuild not found at '$EBUILD'" - die "EBUILD=${EBUILD}; problem is, it doesn't exist. bye." >&2 - fi - -# eval "$(cat "${EBUILD}"; echo ; echo 'true')" || die "error sourcing ebuild" - source "${EBUILD}" - if [ "${EBUILD_PHASE}" != "depend" ]; then - RESTRICT="${PORTAGE_RESTRICT}" - unset PORTAGE_RESTRICT - fi - - [ -z "${ERRORMSG}" ] || die "${ERRORMSG}" - - hasq nostrip ${RESTRICT} && export DEBUGBUILD=1 - - #a reasonable default for $S - if [ "$S" = "" ]; then - export S=${WORKDIR}/${P} - fi - - #some users have $TMP/$TMPDIR to a custom dir in their home ... - #this will cause sandbox errors with some ./configure - #scripts, so set it to $T. - export TMP="${T}" - export TMPDIR="${T}" - - # Note: this next line is not the same as export RDEPEND=${RDEPEND:-${DEPEND}} - # That will test for unset *or* NULL (""). We want just to set for unset... - - #turn off glob expansion from here on in to prevent *'s and ? in the DEPEND - #syntax from getting expanded :) Fixes bug #1473 -# set -f - if [ "${RDEPEND-unset}" == "unset" ]; then - export RDEPEND="${DEPEND}" - debug-print "RDEPEND: not set... Setting to: ${DEPEND}" - fi - - #add in dependency info from eclasses - IUSE="$IUSE $E_IUSE" - DEPEND="${DEPEND} ${E_DEPEND}" - RDEPEND="$RDEPEND $E_RDEPEND" - CDEPEND="$CDEPEND $E_CDEPEND" - PDEPEND="$PDEPEND $E_PDEPEND" - - unset E_IUSE E_DEPEND E_RDEPEND E_CDEPEND E_PDEPEND -# set +f - -# declare -r DEPEND RDEPEND SLOT SRC_URI RESTRICT HOMEPAGE LICENSE DESCRIPTION -# declare -r KEYWORDS INHERITED IUSE CDEPEND PDEPEND PROVIDE -# echo "DONT_EXPORT_FUNCS=$DONT_EXPORT_FUNCS" >&2 -} - -# short version. think these should be sourced via at the daemons choice, rather then defacto. -source "${PORTAGE_BIN_PATH}/ebuild-default-functions.sh" || die "failed sourcing ebuild-default-functions.sh" -source "${PORTAGE_BIN_PATH}/isolated-functions.sh" || die "failed sourcing stripped down functions.sh" - -# general func to call for phase execution. this handles necessary env loading/dumping, and executing pre/post/dyn -# calls. -execute_phases() { - local ret - for myarg in $*; do - EBUILD_PHASE="$myarg" - MUST_EXPORT_ENV="no" - case $EBUILD_PHASE in - nofetch) - init_environ - pkg_nofetch - ;; - prerm|postrm|preinst|postinst|config) - export SANDBOX_ON="0" - - if ! load_environ "${PORT_ENV_FILE}"; then - #hokay. this sucks. - ewarn - ewarn "failed to load env" - ewarn "this installed pkg may not behave correctly" - ewarn - sleepbeep 10 - fi - - if type reinstate_loaded_env_attributes &> /dev/null; then - reinstate_loaded_env_attributes - unset -f reinstate_loaded_env_attributes - fi - [ "$PORTAGE_DEBUG" == "1" ] && set -x - type -p pre_pkg_${EBUILD_PHASE} &> /dev/null && pre_pkg_${EBUILD_PHASE} - if type -p dyn_${EBUILD_PHASE}; then - dyn_${EBUILD_PHASE} - else - pkg_${EBUILD_PHASE} - fi - ret=0 - type -p post_pkg_${EBUILD_PHASE} &> /dev/null && post_pkg_${EBUILD_PHASE} - [ "$PORTAGE_DEBUG" == "1" ] && set +x - ;; - clean) - einfo "clean phase is now handled in the python side of portage." - einfo "ebuild-daemon calls it correctly, upgrading from vanilla portage to ebd" - einfo "always triggers this though. Please ignore it." - ;; - unpack|compile|test|install) - if [ "${SANDBOX_DISABLED="0"}" == "0" ]; then - export SANDBOX_ON="1" - else - export SANDBOX_ON="0" - fi - - if ! load_environ ${T}/environment; then - ewarn - ewarn "failed to load env. This is bad, bailing." - die "unable to load saved env for phase $EBUILD_PHASE, unwilling to continue" - fi - if type reinstate_loaded_env_attributes &> /dev/null; then -# echo "reinstating attribs" >&2 - reinstate_loaded_env_attributes - unset -f reinstate_loaded_env_attributes - fi - [ "$PORTAGE_DEBUG" == "1" ] && set -x - type -p pre_src_${EBUILD_PHASE} &> /dev/null && pre_src_${EBUILD_PHASE} - dyn_${EBUILD_PHASE} - ret=0 - type -p post_src_${EBUILD_PHASE} &> /dev/null && post_src_${EBUILD_PHASE} - [ "$PORTAGE_DEBUG" == "1" ] && set +x - export SANDBOX_ON="0" - ;; - setup) - #pkg_setup needs to be out of the sandbox for tmp file creation; - #for example, awking and piping a file in /tmp requires a temp file to be created - #in /etc. If pkg_setup is in the sandbox, both our lilo and apache ebuilds break. - - export SANDBOX_ON="0" - - [ ! -z "${DISTCC_LOG}" ] && addwrite "$(dirname ${DISTCC_LOG})" - - local x - # if they aren't set, then holy hell ensues. deal. - - [ -z "${CCACHE_SIZE}" ] && export CCACHE_SIZE="500M" - ccache -M ${CCACHE_SIZE} &> /dev/null - init_environ - MUST_EXPORT_ENV="yes" - - [ "$PORTAGE_DEBUG" == "1" ] && set -x - type -p pre_pkg_${EBUILD_PHASE} &> /dev/null && pre_pkg_${EBUILD_PHASE} - dyn_${EBUILD_PHASE} - ret=0; - type -p post_pkg_${EBUILD_PHASE} &> /dev/null && post_pkg_${EBUILD_PHASE} - [ "$PORTAGE_DEBUG" == "1" ] && set +x - - ;; - depend) - SANDBOX_ON="1" - MUST_EXPORT_ENV="no" - - trap 'killparent' INT - if [ -z "$QA_CONTROLLED_EXTERNALLY" ]; then - enable_qa_interceptors - fi - - init_environ - - if [ -z "$QA_CONTROLLED_EXTERNALLY" ]; then - disable_qa_interceptors - fi - trap - INT - - set -f - [ "${DEPEND:-unset}" != "unset" ] && speak "key DEPEND=$(echo $DEPEND)" - [ "${RDEPEND:-unset}" != "unset" ] && speak "key RDEPEND=$(echo $RDEPEND)" - [ "$SLOT:-unset}" != "unset" ] && speak "key SLOT=$(echo $SLOT)" - [ "$SRC_URI:-unset}" != "unset" ] && speak "key SRC_URI=$(echo $SRC_URI)" - [ "$RESTRICT:-unset}" != "unset" ] && speak "key RESTRICT=$(echo $RESTRICT)" - [ "$HOMEPAGE:-unset}" != "unset" ] && speak "key HOMEPAGE=$(echo $HOMEPAGE)" - [ "$LICENSE:-unset}" != "unset" ] && speak "key LICENSE=$(echo $LICENSE)" - [ "$DESCRIPTION:-unset}" != "unset" ] && speak "key DESCRIPTION=$(echo $DESCRIPTION)" - [ "$KEYWORDS:-unset}" != "unset" ] && speak "key KEYWORDS=$(echo $KEYWORDS)" - [ "$INHERITED:-unset}" != "unset" ] && speak "key INHERITED=$(echo $INHERITED)" - [ "$IUSE:-unset}" != "unset" ] && speak "key IUSE=$(echo $IUSE)" - [ "$CDEPEND:-unset}" != "unset" ] && speak "key CDEPEND=$(echo $CDEPEND)" - [ "$PDEPEND:-unset}" != "unset" ] && speak "key PDEPEND=$(echo $PDEPEND)" - [ "$PROVIDE:-unset}" != "unset" ] && speak "key PROVIDE=$(echo $PROVIDE)" - [ "$EAPI:-unset}" != "unset" ] && speak "key EAPI=$(echo $EAPI)" - set +f - ;; - *) - export SANDBOX_ON="1" - echo "Please specify a valid command: $EBUILD_PHASE isn't valid." - echo - dyn_help - exit 1 - ;; - esac - - if [ "${MUST_EXPORT_ENV}" == "yes" ]; then - export_environ "${PORT_ENV_FILE:-${T}/environment}" - MUST_EXPORT_ENV="no" - fi - done - return ${ret:-0} -} - -#echo, everything has been sourced. now level the read-only's. -if [ "$*" != "daemonize" ]; then - for x in ${DONT_EXPORT_FUNCS}; do - declare -fr "$x" - done - unset x -fi - -f="$(declare | { - read l; - while [ "${l% \(\)}" == "$l" ]; do - echo "${l/=*}"; - read l; - done; - unset l - })" - -#update the don't export filters. -if [ -z "${ORIG_VARS}" ]; then - DONT_EXPORT_VARS="${DONT_EXPORT_VARS} ${f}" -else - DONT_EXPORT_VARS="${DONT_EXPORT_VARS} $(echo "${f}" | egrep -v "^$(gen_var_filter ${ORIG_VARS})\$")" -fi -unset f - -# I see no differance here... -if [ -z "${ORIG_FUNCS}" ]; then - DONT_EXPORT_FUNCS="${DONT_EXPORT_FUNCS} $(declare -F | cut -s -d ' ' -f 3)" -else - DONT_EXPORT_FUNCS="${DONT_EXPORT_FUNCS} $(declare -F | cut -s -d ' ' -f 3 )" -fi -set +f - -export XARGS -if [ "$(id -nu)" == "portage" ] ; then - export USER=portage -fi -set +H -h -# if we're being src'd for our functions, do nothing. if called directly, define a few necessary funcs. -if [ "$*" != "daemonize" ]; then - - if [ "${*/depend}" != "$*" ]; then - speak() { - echo "$*" >&4 - } - declare -rf speak - fi - if [ -z "${NOCOLOR}" ]; then - set_colors - else - unset_colors - fi - unset x - execute_phases $* - exit 0 -else - DAEMONIZED="yes" - export DAEMONIZED - readonly DAEMONIZED -fi -: diff --git a/bin/ebuild-env/isolated-functions.sh b/bin/ebuild-env/isolated-functions.sh deleted file mode 100644 index 20be25e77..000000000 --- a/bin/ebuild-env/isolated-functions.sh +++ /dev/null @@ -1,209 +0,0 @@ -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header$ - -# Internal logging function, don't use this in ebuilds -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 - ;; - *) - echo -e " ${BAD}*${NORMAL} Invalid use of internal function elog_base(), next message will not be logged" - return 1 - ;; - esac - echo "$*" >> ${T}/logging/${EBUILD_PHASE}.${messagetype} - return 0 -} - -elog() { - elog_base LOG "$*" - echo -e " ${GOOD}*${NORMAL} $*" - return 0 -} - -esyslog() { - local pri= - local tag= - - if [ -x /usr/bin/logger ] - then - pri="$1" - tag="$2" - - shift 2 - [ -z "$*" ] && return 0 - - /usr/bin/logger -p "${pri}" -t "${tag}" -- "$*" - fi - - return 0 -} - -einfo() { - einfon "$*\n" - 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 -} - -ewarn() { - elog_base WARN "$*" - [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo - echo -e " ${WARN}*${NORMAL} ${RC_INDENTATION}$*" - LAST_E_CMD="ewarn" - return 0 -} - -eerror() { - elog_base ERROR "$*" - [[ ${RC_ENDCOL} != "yes" && ${LAST_E_CMD} == "ebegin" ]] && echo - echo -e " ${BAD}*${NORMAL} ${RC_INDENTATION}$*" - LAST_E_CMD="eerror" - return 0 -} - -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 -} - -_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} -} - -eend() { - local retval=${1:-0} - shift - - _eend ${retval} eerror "$*" - - return ${retval} -} - -KV_major() { - [[ -z $1 ]] && return 1 - - local KV=$@ - echo "${KV%%.*}" -} - -KV_minor() { - [[ -z $1 ]] && return 1 - - local KV=$@ - KV=${KV#*.} - echo "${KV%%.*}" -} - -KV_micro() { - [[ -z $1 ]] && return 1 - - local KV=$@ - KV=${KV#*.*.} - echo "${KV%%[^[:digit:]]*}" -} - -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 )) - - # We make version 2.2.0 the minimum version we will handle as - # a sanity check ... if its less, we fail ... - if [[ ${KV_int} -ge 131584 ]] ; then - echo "${KV_int}" - return 0 - fi - - return 1 -} - -_RC_GET_KV_CACHE="" -get_KV() { - [[ -z ${_RC_GET_KV_CACHE} ]] \ - && _RC_GET_KV_CACHE=$(uname -r) - - echo $(KV_to_int "${_RC_GET_KV_CACHE}") - - return $? -} - -unset_colors() { - COLS="25 80" - ENDCOL= - - GOOD= - WARN= - BAD= - NORMAL= - HILITE= - BRACKET= -} - -set_colors() { - COLS=${COLUMNS:-0} # bash's internal COLUMNS variable - (( COLS == 0 )) && COLS=$(set -- `stty size 2>/dev/null` ; echo $2) - (( COLS > 0 )) || (( COLS = 80 )) - COLS=$((${COLS} - 8)) # width of [ ok ] == 7 - - ENDCOL=$'\e[A\e['${COLS}'C' # Now, ${ENDCOL} will move us to the end of the - # column; irregardless of character width - - GOOD=$'\e[32;01m' - WARN=$'\e[33;01m' - BAD=$'\e[31;01m' - HILITE=$'\e[36;01m' - BRACKET=$'\e[34;01m' - NORMAL=$'\e[0m' -} - -RC_ENDCOL="yes" -RC_INDENTATION='' -RC_DEFAULT_INDENT=2 -RC_DOT_PATTERN='' -true diff --git a/bin/ebuild-helpers/dobin b/bin/ebuild-helpers/dobin deleted file mode 100755 index a3269edee..000000000 --- a/bin/ebuild-helpers/dobin +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/dobin,v 1.13 2004/10/04 13:56:50 vapier Exp $ - -if [[ $# -lt 1 ]] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -if [[ ! -d ${D}${DESTTREE}/bin ]] ; then - install -d "${D}${DESTTREE}/bin" || exit 2 -fi - -ret=0 - -for x in "$@" ; do - if [[ -e ${x} ]] ; then - install -m0755 -o ${PORTAGE_INST_UID:-0} -g ${PORTAGE_INST_GID:-0} "${x}" "${D}${DESTTREE}/bin" - else - echo "!!! ${0##*/}: ${x} does not exist" 1>&2 - false - fi - ((ret+=$?)) -done - -exit ${ret} diff --git a/bin/ebuild-helpers/doconfd b/bin/ebuild-helpers/doconfd deleted file mode 100755 index e9ea1fdfb..000000000 --- a/bin/ebuild-helpers/doconfd +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/doconfd,v 1.2.2.1 2005/01/13 04:51:56 vapier Exp $ - -if [[ $# -lt 1 ]] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -exec \ -env \ -INSDESTTREE="/etc/conf.d/" \ -doins "$@" diff --git a/bin/ebuild-helpers/dodir b/bin/ebuild-helpers/dodir deleted file mode 100755 index bc4f7f579..000000000 --- a/bin/ebuild-helpers/dodir +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/dodir,v 1.5 2004/10/04 13:56:50 vapier Exp $ - -slash=/ -exec install -d ${DIROPTIONS} "${@/#${slash}/${D}${slash}}" diff --git a/bin/ebuild-helpers/dodoc b/bin/ebuild-helpers/dodoc deleted file mode 100755 index 60b6a274f..000000000 --- a/bin/ebuild-helpers/dodoc +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 - -if [ $# -lt 1 ] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -dir="${D}usr/share/doc/${PF}/${DOCDESTTREE}" -if [ ! -d "${dir}" ] ; then - install -d "${dir}" -fi - -ret=0 -for x in "$@" ; do - if [ -s "${x}" ] ; then - install -m0644 "${x}" "${dir}" - gzip -f -9 "${dir}/${x##*/}" - elif [ ! -e "${x}" ] ; then - echo "dodoc: ${x} does not exist" 1>&2 - ((++ret)) - fi -done - -exit ${ret} diff --git a/bin/ebuild-helpers/doenvd b/bin/ebuild-helpers/doenvd deleted file mode 100755 index 5232ed908..000000000 --- a/bin/ebuild-helpers/doenvd +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/doenvd,v 1.2.2.1 2005/01/13 04:51:56 vapier Exp $ - -if [[ $# -lt 1 ]] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -exec \ -env \ -INSDESTTREE="/etc/env.d/" \ -doins "$@" diff --git a/bin/ebuild-helpers/doexe b/bin/ebuild-helpers/doexe deleted file mode 100755 index 818c8a5b3..000000000 --- a/bin/ebuild-helpers/doexe +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/doexe,v 1.10.2.1 2004/12/06 03:01:43 carpaski Exp $ - -source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh - -if [[ $# -lt 1 ]] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -if [[ ! -d ${D}${EXEDESTTREE} ]] ; then - install -d "${D}${EXEDESTTREE}" -fi - -for x in "$@" ; do - if [ -L "${x}" ] ; then - cp "${x}" "${T}" - mysrc="${T}"/$(/usr/bin/basename "${x}") - elif [ -d "${x}" ] ; then - vecho "doexe: warning, skipping directory ${x}" - continue - else - mysrc="${x}" - fi - install ${EXEOPTIONS} "${mysrc}" "${D}${EXEDESTTREE}" -done diff --git a/bin/ebuild-helpers/dohard b/bin/ebuild-helpers/dohard deleted file mode 100755 index 03b5e67aa..000000000 --- a/bin/ebuild-helpers/dohard +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/dohard,v 1.6 2004/10/04 13:56:50 vapier Exp $ - -if [[ $# -ne 2 ]] ; then - echo "$0: two arguments needed" 1>&2 - exit 1 -fi - -target=$1 -linkname=$2 -exec ln -f "${D}${target}" "${D}${linkname}" diff --git a/bin/ebuild-helpers/dohtml b/bin/ebuild-helpers/dohtml deleted file mode 100755 index ac31e8091..000000000 --- a/bin/ebuild-helpers/dohtml +++ /dev/null @@ -1,172 +0,0 @@ -#!/usr/bin/python -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/dohtml,v 1.14.2.1 2004/10/27 14:39:29 jstubbs Exp $ - -# -# Typical usage: -# dohtml -r docs/* -# - put all files and directories in docs into /usr/share/doc/${PF}/html -# dohtml foo.html -# - put foo.html into /usr/share/doc/${PF}/html -# -# -# Detailed usage: -# dohtml <list-of-files> -# - will install the files in the list of files (space-separated list) into -# /usr/share/doc/${PF}/html, provided the file ends in .html, .png, .jpg -# or .css -# dohtml -r <list-of-files-and-directories> -# - will do as 'dohtml', but recurse into all directories, as long as the -# directory name is not CVS -# dohtml -A jpe,java [-r] <list-of-files[-and-directories]> -# - will do as 'dohtml' but add .jpe,.java (default filter list is -# added to your list) -# dohtml -a png,gif,html,htm [-r] <list-of-files[-and-directories]> -# - will do as 'dohtml' but filter on .png,.gif,.html,.htm (default filter -# list is ignored) -# dohtml -x CVS,SCCS,RCS -r <list-of-files-and-directories> -# - will do as 'dohtml -r', but ignore directories named CVS, SCCS, RCS -# - -import os -import string -import sys -import types - -def dodir(path): - os.system("install -d '%s'" % path) - -def dofile(src,dst): - - os.system("install -m0644 '%s' '%s'" % (src, dst)) - -def install(basename, dirname, options, prefix=""): - - fullpath = basename - if prefix: fullpath = prefix + "/" + fullpath - if dirname: fullpath = dirname + "/" + fullpath - - if options.DOCDESTTREE: - destdir = options.D + "usr/share/doc/" + options.PF + "/" + options.DOCDESTTREE + "/" + options.doc_prefix + "/" + prefix - else: - destdir = options.D + "usr/share/doc/" + options.PF + "/html/" + options.doc_prefix + "/" + prefix - - if os.path.isfile(fullpath): - ext = os.path.splitext(basename)[1] - if (len(ext) and ext[1:] in options.allowed_exts) or basename in options.allowed_files: - dodir(destdir) - dofile(fullpath, destdir + "/" + basename) - elif options.recurse and os.path.isdir(fullpath) and \ - basename not in options.disallowed_dirs: - for i in os.listdir(fullpath): - pfx = basename - if prefix: pfx = prefix + "/" + pfx - install(i, dirname, options, pfx) - else: - return False - return True - - -class OptionsClass: - def __init__(self): - self.PF = "" - self.D = "" - self.DOCDESTTREE = "" - - if os.environ.has_key("PF"): - self.PF = os.environ["PF"] - if os.environ.has_key("D"): - self.D = os.environ["D"] - if os.environ.has_key("DOCDESTTREE"): - self.DOCDESTTREE = os.environ["DOCDESTTREE"] - - self.allowed_exts = [ 'png', 'gif', 'html', 'htm', 'jpg', 'css', 'js' ] - self.allowed_files = [] - self.disallowed_dirs = [ 'CVS' ] - self.recurse = False - self.verbose = False - self.doc_prefix = "" - -def print_help(): - opts = OptionsClass() - - print "dohtml [-a .foo,.bar] [-A .foo,.bar] [-f foo,bar] [-x foo,bar]" - print " [-r] [-V] <file> [file ...]" - print - print " -a Set the list of allowed to those that are specified." - print " Default:", string.join(opts.allowed_exts, ",") - print " -A Extend the list of allowed file types." - print " -f Set list of allowed extensionless file names." - print " -x Set directories to be excluded from recursion." - print " Default:", string.join(opts.disallowed_dirs, ",") - print " -r Install files and directories recursively." - print " -V Be verbose." - print - -def parse_args(): - options = OptionsClass() - args = [] - - x = 1 - while x < len(sys.argv): - arg = sys.argv[x] - if arg in ["-h","-r","-V"]: - if arg == "-h": - print_help() - sys.exit(0) - elif arg == "-r": - options.recurse = True - elif arg == "-V": - options.verbose = True - elif sys.argv[x] in ["-A","-a","-f","-x","-p"]: - x += 1 - if x == len(sys.argv): - print_help() - sys.exit(0) - elif arg == "-p": - options.doc_prefix = sys.argv[x] - else: - values = string.split(sys.argv[x], ",") - if arg == "-A": - options.allowed_exts.extend(values) - elif arg == "-a": - options.allowed_exts = values - elif arg == "-f": - options.allowed_files = values - elif arg == "-x": - options.disallowed_dirs = values - else: - args.append(sys.argv[x]) - x += 1 - - return (options, args) - -def main(): - - (options, args) = parse_args() - - if type(options.allowed_exts) == types.StringType: - options.allowed_exts = options.allowed_exts.split(",") - - if options.verbose: - print "Allowed extensions:", options.allowed_exts - print "Document prefix : '" + options.doc_prefix + "'" - print "Allowed files :", options.allowed_files - - success = True - - for x in args: - basename = os.path.basename(x) - dirname = os.path.dirname(x) - success = success and install(basename, dirname, options) - - if success: - retcode = 0 - else: - retcode = 1 - - sys.exit(retcode) - -if __name__ == "__main__": - main() diff --git a/bin/ebuild-helpers/doinfo b/bin/ebuild-helpers/doinfo deleted file mode 100755 index 67b163b1a..000000000 --- a/bin/ebuild-helpers/doinfo +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/doinfo,v 1.7 2004/10/04 13:56:50 vapier Exp $ - -if [ ${#} -lt 1 ] ; then - echo "doinfo: at least one argument needed" - exit 1 -fi -if [ ! -d "${D}usr/share/info" ] ; then - install -d "${D}usr/share/info" -fi - -for x in "$@" ; do - if [ -e "${x}" ] ; then - install -m0644 "${x}" "${D}usr/share/info" - gzip -f -9 "${D}usr/share/info/${x##*/}" - else - echo "doinfo: ${x} does not exist" - fi -done diff --git a/bin/ebuild-helpers/doinitd b/bin/ebuild-helpers/doinitd deleted file mode 100755 index 8aae1b383..000000000 --- a/bin/ebuild-helpers/doinitd +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/doinitd,v 1.2.2.1 2005/01/13 04:51:56 vapier Exp $ - -if [[ $# -lt 1 ]] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -exec \ -env \ -EXEDESTTREE="/etc/init.d/" \ -doexe "$@" diff --git a/bin/ebuild-helpers/doins b/bin/ebuild-helpers/doins deleted file mode 100755 index f35cbc63a..000000000 --- a/bin/ebuild-helpers/doins +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/doins,v 1.7.2.2 2004/12/17 22:25:13 carpaski Exp $ - -source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh - -if [ $# -lt 1 ] ; then - echo "${0}: at least one argument needed" - exit 1 -fi - -if [ "${1}" == "-r" ] ; then - DOINSRECUR=y - shift -else - DOINSRECUR=n -fi -[ -z "${INSDEPTH}" ] && declare -i INSDEPTH=0 -if [ ${INSDEPTH} -gt 30 ] ; then - echo "${0}: sanity check ... 30 directories is too much :(" - exit 1 -fi - -if [ "${INSDESTTREE%${D}*}" == "" ]; then - vecho "-------------------------------------------------------" 1>&2 - vecho "You should not use \${D} with helpers." 1>&2 - vecho " --> ${INSDESTTREE}" 1>&2 - vecho "-------------------------------------------------------" 1>&2 - #exit 1 -fi - -[ ! -d "${D}${INSDESTTREE}" ] && dodir "${INSDESTTREE}" - -for x in "$@" ; do - if [ -L "$x" ] ; then - cp "$x" "${T}" - mysrc="${T}/$(/usr/bin/basename "${x}")" - elif [ -d "$x" ] ; then - if [ "${DOINSRECUR}" == "n" ] ; then - continue - fi - - mydir="${INSDESTTREE}/$(basename "${x}")" - find "${x}" -mindepth 1 -maxdepth 1 -exec \ - env \ - INSDESTTREE="${mydir}" \ - INSDEPTH=$((INSDEPTH+1)) \ - doins -r {} \; - continue - else - mysrc="${x}" - fi - install ${INSOPTIONS} "${mysrc}" "${D}${INSDESTTREE}" -done diff --git a/bin/ebuild-helpers/dojar b/bin/ebuild-helpers/dojar deleted file mode 100755 index e61015ef6..000000000 --- a/bin/ebuild-helpers/dojar +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/sh -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/dojar,v 1.8 2004/10/04 13:56:50 vapier Exp $ -# Author Karl Trygve Kalleberg <karltk@gentoo.org> - -# -# Typical usage: -# dojar foo.jar bar.jar -# - installs foo.jar and bar.jar into /usr/share/${PN}/lib, and adds them -# both to /usr/share/${PN}/classpath.env -# -# Detailed usage -# dojar <list-of-jars> -# - installs <list-of-jars> into /usr/share/${PN}/lib and adds each to -# /usr/share/${PN}/classpath.env. -# -# The classpath.env file is currently merely a convenience for the user as -# it allows him to: -# export CLASSPATH=${CLASSPATH}:`cat /usr/share/foo/classpath.env` -# -# For many packages that set FOO_HOME, placing the jar files into -# lib will allow the user to set FOO_HOME=/usr/share/foo and have the -# scripts work as expected. -# -# Possibly a jarinto will be needed in the future. -# - -if [ -z "$JARDESTTREE" ] ; then - JARDESTTREE="lib" -fi - -jarroot="${DESTTREE}/share/${PN}/" -jardest="${DESTTREE}/share/${PN}/${JARDESTTREE}/" -pf="${D}${jarroot}/package.env" - -dodir "${jardest}" - -for i in $* ; do - bn="$(basename $i)" - - if [ -f "$pf" ] ; then - oldcp=$(grep "CLASSPATH=" "$pf" | sed "s/CLASSPATH=//") - grep -v "CLASSPATH=" "$pf" > "${pf}.new" - echo "CLASSPATH=${oldcp}:${jardest}${bn}" >> "${pf}.new" - mv "${pf}.new" "$pf" - else - echo "DESCRIPTION=\"${DESCRIPTION}\"" > "$pf" - echo "CLASSPATH=${jardest}${bn}" >> "$pf" - fi - - cp "$i" "${D}${jardest}/" - chmod 0444 "${D}${jardest}/${bn}" -done diff --git a/bin/ebuild-helpers/dolib b/bin/ebuild-helpers/dolib deleted file mode 100755 index 1a6152571..000000000 --- a/bin/ebuild-helpers/dolib +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/dolib,v 1.8.2.2 2005/01/12 02:07:15 carpaski Exp $ - -# Setup ABI cruft -LIBDIR_VAR="LIBDIR_${ABI}" -if [[ -n ${ABI} && -n ${!LIBDIR_VAR} ]] ; then - CONF_LIBDIR=${!LIBDIR_VAR} -fi -unset LIBDIR_VAR -# we need this to default to lib so that things dont break -CONF_LIBDIR=${CONF_LIBDIR:-lib} -libdir="${D}${DESTTREE}/${CONF_LIBDIR}" - - -if [[ $# -lt 1 ]] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi -if [[ ! -d ${libdir} ]] ; then - install -d "${libdir}" || exit 1 -fi - -ret=0 - -for x in "$@" ; do - if [[ -e ${x} ]] ; then - if [[ ! -L ${x} ]] ; then - install ${LIBOPTIONS} "${x}" "${libdir}" - else - ln -s "$(readlink "${x}")" "${libdir}/${x##*/}" - fi - else - echo "!!! ${0##*/}: ${x} does not exist" 1>&2 - false - fi - ((ret+=$?)) -done - -exit ${ret} diff --git a/bin/ebuild-helpers/dolib.a b/bin/ebuild-helpers/dolib.a deleted file mode 100755 index c4df4a46c..000000000 --- a/bin/ebuild-helpers/dolib.a +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/dolib.a,v 1.8 2004/10/10 10:07:20 carpaski Exp $ - -exec env LIBOPTIONS="-m0644" \ - dolib "$@" diff --git a/bin/ebuild-helpers/dolib.so b/bin/ebuild-helpers/dolib.so deleted file mode 100755 index efd8c1691..000000000 --- a/bin/ebuild-helpers/dolib.so +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/dolib.so,v 1.12 2004/10/10 10:07:20 carpaski Exp $ - -exec env LIBOPTIONS="-m0755" \ - dolib "$@" diff --git a/bin/ebuild-helpers/doman b/bin/ebuild-helpers/doman deleted file mode 100755 index 2ed65ffc7..000000000 --- a/bin/ebuild-helpers/doman +++ /dev/null @@ -1,54 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/doman,v 1.13.2.2 2005/07/29 05:55:34 vapier Exp $ - -source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh - -if [[ $# -lt 1 ]] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -i18n="" - -ret=0 - -for x in "$@" ; do - if [[ ${x:0:6} == "-i18n=" ]] ; then - i18n=${x:6}/ - continue - fi - if [[ ${x} == ".keep" ]] ; then - continue - fi - - suffix=${x##*.} - - if [[ ${suffix} == "gz" ]] ; then - realname=${x%.*} - suffix=${realname##*.} - vecho "QA Notice: you should let portage compress '${realname}' for you" 2>&1 - fi - - mandir=${i18n}man${suffix:0:1} - - if echo ${mandir} | egrep -q 'man[0-9n](|f|p|pm)$' -; then - if [[ -s ${x} ]] ; then - if [[ ! -d ${D}/usr/share/man/${mandir} ]] ; then - install -d "${D}/usr/share/man/${mandir}" - fi - - install -m0644 "${x}" "${D}/usr/share/man/${mandir}" - ((ret+=$?)) - elif [[ ! -e ${x} ]] ; then - vecho "doman: ${x} does not exist" 1>&2 - ((++ret)) - fi - else - vecho "doman: '${x}' is probably not a man page; skipping" 1>&2 - ((++ret)) - fi -done - -exit ${ret} diff --git a/bin/ebuild-helpers/domo b/bin/ebuild-helpers/domo deleted file mode 100755 index 829505909..000000000 --- a/bin/ebuild-helpers/domo +++ /dev/null @@ -1,26 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/domo,v 1.6 2004/10/04 13:56:50 vapier Exp $ - -mynum=${#} -if [ ${mynum} -lt 1 ] ; then - echo "${0}: at least one argument needed" - exit 1 -fi -if [ ! -d "${D}${DESTTREE}/share/locale" ] ; then - install -d "${D}${DESTTREE}/share/locale/" -fi - -for x in "$@" ; do - if [ -e "${x}" ] ; then - mytiny="${x##*/}" - mydir="${D}${DESTTREE}/share/locale/${mytiny%.*}/LC_MESSAGES" - if [ ! -d "${mydir}" ] ; then - install -d "${mydir}" - fi - install -m0644 "${x}" "${mydir}/${MOPREFIX}.mo" - else - echo "${0}: ${x} does not exist" - fi -done diff --git a/bin/ebuild-helpers/donewins b/bin/ebuild-helpers/donewins deleted file mode 120000 index 59a0db27b..000000000 --- a/bin/ebuild-helpers/donewins +++ /dev/null @@ -1 +0,0 @@ -newins
\ No newline at end of file diff --git a/bin/ebuild-helpers/dosbin b/bin/ebuild-helpers/dosbin deleted file mode 100755 index 30aa7893c..000000000 --- a/bin/ebuild-helpers/dosbin +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/dosbin,v 1.11 2004/10/04 13:56:50 vapier Exp $ - -if [[ $# -lt 1 ]] ; then - echo "$0: at least one argument needed" 1>&2 - exit 1 -fi - -if [[ ! -d ${D}${DESTTREE}/sbin ]] ; then - install -d "${D}${DESTTREE}/sbin" || exit 2 -fi - -ret=0 - -for x in "$@" ; do - if [[ -e ${x} ]] ; then - install -m0755 -o ${PORTAGE_INST_UID:-0} -g ${PORTAGE_INST_GID:-0} "${x}" "${D}${DESTTREE}/sbin" - else - echo "!!! ${0##*/}: ${x} does not exist" 1>&2 - false - fi - ((ret+=$?)) -done - -exit ${ret} diff --git a/bin/ebuild-helpers/dosed b/bin/ebuild-helpers/dosed deleted file mode 100755 index bf6538e6c..000000000 --- a/bin/ebuild-helpers/dosed +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/dosed,v 1.7 2004/10/04 13:56:50 vapier Exp $ - -mysed="s:${D}::g" - -for x in "$@" ; do - y="${D}${x}" - if [ -a "${y}" ] ; then - if [ -f "${y}" ] ; then - mysrc="${T}/${y##*/}" - cp "${y}" "${mysrc}" - sed -e "${mysed}" "${mysrc}" > "${y}" - else - echo "${y} is not a regular file!" - exit 1 - fi - else - mysed="${x}" - fi -done diff --git a/bin/ebuild-helpers/dosym b/bin/ebuild-helpers/dosym deleted file mode 100755 index e0af15e2c..000000000 --- a/bin/ebuild-helpers/dosym +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# Copyright 1999-2006 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: /var/cvsroot/gentoo-src/portage/bin/dosym,v 1.7 2004/10/04 13:56:50 vapier Exp $ - -if [[ $# -ne 2 ]] ; then - echo "$0: two arguments needed" 1>&2 - exit 1 -fi - -destdir=${2%/*} -[[ ! -d ${D}${destdir} ]] && dodir "${destdir}" - -exec ln -snf "$1" "${D}$2" diff --git a/bin/ebuild-helpers/emake b/bin/ebuild-helpers/emake deleted file mode 100755 index b7ae1f154..000000000 --- a/bin/ebuild-helpers/emake +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: emake 1912 2005-08-25 03:54:42Z ferringb $ -# -# emake: Supplies some default parameters to GNU make. At the moment the -# only parameter supplied is -jN, where N is a number of -# parallel processes that should be ideal for the running host -# (e.g. on a single-CPU machine, N=2). The MAKEOPTS variable -# is set in /etc/make.globals. We don't source -# /etc/make.globals here because emake is only called from an -# ebuild. - -exec make ${MAKEOPTS} ${EXTRA_EMAKE} "$@" diff --git a/bin/ebuild-helpers/fowners b/bin/ebuild-helpers/fowners deleted file mode 100755 index 99f0685cb..000000000 --- a/bin/ebuild-helpers/fowners +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: fowners 1912 2005-08-25 03:54:42Z ferringb $ - -slash=/ -exec chown "${@/#${slash}/${D}${slash}}" diff --git a/bin/ebuild-helpers/fperms b/bin/ebuild-helpers/fperms deleted file mode 100755 index 383894eb1..000000000 --- a/bin/ebuild-helpers/fperms +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: fperms 1912 2005-08-25 03:54:42Z ferringb $ - -slash=/ -exec chmod "${@/#${slash}/${D}${slash}}" diff --git a/bin/ebuild-helpers/newbin b/bin/ebuild-helpers/newbin deleted file mode 100755 index ba7852d15..000000000 --- a/bin/ebuild-helpers/newbin +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: newbin 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "Nothing defined to do." - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -dobin "${T}/${2}" diff --git a/bin/ebuild-helpers/newconfd b/bin/ebuild-helpers/newconfd deleted file mode 100755 index e9f2aa5d0..000000000 --- a/bin/ebuild-helpers/newconfd +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: newconfd 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "$0: nothing defined to do" 1>&2 - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -exec doconfd "${T}/${2}" diff --git a/bin/ebuild-helpers/newdoc b/bin/ebuild-helpers/newdoc deleted file mode 100755 index bc56d73a8..000000000 --- a/bin/ebuild-helpers/newdoc +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: newdoc 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "newdoc: Nothing defined to do" 1>&2 - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -exec dodoc "${T}/${2}" diff --git a/bin/ebuild-helpers/newenvd b/bin/ebuild-helpers/newenvd deleted file mode 100755 index 68cf65c62..000000000 --- a/bin/ebuild-helpers/newenvd +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: newenvd 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "$0: nothing defined to do" 1>&2 - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -exec doenvd "${T}/${2}" diff --git a/bin/ebuild-helpers/newexe b/bin/ebuild-helpers/newexe deleted file mode 100755 index 4769694fb..000000000 --- a/bin/ebuild-helpers/newexe +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: newexe 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "Nothing defined to do." - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -doexe "${T}/${2}" diff --git a/bin/ebuild-helpers/newinitd b/bin/ebuild-helpers/newinitd deleted file mode 100755 index f461bba49..000000000 --- a/bin/ebuild-helpers/newinitd +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: newinitd 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "$0: nothing defined to do" 1>&2 - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -exec doinitd "${T}/${2}" diff --git a/bin/ebuild-helpers/newins b/bin/ebuild-helpers/newins deleted file mode 100755 index bb89feb85..000000000 --- a/bin/ebuild-helpers/newins +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: newins 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "Error: Nothing defined to do." - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -doins "${T}/${2}" diff --git a/bin/ebuild-helpers/newlib.a b/bin/ebuild-helpers/newlib.a deleted file mode 100755 index ac4b0351d..000000000 --- a/bin/ebuild-helpers/newlib.a +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: newlib.a 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "Error: Nothing defined to do." - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -dolib.a "${T}/${2}" diff --git a/bin/ebuild-helpers/newlib.so b/bin/ebuild-helpers/newlib.so deleted file mode 100755 index 5dec75ab1..000000000 --- a/bin/ebuild-helpers/newlib.so +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: newlib.so 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "Error: Nothing defined to do." - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -dolib.so "${T}/${2}" diff --git a/bin/ebuild-helpers/newman b/bin/ebuild-helpers/newman deleted file mode 100755 index 0081851e7..000000000 --- a/bin/ebuild-helpers/newman +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: newman 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "newman: Nothing defined to do" 1>&2 - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -exec doman "${T}/${2}" diff --git a/bin/ebuild-helpers/newsbin b/bin/ebuild-helpers/newsbin deleted file mode 100755 index ab9f397f4..000000000 --- a/bin/ebuild-helpers/newsbin +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: newsbin 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "${T}" ] || [ -z "${2}" ] ; then - echo "Nothing defined to do." - exit 1 -fi - -rm -rf "${T}/${2}" -cp "${1}" "${T}/${2}" -dosbin "${T}/${2}" diff --git a/bin/ebuild-helpers/prepall b/bin/ebuild-helpers/prepall deleted file mode 100755 index a53fb6acb..000000000 --- a/bin/ebuild-helpers/prepall +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: prepall 2394 2005-12-17 17:23:07Z vapier $ - -prepallman -prepallinfo -prepallstrip - -# this should help to ensure that all (most?) shared libraries are executable -# and that all libtool scripts / static libraries are not executable -for i in "${D}"opt/*/lib{,32,64} \ - "${D}"lib{,32,64} \ - "${D}"usr/lib{,32,64} \ - "${D}"usr/X11R6/lib{,32,64} ; do - [[ ! -d ${i} ]] && continue - - for j in "${i}"/*.so.* "${i}"/*.so ; do - [[ ! -e ${j} ]] && continue - [[ -L ${j} ]] && continue - [[ -x ${j} ]] && continue - echo "making executable: /${j/${D}/}" - chmod +x "${j}" - done - - for j in "${i}"/*.a "${i}"/*.la ; do - [[ ! -e ${j} ]] && continue - [[ -L ${j} ]] && continue - [[ ! -x ${j} ]] && continue - echo "removing executable bit: /${j/${D}/}" - chmod -x "${j}" - done -done - -# When installing static libraries into /usr/lib and shared libraries into -# /lib, we have to make sure we have a linker script in /usr/lib along side -# the static library, or gcc will utilize the static lib when linking :(. -# http://bugs.gentoo.org/4411 -for a in "${D}"usr/lib*/*.a ; do - s=${a%.a}.so - if [[ ! -e ${s} ]] ; then - s=${s%usr/*}${s##*/usr/} - if [[ -e ${s} ]] ; then - echo -e "\aQA Notice: missing gen_usr_ldscript for ${s##*/}\a" - sleep 1 - fi - fi -done - -# Make sure people don't store libtool files or static libs in /lib -f=$(ls "${D}"lib*/*.{a,la} 2>/dev/null) -if [[ -n ${f} ]] ; then - echo -e "\n\aQA Notice: excessive files found in the / partition\a" - echo "${f}" - sleep 1 -fi - -# Verify that the libtool files don't contain bogus $D entries. -for a in "${D}"usr/lib*/*.la ; do - s=${a##*/} - if grep -qs "${D}" "${a}" ; then - echo -e "\n\aQA Notice: ${s} appears to contain PORTAGE_TMPDIR paths\a" - sleep 1 - fi -done - -if type -p scanelf > /dev/null ; then - -# Run some sanity checks on shared libraries -for d in "${D}"lib* "${D}"usr/lib* ; do - f=$(scanelf -ByF '%S %p' "${d}"/lib*.so* | gawk '$2 == "" { print }') - if [[ -n ${f} ]] ; then - echo -e "\n\aQA Notice: the following shared libraries lack a SONAME\a" - echo "${f}" - sleep 1 - fi - - f=$(scanelf -ByF '%n %p' "${d}"/lib*.so* | gawk '$2 == "" { print }') - if [[ -n ${f} ]] ; then - echo -e "\n\aQA Notice: the following shared libraries lack NEEDED entries\a" - echo "${f}" - sleep 1 - fi -done - -fi diff --git a/bin/ebuild-helpers/prepalldocs b/bin/ebuild-helpers/prepalldocs deleted file mode 100755 index e71c6e452..000000000 --- a/bin/ebuild-helpers/prepalldocs +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: prepalldocs 1912 2005-08-25 03:54:42Z ferringb $ - -dir="${D}usr/share/doc" - -[ ! -d "${dir}" ] && exit 0 - -z=$(find "${dir}" \ - '(' -type f -or -type l ')' \ - -not -name '*.gz' \ - -not -name '*.bz2' \ - -not -name '*.Z' \ - -not -name '*.js' \ - 2>/dev/null) - -[ -z "${z}" ] && exit 0 - -PORTAGE_COMPRESS=${PORTAGE_COMPRESS:-gzip} -PORTAGE_COMPRESS_FLAGS=${PORTAGE_COMPRESS_FLAGS:--9} -if [ -z "${PORTAGE_COMPRESS_SUFFIX}" ] ; then - case ${PORTAGE_COMPRESS} in - gzip) suffix="gz";; - bzip2) suffix="bz2";; - *) echo "prepalldocs error: please set PORTAGE_COMPRESS_SUFFIX in make.conf" 1>&2 - exit 1;; - esac -fi - -echo "doc: ${PORTAGE_COMPRESS} ${PORTAGE_COMPRESS_FLAGS}" -for y in ${z} ; do - if [ -L "${y}" ] ; then - # Symlink ... - mylink=${y} - linkto=$(readlink "${y}") - - if [ "${linkto##*.}" != "${suffix}" ] ; then - linkto="${linkto}.${suffix}" - fi - if [ "${mylink##*.}" != "${suffix}" ] ; then - mylink="${mylink}.${suffix}" - fi - - echo " link fixed ${mylink##*/}" - ln -snf "${linkto}" "${mylink}" - if [ "${y}" != "${mylink}" ] ; then - echo " link removed ${y##*/}" - rm -f "${y}" - fi - else - if [ "${y##*.}" != "${suffix}" ] ; then - echo " compressing ${y##*/}" - "${PORTAGE_COMPRESS}" ${PORTAGE_COMPRESS_FLAGS} -f "${y}" - fi - fi -done diff --git a/bin/ebuild-helpers/prepallinfo b/bin/ebuild-helpers/prepallinfo deleted file mode 100755 index 220391e4e..000000000 --- a/bin/ebuild-helpers/prepallinfo +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: prepallinfo 1912 2005-08-25 03:54:42Z ferringb $ - -[ ! -d "${D}usr/share/info" ] && exit 0 - -exec prepinfo diff --git a/bin/ebuild-helpers/prepallman b/bin/ebuild-helpers/prepallman deleted file mode 100755 index 77b570a20..000000000 --- a/bin/ebuild-helpers/prepallman +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: prepallman 1912 2005-08-25 03:54:42Z ferringb $ - -for x in $(find "${D}" -name man -type d -printf '%P\n') ; do - prepman ${x%/man} - export prepallman_banner=no -done diff --git a/bin/ebuild-helpers/prepallstrip b/bin/ebuild-helpers/prepallstrip deleted file mode 100755 index e55e11192..000000000 --- a/bin/ebuild-helpers/prepallstrip +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: prepallstrip 1912 2005-08-25 03:54:42Z ferringb $ - -if [ "${FEATURES//*nostrip*/true}" == "true" ] || [ "${RESTRICT//*nostrip*/true}" == "true" ] ; then - exit 0 -fi - -exec prepstrip "${D}" diff --git a/bin/ebuild-helpers/prepinfo b/bin/ebuild-helpers/prepinfo deleted file mode 100755 index 85af08699..000000000 --- a/bin/ebuild-helpers/prepinfo +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: prepinfo 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "$1" ] ; then - z="${D}usr/share/info" -else - if [ -d "${D}$1/share/info" ] ; then - z="${D}$1/share/info" - else - z="${D}$1/info" - fi -fi - -[ ! -d "${z}" ] && exit 0 - -rm -f "${z}"/dir{,.old}{,.info{,.gz,.bz2,.Z}} - -PORTAGE_COMPRESS=${PORTAGE_COMPRESS:-gzip} -PORTAGE_COMPRESS_FLAGS=${PORTAGE_COMPRESS_FLAGS:--9} -if [ -z "${PORTAGE_COMPRESS_SUFFIX}" ] ; then - case ${PORTAGE_COMPRESS} in - gzip) suffix="gz";; - bzip2) suffix="bz2";; - *) echo "prepinfo: error fixing links: please set PORTAGE_COMPRESS_SUFFIX in make.conf" 1>&2 - exit 1;; - esac -fi - -echo "info: ${PORTAGE_COMPRESS} ${PORTAGE_COMPRESS_FLAGS}" - -for x in `find "${z}"/ \( -type f -or -type l \) -maxdepth 1 -mindepth 1 2>/dev/null` ; do - if [ -L "${x}" ] ; then - # Symlink ... - mylink=${x} - linkto=$(readlink "${x}") - - if [ "${linkto##*.}" != "${suffix}" ] ; then - linkto="${linkto}.${suffix}" - fi - if [ "${mylink##*.}" != "${suffix}" ] ; then - mylink="${mylink}.${suffix}" - fi - - echo "fixing GNU info symlink: ${mylink##*/}" - ln -snf "${linkto}" "${mylink}" - if [ "${x}" != "${mylink}" ] ; then - echo "removing old symlink: ${x##*/}" - rm -f "${x}" - fi - else - if [ "${x##*.}" != "${suffix}" ] ; then - echo "compressing GNU info page: ${x##*/}" - "${PORTAGE_COMPRESS}" ${PORTAGE_COMPRESS_FLAGS} -f "${x}" - fi - fi -done diff --git a/bin/ebuild-helpers/preplib b/bin/ebuild-helpers/preplib deleted file mode 100755 index ce2a27fa3..000000000 --- a/bin/ebuild-helpers/preplib +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: preplib 1912 2005-08-25 03:54:42Z ferringb $ - -LIBDIR_VAR="LIBDIR_${ABI}" -if [ -n "${ABI}" -a -n "${!LIBDIR_VAR}" ]; then - CONF_LIBDIR="${!LIBDIR_VAR}" -fi -unset LIBDIR_VAR - -if [ -z "${CONF_LIBDIR}" ]; then - # we need this to default to lib so that things dont break - CONF_LIBDIR="lib" -fi - -if [ -z "$1" ] ; then - z="${D}usr/${CONF_LIBDIR}" -else - z="${D}$1/${CONF_LIBDIR}" -fi - -if [ -d "${z}" ] ; then - ldconfig -n -N "${z}" -fi diff --git a/bin/ebuild-helpers/preplib.so b/bin/ebuild-helpers/preplib.so deleted file mode 100755 index 0b88cc911..000000000 --- a/bin/ebuild-helpers/preplib.so +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash -# Copyright 1999-2004 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: preplib.so 1912 2005-08-25 03:54:42Z ferringb $ - -for x in "$@" ; do - if [ -d "${D}${x}" ] ; then - ldconfig -n -N "${D}${x}" - fi -done diff --git a/bin/ebuild-helpers/prepman b/bin/ebuild-helpers/prepman deleted file mode 100755 index 5a6f05f1a..000000000 --- a/bin/ebuild-helpers/prepman +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: prepman 1912 2005-08-25 03:54:42Z ferringb $ - -if [ -z "$1" ] ; then - z="${D}usr/share/man" -else - z="${D}$1/man" -fi - -[ ! -d "${z}" ] && exit 0 - -PORTAGE_COMPRESS=${PORTAGE_COMPRESS:-gzip} -PORTAGE_COMPRESS_FLAGS=${PORTAGE_COMPRESS_FLAGS:--9} -if [ -z "${PORTAGE_COMPRESS_SUFFIX}" ] ; then - case ${PORTAGE_COMPRESS} in - gzip) suffix="gz";; - bzip2) suffix="bz2";; - *) echo "prepman error: please set PORTAGE_COMPRESS_SUFFIX in make.conf" 1>&2 - exit 1;; - esac -fi - -if [ -z "${prepallman_banner}" ] ; then - echo "man: ${PORTAGE_COMPRESS} ${PORTAGE_COMPRESS_FLAGS}" -fi - -for x in `find "${z}"/ -type d 2>/dev/null` ; do - for y in `find "${x}"/ \( -type f -or -type l \) ! -name '.keep' -maxdepth 1 -mindepth 1 2>/dev/null` ; do - if [ -L "${y}" ] ; then - # Symlink ... - mylink=${y} - linkto=$(readlink "${y}") - - # Do NOT change links to directories - if [ -d "${z}/${linkto}" ] ; then - continue - fi - - if [ "${linkto##*.}" != "${suffix}" ] ; then - linkto="${linkto}.${suffix}" - fi - if [ "${mylink##*.}" != "${suffix}" ] ; then - mylink="${mylink}.${suffix}" - fi - - echo " link fixed ${mylink##*/}" - ln -snf "${linkto}" "${mylink}" - if [ "${y}" != "${mylink}" ] ; then - echo " link removed ${y##*/}" - rm -f "${y}" - fi - else - if [ "${y##*.}" != "${suffix}" ] && [ ! -d "${y}" ] ; then - echo " compressing ${y##*/}" - "${PORTAGE_COMPRESS}" ${PORTAGE_COMPRESS_FLAGS} -f "${y}" - fi - fi - done -done diff --git a/bin/ebuild-helpers/prepstrip b/bin/ebuild-helpers/prepstrip deleted file mode 100755 index 2e03cb912..000000000 --- a/bin/ebuild-helpers/prepstrip +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: prepstrip 2228 2005-11-01 01:35:23Z vapier $ - -if [ "${FEATURES//*nostrip*/true}" == "true" ] || [ "${RESTRICT//*nostrip*/true}" == "true" ] ; then - echo "nostrip" - STRIP="/bin/false" - PORTAGE_STRIP_FLAGS="" -else - STRIP=${STRIP:-${CHOST}-strip} - type -p -- ${STRIP} > /dev/null || STRIP=strip - PORTAGE_STRIP_FLAGS=${PORTAGE_STRIP_FLAGS:---strip-unneeded} -fi - -banner=1 -retval=0 - -for x in "$@" ; do - if [ -d "${x}" ]; then - # We only want files. So make a pass for each directory and call again. - find "${x}" -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 -or -name '*.so' -or -name '*.so.*' \) -print0 | - $XARGS -0 -n500 prepstrip - else - if [ ${banner} -eq 1 ] ; then - echo "strip: ${STRIP} ${PORTAGE_STRIP_FLAGS}" - banner=0 - fi - - f=$(file "${x}") || continue - [ -z "${f}" ] && continue - - if [ -z "${f/*current ar archive*/}" ]; then - echo " ${x:${#D}:${#x}}" - ${STRIP} -g "${x}" - fi - if [ -z "${f/*SB executable*/}" ]; then - echo " ${x:${#D}:${#x}}" - ${STRIP} "${x}" - fi - if [ -z "${f/*SB shared object*/}" ]; then - echo " ${x:${#D}:${#x}}" - ${STRIP} ${PORTAGE_STRIP_FLAGS} "${x}" - fi - fi -done - -exit ${retval} diff --git a/bin/etc-update b/bin/etc-update deleted file mode 100755 index ce5ac568b..000000000 --- a/bin/etc-update +++ /dev/null @@ -1,423 +0,0 @@ -#!/bin/bash -# Copyright 1999-2005 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id: etc-update 2221 2005-11-01 01:32:07Z vapier $ - -# Author Brandon Low <lostlogic@gentoo.org> -# -# Previous version (from which I've borrowed a few bits) by: -# Jochem Kossen <j.kossen@home.nl> -# Leo Lipelis <aeoo@gentoo.org> -# Karl Trygve Kalleberg <karltk@gentoo.org> - -export PORTAGE_CALLER="etc-update" - -if type -p gsed >/dev/null ; then - function sed() { gsed "$@"; } -fi - -function get_config() { - item=$1 - - # First strip off comment lines, then grab the configuration - # item. If there's more than one of the same configuration item, - # then allow the last setting to take precedence. - cut -d'#' -f1-1 /etc/etc-update.conf | \ - sed -ne "s/^ *$item *= *\([\"']\{0,1\}\)\(.*\)\1/\2/p" |sed -e '$p;d' -} - -function scan() { - - echo "Scanning Configuration files..." - rm -rf ${TMP}/files > /dev/null 2>&1 - mkdir ${TMP}/files || die "Failed mkdir command!" 1 - count=0 - input=0 - - # Sanity check to make sure diff exists and works - if ! diff -v &>/dev/null ; then - echo "ERROR: 'diff' does not seem to work, aborting" - exit 1 - fi - - for path in ${CONFIG_PROTECT} ; do - [ ! -d ${path} ] && continue - - ofile="" - for file in `find ${path}/ -iname "._cfg????_*" | - sed -e "s:\(^.*/\)\(\._cfg[0-9]*_\)\(.*$\):\1\2\3\%\2\%\3:" | - sort -t'%' -k3 -k2 | LANG=POSIX LC_ALL=POSIX cut -f1 -d'%'`; do - rpath=`echo "${file/\/\///}" | sed -e "s:/[^/]*$::"` - rfile=`echo "${file/\/\///}" | sed -e "s:^.*/::"` - for mpath in ${CONFIG_PROTECT_MASK}; do - if [[ "${rpath}" == "${mpath}"* ]]; then - mv ${rpath}/${rfile} ${rpath}/${rfile:10} - break - fi - done - [ ! -f ${file} ] && continue - - - if [[ "${ofile:10}" != "${rfile:10}" ]] || - [[ ${opath} != ${rpath} ]]; then - MATCHES=0 - if [[ "${EU_AUTOMERGE}" == "yes" ]]; then - if [ ! -e "${rpath}/${rfile}" ] || [ ! -e "${rpath}/${rfile:10}" ]; then - MATCHES=0 - else - diff -Bbua ${rpath}/${rfile} ${rpath}/${rfile:10} | egrep '^[+-]' | egrep -v '^[+-][\t ]*#|^--- |^\+\+\+ ' | egrep -qv '^[-+][\t ]*$' - MATCHES=$? - fi - elif [[ -z `diff -Nua ${rpath}/${rfile} ${rpath}/${rfile:10}| - grep "^[+-][^+-]"|grep -v '# .Header:.*'` ]]; then - MATCHES=1 - fi - if [[ "${MATCHES}" == "1" ]]; then - echo "Automerging trivial changes in: ${rfile:10}" - mv ${rpath}/${rfile} ${rpath}/${rfile:10} - continue - else - count=${count}+1 - echo "${rpath}/${rfile:10}" > ${TMP}/files/${count} - echo "${rpath}/${rfile}" >> ${TMP}/files/${count} - ofile="${rfile}" - opath="${rpath}" - continue - fi - fi - - if [[ -z `diff -Nua ${rpath}/${rfile} ${rpath}/${ofile}| - grep "^[+-][^+-]"|grep -v '# .Header:.*'` ]]; then - mv ${rpath}/${rfile} ${rpath}/${ofile} - continue - else - echo "${rpath}/${rfile}" >> ${TMP}/files/${count} - ofile="${rfile}" - opath="${rpath}" - fi - done - done - -} - -function sel_file() { - local -i isfirst=0 - until [ -f ${TMP}/files/${input} ] || [ ${input} == -1 ] || [ ${input} == -3 ]; do - local numfiles=$(ls ${TMP}/files|wc -l) - local numwidth=${#numfiles} - for file in $(ls ${TMP}/files|sort -n); do - if (( ${isfirst} == 0 )); then - isfirst=${file} - fi - numshow=$(printf "%${numwidth}i${PAR} " ${file}) - spacer=${numshow//?/ } - echo -n "${numshow}" - if (( ${mode} == 0 )); then - spacedit=0 - for word in $(<${TMP}/files/${file}); do - if (( ${spacedit} == 1 )); then - echo -n "${spacer}" - else - spacedit=1 - fi - echo ${word} - done - else - head -n1 ${TMP}/files/${file} - fi - done > ${TMP}/menuitems - - if [ "${OVERWRITE_ALL}" == "yes" ]; then - input=0 - else - if (( ${mode} == 0 )); then - echo "The following is the list of files which need updating, each -configuration file is followed by a list of possible replacement files." - else - local my_title="Please select a file to update" - fi - - if (( ${mode} == 0 )); then - cat ${TMP}/menuitems - echo "Please select a file to edit by entering the corresponding number." - echo " (don't use -3 or -5 if you're unsure what to do)" - echo " (-1 to exit) (-3 to auto merge all remaining files)" - echo -n " (-5 to auto-merge AND not use 'mv -i'): " - read input - else - dialog --title "${title}" --menu "${my_title}" \ - 0 0 0 $(echo -e "-1 Exit\n$(<${TMP}/menuitems)") \ - 2> ${TMP}/input - input=$(<${TMP}/input) - fi - if (( ${input} == -5 )); then - input=-3 - export mv_opts="" - fi - if (( ${input} == -3 )); then - input=0 - export OVERWRITE_ALL="yes" - fi - fi # -3 automerge - if (( ${input} == 0 )); then - input=${isfirst} - fi - done -} - -function do_file() { - echo - local -i my_input - local -i fcount=0 - until (( $(wc -l < ${TMP}/files/${input}) < 2 )); do - my_input=0 - if (( $(wc -l < ${TMP}/files/${input}) == 2 )); then - my_input=1 - fi - until (( ${my_input} > 0 )) && (( ${my_input} < $(wc -l < ${TMP}/files/${input}) )); do - fcount=0 - - if [ "${OVERWRITE_ALL}" == "yes" ]; then - my_input=0 - else - for line in $(<${TMP}/files/${input}); do - if (( ${fcount} > 0 )); then - echo -n "${fcount}${PAR} " - echo "${line}" - else - if (( ${mode} == 0 )); then - echo "Below are the new config files for ${line}:" - else - local my_title="Please select a file to process for ${line}" - fi - fi - fcount=${fcount}+1 - done > ${TMP}/menuitems - - if (( ${mode} == 0 )); then - cat ${TMP}/menuitems - echo -n "Please select a file to process (-1 to exit this file): " - read my_input - else - dialog --title "${title}" --menu "${my_title}" \ - 0 0 0 `echo -e "$(<${TMP}/menuitems)\n${fcount} Exit"` \ - 2> ${TMP}/input - my_input=$(<${TMP}/input) - fi - fi # OVERWRITE_ALL - - if (( ${my_input} == 0 )); then - my_input=1 - elif (( ${my_input} == -1 )); then - input=0 - return - elif (( ${my_input} == ${fcount} )); then - break - fi - done - if (( ${my_input} == ${fcount} )); then - break - fi - - fcount=${my_input}+1 - - file=$(sed -e "${fcount}p;d" ${TMP}/files/${input}) - ofile=$(head -n1 ${TMP}/files/${input}) - - do_cfg "${file}" "${ofile}" - - sed -e "${fcount}!p;d" ${TMP}/files/${input} > ${TMP}/files/sed - mv ${TMP}/files/sed ${TMP}/files/${input} - - if (( ${my_input} == -1 )); then - break - fi - done - echo - rm ${TMP}/files/${input} - count=${count}-1 -} - -function do_cfg() { - - local file="${1}" - local ofile="${2}" - local -i my_input=0 - - until (( ${my_input} == -1 )) || [ ! -f ${file} ]; do - if [ "${OVERWRITE_ALL}" == "yes" ]; then - my_input=1 - else - showdiffcmd=$(echo "${diff_command}" | - sed -e "s:%file1:${ofile}:" -e "s:%file2:${file}:") - - if [ "${using_editor}" == 0 ]; then - ( - echo "Showing differences between ${ofile} and ${file}" - ${showdiffcmd} - ) | ${pager} - else - echo "Beginning of differences between ${ofile} and ${file}" - ${showdiffcmd} - echo "End of differences between ${ofile} and ${file}" - fi - if [ -L "${file}" ]; then - echo - echo "-------------------------------------------------------------" - echo "NOTE: File is a symlink to another file. REPLACE recommended." - echo " The original file may simply have moved. Please review." - echo "-------------------------------------------------------------" - echo - fi - echo -n "1) Replace original with update -2) Delete update, keeping original as is -3) Interactively merge original with update -4) Show differences again -Please select from the menu above (-1 to ignore this update): " - read my_input - fi - - case ${my_input} in - 1) echo "Replacing ${ofile} with ${file}" - mv ${mv_opts} ${file} ${ofile} - my_input=-1 - continue - ;; - 2) echo "Deleting ${file}" - rm ${rm_opts} ${file} - continue - ;; - 3) do_merge "${file}" "${ofile}" - my_input=${?} -# [ ${my_input} == 255 ] && my_input=-1 - continue - ;; - 4) continue - ;; - *) continue - ;; - esac - done -} - -function do_merge() { - - local file="${1}" - local ofile="${2}" - local mfile="${2}.merged" - local -i my_input=0 - echo "${file} ${ofile} ${mfile}" - - if [ -e ${mfile} ] ; then - echo "A previous version of the merged file exists, cleaning..." - rm ${rm_opts} ${mfile} - fi - - until (( ${my_input} == -1 )); do - echo "Merging ${file} and ${ofile}" - `echo "${merge_command}" | - sed -e "s:%merged:${mfile}:g" \ - -e "s:%orig:${ofile}:g" \ - -e "s:%new:${file}:g"` - until (( ${my_input} == -1 )); do - echo -n "1) Replace ${ofile} with merged file -2) Show differences between merged file and original -3) Remerge original with update -4) Edit merged file -5) Return to the previous menu -Please select from the menu above (-1 to exit, losing this merge): " - read my_input - case ${my_input} in - 1) echo "Replacing ${ofile} with ${mfile}" - chmod --reference=${ofile} ${mfile} - mv ${mv_opts} ${mfile} ${ofile} - rm ${rm_opts} ${file} - return 255 - ;; - 2) ( echo "Showing differences between ${ofile} and ${mfile}" - `echo "${diff_command}" | \ - sed -e "s:%file1:${ofile}:" \ - -e "s:%file2:${mfile}:"` ) | ${pager} - continue - ;; - 3) break - ;; - 4) ${EDITOR:-nano -w} "${mfile}" - continue - ;; - 5) rm ${rm_opts} ${mfile} - return 0 - ;; - *) continue - ;; - esac - done - done - rm ${rm_opts} ${mfile} - return 255 -} - -function die() { - trap "" term - trap "" kill - echo "Exiting: ${1}" - rm -rf ${TMP} - exit ${2} -} - -# -# Run the script -# -scriptname=$(basename $0) - -trap die term - -export PORTAGE_TMPDIR=$(/usr/lib/portage/bin/portageq envvar PORTAGE_TMPDIR) - -TMP="${PORTAGE_TMPDIR}/$$" -rm -rf ${TMP} 2> /dev/null -mkdir ${TMP} || die "failed mkdir command!" 1 - -# I need the CONFIG_PROTECT value -CONFIG_PROTECT=$(/usr/lib/portage/bin/portageq envvar CONFIG_PROTECT) -CONFIG_PROTECT_MASK=$(/usr/lib/portage/bin/portageq envvar CONFIG_PROTECT_MASK) - -# load etc-config's configuration -EU_AUTOMERGE=`get_config eu_automerge` -rm_opts=`get_config rm_opts` -mv_opts=`get_config mv_opts` -cp_opts=`get_config cp_opts` -pager=`get_config pager` -diff_command=`get_config diff_command` -using_editor=`get_config using_editor` -merge_command=`get_config merge_command` -declare -i mode=`get_config mode` -[ -z ${mode} ] && mode=0 -[ -z "${pager}" ] && pager="cat" - -#echo "rm_opts: $rm_opts, mv_opts: $mv_opts, cp_opts: $cp_opts" -#echo "pager: $pager, diff_command: $diff_command, merge_command: $merge_command" - -if (( ${mode} == 0 )); then - PAR=")" -else - PAR="" -fi - -declare -i count=0 -declare -i input=0 -declare title="Gentoolkit's etc-update tool!" - -scan - -until (( ${input} == -1 )); do - if (( ${count} == 0 )); then - die "Nothing left to do; exiting. :)" 0 - fi - sel_file - if (( ${input} != -1 )); then - do_file - fi -done - -die "User termination!" 0 diff --git a/bin/tests/test_resolver.py b/bin/tests/test_resolver.py deleted file mode 100644 index 5c0ece6e2..000000000 --- a/bin/tests/test_resolver.py +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/python - -from pkgcore.config import load_config -from pkgcore.resolver import plan -from pkgcore.package.atom import atom -from pkgcore.util.lists import flatten, stable_unique -from pkgcore.util.repo_utils import get_raw_repos - -def pop_paired_args(args, arg, msg): - rets = [] - if not isinstance(arg, (tuple, list)): - arg = [arg] - for a in arg: - try: - while True: - i = args.index(a) - args.pop(i) - if len(args) == i: - raise Exception("%s needs to be followed by an arg: %s" % (a, msg)) - rets.append(args.pop(i)) - except ValueError: - pass - return rets - -def pop_arg(args, *arg): - - ret = False - for a in arg: - try: - while True: - args.remove(a) - ret = True - except ValueError: - pass - return ret - - -if __name__ == "__main__": - import sys - args = sys.argv[1:] - - if pop_arg(args, "-h", "--help"): - print "args supported, [-D || --deep], [[-u || --upgrade] | [-m || --max-upgrade]] and -s (system|world) [-d || --debug]" - print "can specify additional atoms when specifying -s, no atoms/sets available, defaults to sys-apps/portage" - sys.exit(1) - if pop_arg(args, "-d", "--debug"): - plan.limiters.add(None) - trigger_pdb = pop_arg(args, "-p", "--pdb") - empty_vdb = pop_arg(args, "-e", "--empty") - upgrade = pop_arg(args, "-u", "--upgrade") - max = pop_arg(args, "-m", "--max-upgrade") - ignore_failures = pop_arg(args, None, "--ignore-failures") - if max and max == upgrade: - print "can only choose max, or upgrade" - sys.exit(1) - if max: - strategy = plan.merge_plan.force_max_version_strategy - elif upgrade: - strategy = plan.merge_plan.prefer_highest_version_strategy - else: - strategy = plan.merge_plan.prefer_reuse_strategy - - deep = bool(pop_arg(args, "-D", "--deep")) - - conf = load_config() - - set_targets = pop_paired_args(args, ["--set", "-s"], "pkg sets to enable") - if set_targets: - print "using pkgset(s): %s" % (", ".join("'%s'" % x.strip() for x in set_targets)) - set_targets = [a for t in set_targets for a in conf.pkgset[t]] - #map(atom, conf.pkgset[l]) for l in set_targets], restriction.base) - - if not args: - if set_targets: - atoms = set_targets - else: - print "resolving sys-apps/portage since no atom supplied" - atoms = [atom("sys-apps/portage")] - else: - atoms = [atom(x) for x in args] + set_targets - - atoms = stable_unique(atoms) - domain = conf.domain["livefs domain"] - vdb, repo = domain.vdb[0], domain.repos[0] - resolver = plan.merge_plan(vdb, repo, pkg_selection_strategy=strategy, verify_vdb=deep) - ret = True - failures = [] - import time - start_time = time.time() - for restrict in atoms: - print "\ncalling resolve for %s..." % restrict - ret = resolver.add_atom(restrict) - if ret: - print "ret was",ret - print "resolution failed" - failures.append(restrict) - if not ignore_failures: - break - if failures: - print "\nfailures encountered-" - for restrict in failures: - print "failed '%s'\npotentials-" % restrict - match_count = 0 - for r in get_raw_repos(repo): - l = r.match(restrict) - if l: - print "repo %s: [ %s ]" % (r, ", ".join(str(x) for x in l)) - match_count += len(l) - if not match_count: - print "no matches found in %s" % repo - print - if not ignore_failures: - sys.exit(2) - - print "\nbuildplan" - for op, pkgs in resolver.state.iter_pkg_ops(): - print "%s %s" % (op.ljust(8), ", ".join(str(y) for y in reversed(pkgs))) - print "result was successfull, 'parently- took %.2f seconds" % (time.time() - start_time) - diff --git a/bin/utilities/clone_cache.py b/bin/utilities/clone_cache.py deleted file mode 100755 index 30e9b60e5..000000000 --- a/bin/utilities/clone_cache.py +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/python -# Copyright: 2005-2006 Brian Harring <ferringb@gmail.com> -# License: GPL2 - -import pkgcore.config, sys, time - -if __name__ == "__main__": - verbose = 0 - if len(sys.argv) not in (3,4): - print "I need 2 args, cache label to read from, cache label to write to, with -v optional for verbose" - elif len(sys.argv) == 4: - verbose = 1 - c=pkgcore.config.load_config() - try: cache1 = c.cache[sys.argv[1]] - except KeyError: - print "read cache label '%s' isn't defined." % sys.argv[1] - sys.exit(1) - try: cache2 = c.cache[sys.argv[2]] - except KeyError: - print "write cache label '%s' isn't defined." % sys.argv[2] - sys.exit(1) - - if cache2.readonly: - print "can't update cache label '%s', it's marked readonly." % sys.argv[2] - sys.exit(2) - if not cache2.autocommits: - cache2.sync_rate = 1000 - if verbose: print "grabbing cache2's existing keys" - valid = set() - start = time.time() - if verbose: - for k,v in cache1.iteritems(): - print "updating %s" % k - cache2[k] = v - valid.add(k) - else: - for k,v in cache1.iteritems(): - cache2[k] = v - valid.add(k) - - for x in cache2.iterkeys(): - if not x in valid: - if verbose: print "deleting %s" % x - del cache2[x] - - if verbose: - print "took %i seconds" % int(time.time() - start) diff --git a/bin/utilities/hotshot-profile.py b/bin/utilities/hotshot-profile.py deleted file mode 100755 index 11ed90cad..000000000 --- a/bin/utilities/hotshot-profile.py +++ /dev/null @@ -1,34 +0,0 @@ -#!/usr/bin/python -from optparse import OptionParser -import sys, os -import hotshot - -# When invoked as main program, invoke the profiler on a script -if __name__ == '__main__': - usage = "hotshot.py [-o output_file_path] [-s sort] scriptfile [arg] ..." - if not sys.argv[1:]: - print "Usage: ", usage - sys.exit(2) - - class ProfileParser(OptionParser): - def __init__(self, usage): - OptionParser.__init__(self) - self.usage = usage - - parser = ProfileParser(usage) - parser.allow_interspersed_args = False - parser.add_option('-o', '--outfile', dest="outfile", - help="Save stats to <outfile>", default=None) - parser.add_option('-s', '--sort', dest="sort", - help="Sort order when printing to stdout, based on pstats.Stats class", default=-1) - - (options, args) = parser.parse_args() - sys.argv[:] = args - - if (len(sys.argv) > 0): - sys.path.insert(0, os.path.dirname(sys.argv[0])) - prof = hotshot.Profile(options.outfile) - prof.run('execfile(%r)' % (sys.argv[0],)) #, options.outfile, options.sort) - prof.close() - else: - print "Usage: ", usage diff --git a/bin/utilities/pebuild.py b/bin/utilities/pebuild.py deleted file mode 100755 index fbe22fe77..000000000 --- a/bin/utilities/pebuild.py +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/python -import sys -if len(sys.argv) <= 2: - print "need atom, phases" - sys.exit(1) -pkg = sys.argv[1] -phases = sys.argv[2:] -from pkgcore.config import load_config -p=load_config().domain['livefs domain'].repos[0][pkg]; -b=p.build(); -phase_funcs = [getattr(b, x) for x in phases] -for phase, f in zip(phases, phase_funcs): - print "\nexecuting phase %s" % phase - f() diff --git a/bin/utilities/powner.py b/bin/utilities/powner.py deleted file mode 100755 index 8c35813d9..000000000 --- a/bin/utilities/powner.py +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/python - -import sys, time -from pkgcore.restrictions import packages, values -from pkgcore.config import load_config -from pkgcore.fs.util import normpath - -def grab_arg(arg, args): - val = False - try: - while True: - args.remove(arg) - val = True - except ValueError: - pass - return val - -if __name__ == "__main__": - a = sys.argv[1:] - if grab_arg("--help", a) or grab_arg("-h", a) or not a: - print "need at least one arg, file to find the owner of" - print "default matching mode is return after first match, however if [ --all || -a ] is specified" - print "all owners are return" - print "Multiple args are further restrictions on a match- pkg must own all of the files" - sys.exit(1) - all = grab_arg("-a", a) or grab_arg("--all", a) - repo = load_config().domain["livefs domain"].vdb[0] - restrict = packages.PackageRestriction("contents", values.ContainmentMatch( - *[normpath(x) for x in a])) - start_time = time.time() - count = 0 - print "query- %s, returning all matches? %s" % (restrict, all) - for pkg in repo.itermatch(restrict): - print "pkg: %s" % (pkg) - count += 1 - if not all: - break - print "found %i matches in %.2f seconds" % (count, time.time() - start_time) - if count: - sys.exit(0) - sys.exit(1) diff --git a/bin/utilities/pquery b/bin/utilities/pquery deleted file mode 100755 index 908402afe..000000000 --- a/bin/utilities/pquery +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/python -# Copyright: 2005-2006 Brian Harring <ferringb@gmail.com> -# License: GPL2 - -import os -from pkgcore.package.atom import atom -from pkgcore.restrictions import packages, values, boolean -from pkgcore.util.currying import pre_curry -from pkgcore.util import repo_utils, commandline - -def grab_arg(arg, args): - val = False - try: - while True: - args.remove(arg) - val = True - except ValueError: - pass - return val - -if __name__ == "__main__": - import sys, pkgcore.config - a = sys.argv[1:] - raw = grab_arg("--raw", a) - force_vdb = grab_arg("--vdb", a) - force_virtuals = grab_arg("--virtuals-only", a) - disable_virtuals = grab_arg("--disable-virtuals", a) - - if "--atomstr" in a: - def atomstr(a, l=False): - if l: - l = iter(a) - else: - l = [a] - s = [] - for x in l: - if isinstance(x, atom): - s.append(x.atom_str()) - else: - s.append(str(x)) - return ' '.join(s) - del a[a.index("--atomstr")] - else: - atomstr = lambda x, y=False: str(x) - - if len(a) == 0 or "--help" in a or (force_virtuals and disable_virtuals) or ("--max" in a and "--min" in a): - print "supported args: [--raw] [--virtuals-only || --disable-virtuals ] [--vdb] [ --max || --min ] [--atomstr] [atom [ --attr attr ] ]*" - sys.exit(1) - conf = pkgcore.config.load_config() - if len(conf.domain) != 1: - print "sorry, I don't know about domains aside from using the only one I find" - sys.exit(2) - domain = conf.domain.items()[0][1] - repos = [] - if force_vdb: - repos = conf.domain["livefs domain"].vdb - else: - repos = conf.domain["livefs domain"].repos - if raw: - repos = repo_utils.get_raw_repos(repos) - if force_virtuals: - repos = repo_utils.get_virtual_repos(repo_utils.get_raw_repos(repos)) - elif disable_virtuals: - repos = repo_utils.get_virtual_repos(repo_utils.get_raw_repos(repos), False) - - atoms = [] - attr = [] - while "--attr" in a: - i = a.index("--attr") - a.pop(i) - try: - attr.append(a.pop(i)) - except IndexError: - print "need an arg to --attr!" - sys.exit(1) - - results_filter = lambda a: a - def less_pissy_builtins(func, *args, **kwds): - try: - return func(*args, **kwds) - except ValueError: - return [] - for s, f in (("--min", min), ("--max", max)): - func = pre_curry(lambda inner_func,a: [inner_func(a)], - pre_curry(less_pissy_builtins, f)) - if grab_arg(s, a): - results_filter = func - - atoms = map(commandline.generate_restriction, a) - - if len(atoms) > 1: - atoms = packages.OrRestriction(*atoms) - for a in atoms: - for repo in repos: - for pkg in results_filter(repo.itermatch(a, sorter=pre_curry(sorted, reverse=True))): - try: print str(atomstr(pkg)) - except AttributeError: - print str(pkg) - for x in attr: - try: print "attr '%s' == %s" % (x, atomstr(getattr(pkg, x), True)) - except AttributeError, ae: - print "attr '%s' exception: %s" % (x, ae) - print - - sys.exit(0) diff --git a/bin/utilities/regen.py b/bin/utilities/regen.py deleted file mode 100755 index 9bae8bfd8..000000000 --- a/bin/utilities/regen.py +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/python -import threading, Queue -import sys -import time -from pkgcore.config import load_config - -def regen_iter(iterable): - for x in iterable: - try: - x.keywords - except RuntimeError: - raise - except Exception, e: - print "caught exception %s for %s" % (e, x) - -def reclaim_threads(threads): - for x in threads: - try: - x.join() - except RuntimeError: - raise - except Exception, e: - print "caught exception %s reclaiming thread" % e - - -if __name__ == "__main__": - if len(sys.argv) > 2: - print "need a single optional arg, # of threads to spawn" - sys.exit(1) - elif len(sys.argv) == 2: - try: - thread_count = int(sys.argv[1]) - if thread_count < 1: - raise ValueError - except ValueError: - print "arg must be an integer, and greater then 0" - sys.exit(1) - else: - thread_count = 1 - repo = load_config().repo["rsync repo"] - start_time = time.time() - count = 0 - if thread_count == 1: - def passthru(iterable): - global count - for x in iterable: - count += 1 - yield x - regen_iter(passthru(repo)) - else: - queue = Queue.Queue(thread_count*2) - kill = threading.Event() - kill.clear() - def iter_queue(kill, qlist, timeout=0.25): - while not kill.isSet(): - try: - yield qlist.get(timeout=timeout) - except Queue.Empty: - continue - regen_threads = [threading.Thread(target=regen_iter, args=(iter_queue(kill, queue),)) for x in xrange(thread_count)] - print "starting %d thread" % thread_count - try: - for x in regen_threads: - x.start() - print "started" - # now we feed the queue. - for pkg in repo: - count += 1 - queue.put(pkg) - except Exception: - kill.set() - reclaim_threads(regen_threads) - raise - - # by now, queue is fed. reliable for our uses since the queue is only subtracted from. - while not queue.empty(): - time.sleep(.5) - kill.set() - reclaim_threads(regen_threads) - assert queue.empty() - print "finished %d nodes in in %.2f seconds" % (count, time.time() - start_time) diff --git a/bin/utilities/register_plugin.py b/bin/utilities/register_plugin.py deleted file mode 100755 index 0a2219dec..000000000 --- a/bin/utilities/register_plugin.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/python -# Copyright: 2005-2006 Brian Harring <ferringb@gmail.com> -# License: GPL2 - -import pkgcore.plugins -from pkgcore.util.modules import load_attribute -import sys - -def set(ptype, magic, version, namespace): - load_attribute(namespace) - # loaded. - pkgcore.plugins.register(ptype, magic, version, namespace, replace=True) - -def cleanse(ptype, magic, version): - pkgcore.plugins.deregister(ptype, magic, version) - -def get_list(ptype=None): - return pkgcore.plugins.query_plugins(ptype) - -if __name__ == "__main__": - args = sys.argv[1:] - ret = 0 - if "-l" in args: - args.pop(args.index("-l")) - if len(args) == 0: - args = [None] - for x in args: - print "querying %s" % str(x) - try: - i = get_list(x).items() - if x is not None: - i = [(x, dict(i))] - for k,v in i: - print - try: - l = max(len(y) for y in v.keys()) + 4 - print "%s => " % k - for y in v.keys(): - print "%s: %s, %s" % (y.rjust(l), v[y]["namespace"], v[y]["version"]) - except ValueError: - print "%s => no plugins found" % k - print - except Exception, e: - print "caught exception %s querying" % e - ret = 1 - elif "-s" in args: - args.pop(args.index("-s")) - if len(args) != 4: - print "need 4 args- ptype magic version namespace" - sys.exit(1) - print "registering namespace(%s) as type(%s) constant(%s), ver(%s)" % (args[3], args[0], args[1], args[2]) - set(*args) - elif "-r" in args: - args.pop(args.index("-r")) - if len(args) != 3: - print "need 3 args- ptype magic version" - sys.exit(1) - print "deregistering type(%s) constant(%s) ver(%s)" % (args[0], args[1], args[2]) - cleanse(*args) - elif "-p" in args: - args.pop(args.index("-p")) - if len(args) != 0: - print "no args allowed currently" - sys.exit(1) - for ptype, v in get_list(None).iteritems(): - for magic, vals in v.iteritems(): - print "%s -s %s %s %s %s" % (sys.argv[0], ptype, magic, vals["version"], vals["namespace"]) - else: - if "--help" not in args: - print "command required" - print - print "options available: -s, -r, -l" - print "-s ptype magic ver namespace" - print "-r ptype magic ver" - print "-l [ptype]" - print - if "--help" not in args: - sys.exit(1) - sys.exit(0) |