From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from pigeon.gentoo.org ([208.92.234.80] helo=lists.gentoo.org) by finch.gentoo.org with esmtp (Exim 4.60) (envelope-from ) id 1R2tdf-0006jP-Gq for garchives@archives.gentoo.org; Sun, 11 Sep 2011 23:40:39 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 084F021C04D; Sun, 11 Sep 2011 23:40:31 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id AEBC521C04D for ; Sun, 11 Sep 2011 23:40:31 +0000 (UTC) Received: from pelican.gentoo.org (unknown [66.219.59.40]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 237221B400E for ; Sun, 11 Sep 2011 23:40:31 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by pelican.gentoo.org (Postfix) with ESMTP id 2BCE180042 for ; Sun, 11 Sep 2011 23:40:30 +0000 (UTC) From: "Zac Medico" To: gentoo-commits@lists.gentoo.org Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Zac Medico" Message-ID: <443a516e1a8e2703bdd25a4a89f385969128d3b3.zmedico@gentoo> Subject: [gentoo-commits] proj/portage:master commit in: bin/ X-VCS-Repository: proj/portage X-VCS-Files: bin/bashrc-functions.sh bin/ebuild.sh X-VCS-Directories: bin/ X-VCS-Committer: zmedico X-VCS-Committer-Name: Zac Medico X-VCS-Revision: 443a516e1a8e2703bdd25a4a89f385969128d3b3 Date: Sun, 11 Sep 2011 23:40:30 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: quoted-printable X-Archives-Salt: X-Archives-Hash: eab32a79986eedf499a12c9f17bdc20b commit: 443a516e1a8e2703bdd25a4a89f385969128d3b3 Author: Zac Medico gentoo org> AuthorDate: Sun Sep 11 23:39:10 2011 +0000 Commit: Zac Medico gentoo org> CommitDate: Sun Sep 11 23:39:10 2011 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=3Dproj/portage.git;a= =3Dcommit;h=3D443a516e ebuild.sh: split out bashrc-functions.sh --- bin/bashrc-functions.sh | 89 +++++++++++++++++++++++++++++++++++++++++= ++ bin/ebuild.sh | 97 ++---------------------------------------= ----- 2 files changed, 94 insertions(+), 92 deletions(-) diff --git a/bin/bashrc-functions.sh b/bin/bashrc-functions.sh new file mode 100644 index 0000000..91ff6d7 --- /dev/null +++ b/bin/bashrc-functions.sh @@ -0,0 +1,89 @@ +#!/bin/bash +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +portageq() { + PYTHONPATH=3D${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} \ + "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/portageq" "$@= " +} + +register_die_hook() { + local x + for x in $* ; do + has $x $EBUILD_DEATH_HOOKS || \ + export EBUILD_DEATH_HOOKS=3D"$EBUILD_DEATH_HOOKS $x" + done +} + +register_success_hook() { + local x + for x in $* ; do + has $x $EBUILD_SUCCESS_HOOKS || \ + export EBUILD_SUCCESS_HOOKS=3D"$EBUILD_SUCCESS_HOOKS $x" + done +} + +strip_duplicate_slashes() { + if [[ -n $1 ]] ; then + local removed=3D$1 + while [[ ${removed} =3D=3D *//* ]] ; do + removed=3D${removed//\/\///} + done + echo ${removed} + fi +} + +# this is a function for removing any directory matching a passed in pat= tern from +# PATH +remove_path_entry() { + save_IFS + IFS=3D":" + stripped_path=3D"${PATH}" + while [ -n "$1" ]; do + cur_path=3D"" + for p in ${stripped_path}; do + if [ "${p/${1}}" =3D=3D "${p}" ]; then + cur_path=3D"${cur_path}:${p}" + fi + done + stripped_path=3D"${cur_path#:*}" + shift + done + restore_IFS + PATH=3D"${stripped_path}" +} + +# Set given variables unless these variable have been already set (e.g. = during emerge +# invocation) to values different than values set in make.conf. +set_unless_changed() { + if [[ $# -lt 1 ]]; then + die "${FUNCNAME}() requires at least 1 argument: VARIABLE=3DVALUE" + fi + + local argument value variable + for argument in "$@"; do + if [[ ${argument} !=3D *=3D* ]]; then + die "${FUNCNAME}(): Argument '${argument}' has incorrect syntax" + fi + variable=3D"${argument%%=3D*}" + value=3D"${argument#*=3D}" + if eval "[[ \${${variable}} =3D=3D \$(env -u ${variable} portageq envv= ar ${variable}) ]]"; then + eval "${variable}=3D\"\${value}\"" + fi + done +} + +# Unset given variables unless these variable have been set (e.g. during= emerge +# invocation) to values different than values set in make.conf. +unset_unless_changed() { + if [[ $# -lt 1 ]]; then + die "${FUNCNAME}() requires at least 1 argument: VARIABLE" + fi + + local variable + for variable in "$@"; do + if eval "[[ \${${variable}} =3D=3D \$(env -u ${variable} portageq envv= ar ${variable}) ]]"; then + unset ${variable} + fi + done +} diff --git a/bin/ebuild.sh b/bin/ebuild.sh index 832b39d..a781c2e 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -119,31 +119,6 @@ esyslog() { return 0 } =20 -portageq() { - if [ "${EBUILD_PHASE}" =3D=3D "depend" ]; then - die "portageq calls are not allowed in the global scope" - fi - - PYTHONPATH=3D${PORTAGE_PYM_PATH}${PYTHONPATH:+:}${PYTHONPATH} \ - "${PORTAGE_PYTHON:-/usr/bin/python}" "${PORTAGE_BIN_PATH}/portageq" "$@= " -} - -register_die_hook() { - local x - for x in $* ; do - has $x $EBUILD_DEATH_HOOKS || \ - export EBUILD_DEATH_HOOKS=3D"$EBUILD_DEATH_HOOKS $x" - done -} - -register_success_hook() { - local x - for x in $* ; do - has $x $EBUILD_SUCCESS_HOOKS || \ - export EBUILD_SUCCESS_HOOKS=3D"$EBUILD_SUCCESS_HOOKS $x" - done -} - # Ensure that $PWD is sane whenever possible, to protect against # exploitation of insecure search path for python -c in ebuilds. # See bug #239560. @@ -156,16 +131,6 @@ fi #(not secretive, but not stupid) umask 022 =20 -strip_duplicate_slashes() { - if [[ -n $1 ]] ; then - local removed=3D$1 - while [[ ${removed} =3D=3D *//* ]] ; do - removed=3D${removed//\/\///} - done - echo ${removed} - fi -} - # debug-print() gets called from many places with verbose status informa= tion 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. @@ -354,61 +319,6 @@ EXPORT_FUNCTIONS() { eval $__export_funcs_var+=3D\" $*\" } =20 -# this is a function for removing any directory matching a passed in pat= tern from -# PATH -remove_path_entry() { - save_IFS - IFS=3D":" - stripped_path=3D"${PATH}" - while [ -n "$1" ]; do - cur_path=3D"" - for p in ${stripped_path}; do - if [ "${p/${1}}" =3D=3D "${p}" ]; then - cur_path=3D"${cur_path}:${p}" - fi - done - stripped_path=3D"${cur_path#:*}" - shift - done - restore_IFS - PATH=3D"${stripped_path}" -} - -# Set given variables unless these variable have been already set (e.g. = during emerge -# invocation) to values different than values set in make.conf. -set_unless_changed() { - if [[ $# -lt 1 ]]; then - die "${FUNCNAME}() requires at least 1 argument: VARIABLE=3DVALUE" - fi - - local argument value variable - for argument in "$@"; do - if [[ ${argument} !=3D *=3D* ]]; then - die "${FUNCNAME}(): Argument '${argument}' has incorrect syntax" - fi - variable=3D"${argument%%=3D*}" - value=3D"${argument#*=3D}" - if eval "[[ \${${variable}} =3D=3D \$(env -u ${variable} portageq envv= ar ${variable}) ]]"; then - eval "${variable}=3D\"\${value}\"" - fi - done -} - -# Unset given variables unless these variable have been set (e.g. during= emerge -# invocation) to values different than values set in make.conf. -unset_unless_changed() { - if [[ $# -lt 1 ]]; then - die "${FUNCNAME}() requires at least 1 argument: VARIABLE" - fi - - local variable - for variable in "$@"; do - if eval "[[ \${${variable}} =3D=3D \$(env -u ${variable} portageq envv= ar ${variable}) ]]"; then - unset ${variable} - fi - done -} - PORTAGE_BASHRCS_SOURCED=3D0 =20 # @FUNCTION: source_all_bashrcs @@ -715,17 +625,20 @@ trap 'exit 1' SIGTERM if [[ $EBUILD_PHASE !=3D depend ]] ; then source "${PORTAGE_BIN_PATH}/phase-functions.sh" source "${PORTAGE_BIN_PATH}/phase-helpers.sh" + source "${PORTAGE_BIN_PATH}/bashrc-functions.sh" else # These dummy functions are for things that are likely to be called # in global scope, even though they are completely useless during # the "depend" phase. for x in diropts docompress exeopts insopts \ - keepdir libopts use useq usev use_with use_enable ; do + keepdir libopts register_die_hook register_success_hook \ + remove_path_entry set_unless_changed strip_duplicate_slashes \ + unset_unless_changed use useq usev use_with use_enable ; do eval "${x}() { : ; }" done # These functions die because calls to them during the "depend" phase # are considered to be severe QA violations. - for x in best_version has_version ; do + for x in best_version has_version portageq ; do eval "${x}() { die \"\${FUNCNAME} calls are not allowed in global scop= e\"; }" done unset x