summaryrefslogtreecommitdiffhomepage
path: root/subr/ex_pkg_env.subr
diff options
context:
space:
mode:
Diffstat (limited to 'subr/ex_pkg_env.subr')
-rw-r--r--subr/ex_pkg_env.subr25
1 files changed, 15 insertions, 10 deletions
diff --git a/subr/ex_pkg_env.subr b/subr/ex_pkg_env.subr
index b4e1810f..edb5e8d1 100644
--- a/subr/ex_pkg_env.subr
+++ b/subr/ex_pkg_env.subr
@@ -40,6 +40,7 @@ exp_pkg_env_defaults() {
# exp_pkg_env_set() - set package variables for single named package
# @_build_vars_default: list of default build variables
# @_group_name: build group name
+# @_nounset: don't clear package variable namespace
# @_pkg_name: single package name
#
# Sets package variables from either defaults, defaults specific to build type,
@@ -50,27 +51,30 @@ exp_pkg_env_defaults() {
# Return: zero (0) on success, non-zero (>0) on failure
#
exp_pkg_env_set() {
- local _build_vars_default="${1}" _group_name="${2}" _pkg_name="${3}" _var_prefixes="" _vars_set="" _vname="";
+ local _build_vars_default="${1}" _group_name="${2}" _nounset="${3}" \
+ _pkg_name="${4}" _var_prefixes="" _vars_set="" _vname="";
rtl_set_vars _vars_set BUILD_TYPE "DEFAULT ${_group_name} PKG_${_pkg_name}";
rtl_set_vars _vars_set INHERIT_FROM "PKG_${_pkg_name}";
_var_prefixes="$(rtl_toupper "DEFAULT DEFAULT_${PKG_BUILD_TYPE} ${_group_name}")";
for _vname in $(rtl_lfilter "${_build_vars_default}" BUILD_TYPE); do
if [ -n "${PKG_INHERIT_FROM}" ]; then
- rtl_set_vars _vars_set "${_vname}" \
- "$(rtl_lconcat "${_var_prefixes}" \
+ rtl_set_vars _vars_set "${_vname}" \
+ "$(rtl_lconcat "${_var_prefixes}" \
"$(rtl_toupper "PKG_${PKG_INHERIT_FROM} PKG_${_pkg_name}")")"
else
- rtl_set_vars _vars_set "${_vname}" \
- "$(rtl_lconcat "${_var_prefixes}" \
+ rtl_set_vars _vars_set "${_vname}" \
+ "$(rtl_lconcat "${_var_prefixes}" \
"$(rtl_toupper "PKG_${_pkg_name}")")";
fi;
done;
rtl_push_IFS :; for _vname in ${PKG_ENV_VARS_EXTRA}; do
export "${_vname}";
done; rtl_pop_IFS;
- rtl_unset_vars $(rtl_lfilter \
- "$(set | sed -ne '/^PKG_[^=]*=/s/=.*$//p')" \
- "${_vars_set}");
+ if [ "${_nounset:-0}" -eq 0 ]; then
+ rtl_unset_vars $(rtl_lfilter \
+ "$(set | sed -ne '/^PKG_[^=]*=/s/=.*$//p')" \
+ "${_vars_set}");
+ fi;
};
#
@@ -78,6 +82,7 @@ exp_pkg_env_set() {
# @_build_steps_default: list of default build steps
# @_build_vars_default: list of default build variables
# @_group_name: build group name
+# @_nounset: don't clear package variable namespace
# @_pkg_name: single package name
# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL
# @_workdir: pathname to build-specific temporary directory
@@ -86,9 +91,9 @@ exp_pkg_env_set() {
#
ex_pkg_env() {
local _build_steps_default="${1}" _build_vars_default="${2}" _group_name="${3}" \
- _pkg_name="${4}" _restart_at="${5}" _workdir="${6}" _vname="";
+ _nounset="${4}" _pkg_name="${5}" _restart_at="${6}" _workdir="${7}" _vname="";
rtl_fileop source_opt "vars/${_pkg_name}.vars" "${_group_name}/${_pkg_name}.${_group_name}";
- if ! exp_pkg_env_set "${_build_vars_default}" "${_group_name}" "${_pkg_name}"\
+ if ! exp_pkg_env_set "${_build_vars_default}" "${_group_name}" "${_nounset}" "${_pkg_name}"\
|| ! exp_pkg_env_defaults "${_build_steps_default}" "${_pkg_name}" "${_workdir}"; then
return 1;
fi;