aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArfrever Frehtes Taifersar Arahesis <Arfrever@Gentoo.Org>2011-05-01 16:50:30 +0200
committerArfrever Frehtes Taifersar Arahesis <Arfrever@Gentoo.Org>2011-05-01 16:50:30 +0200
commit693681562c7795473efd0caaa05b8d52b28f75db (patch)
tree6e5f9b15a2e1256b9eb2a03a57830e98f07c7f06
parentruntests.sh: propagate arguments to runTests (diff)
downloadportage-693681562c7795473efd0caaa05b8d52b28f75db.tar.gz
portage-693681562c7795473efd0caaa05b8d52b28f75db.tar.bz2
portage-693681562c7795473efd0caaa05b8d52b28f75db.zip
Support multiple arguments in set_unless_changed() and unset_unless_changed().
Use VARIABLE=VALUE syntax for arguments of set_unless_changed().
-rwxr-xr-xbin/ebuild.sh43
-rw-r--r--man/portage.54
2 files changed, 27 insertions, 20 deletions
diff --git a/bin/ebuild.sh b/bin/ebuild.sh
index e652cb55b..6593755cd 100755
--- a/bin/ebuild.sh
+++ b/bin/ebuild.sh
@@ -1639,32 +1639,39 @@ _ebuild_phase_funcs() {
esac
}
-# Set given variable unless this variable has been already set (e.g. during emerge
-# invocation) to a value different than value set in make.conf.
+# 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 [[ $# -ne 2 ]]; then
- die "${FUNCNAME}() requires 2 arguments: VARIABLE VALUE"
+ if [[ $# -lt 1 ]]; then
+ die "${FUNCNAME}() requires at least 1 argument: VARIABLE=VALUE"
fi
- local variable="$1" value="$2"
-
- if eval "[[ \${${variable}} == \$(env -u ${variable} portageq envvar ${variable}) ]]"; then
- eval "${variable}=\"${value}\""
- fi
+ local argument value variable
+ for argument in "$@"; do
+ if [[ ${argument} != *=* ]]; then
+ die "${FUNCNAME}(): Argument '${argument}' has incorrect syntax"
+ fi
+ variable="${argument%%=*}"
+ value="${argument#*=}"
+ if eval "[[ \${${variable}} == \$(env -u ${variable} portageq envvar ${variable}) ]]"; then
+ eval "${variable}=\"${value}\""
+ fi
+ done
}
-# Unset given variable unless this variable has been set (e.g. during emerge
-# invocation) to a value different than value set in make.conf.
+# 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 [[ $# -ne 1 ]]; then
- die "${FUNCNAME}() requires 1 argument: VARIABLE"
+ if [[ $# -lt 1 ]]; then
+ die "${FUNCNAME}() requires at least 1 argument: VARIABLE"
fi
- local variable="$1"
-
- if eval "[[ \${${variable}} == \$(env -u ${variable} portageq envvar ${variable}) ]]"; then
- unset ${variable}
- fi
+ local variable
+ for variable in "$@"; do
+ if eval "[[ \${${variable}} == \$(env -u ${variable} portageq envvar ${variable}) ]]"; then
+ unset ${variable}
+ fi
+ done
}
PORTAGE_BASHRCS_SOURCED=0
diff --git a/man/portage.5 b/man/portage.5
index a210e8d2d..ece47e5a4 100644
--- a/man/portage.5
+++ b/man/portage.5
@@ -679,12 +679,12 @@ set_unless_changed and unset_unless_changed functions can be used to set or
unset given variables only if these variable have not been set to values
different than values set in make.conf. This functionality can be useful for
temporary overriding of these variables during emerge invocation. Variables
-set in the usual VARIABLE=VALUE style will unconditionally override variables
+set without using set_unless_changed will unconditionally override variables
set during emerge invocation.
.I Syntax:
.nf
-set_unless_changed VARIABLE VALUE
+set_unless_changed VARIABLE=VALUE
unset_unless_changed VALUE
.fi