summaryrefslogtreecommitdiffhomepage
path: root/subr/ex_pkg_env.subr
diff options
context:
space:
mode:
authorLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2020-03-13 15:33:05 +0000
committerLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2020-03-13 15:33:05 +0000
commit60fba634600d0e20726c02d88735cc3d71ff0103 (patch)
treed42d7e13716ccae6e326d3bec8b30fbd3d38b612 /subr/ex_pkg_env.subr
parent4e5750f7ba7c84d09f0e8a60d92a7fc3e7ca410f (diff)
downloadmidipix_build-60fba634600d0e20726c02d88735cc3d71ff0103.tar.bz2
midipix_build-60fba634600d0e20726c02d88735cc3d71ff0103.tar.xz
Implements ./pkgtool.sh -[irt] options.
etc/{README.md,pkgtool.usage}: updated. subr/ex_pkg.subr:ex_pkg_{find_package,get_packages}(): initial implementation. subr/ex_pkg.subr:ex_pkg_unfold_{,r}depends(): split from ex_pkg_expand_packages(). subr/ex_pkg{,_dispatch}.subr: removes ${EX_PKG_COMPLETE} scoped global. subr/ex_pkg_dispatch.subr:exp_pkg_dispatch_expand_packages(): split from subr/ex_pkg.subr. subr/rtl_list.subr:rtl_lsort(): initial implementation.
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;