diff options
author | Lucio Andrés Illanes Albornoz <lucio@lucioillanes.de> | 2020-03-13 15:33:05 +0000 |
---|---|---|
committer | Lucio Andrés Illanes Albornoz <lucio@lucioillanes.de> | 2020-03-13 15:33:05 +0000 |
commit | 60fba634600d0e20726c02d88735cc3d71ff0103 (patch) | |
tree | d42d7e13716ccae6e326d3bec8b30fbd3d38b612 /subr/ex_pkg_env.subr | |
parent | 4e5750f7ba7c84d09f0e8a60d92a7fc3e7ca410f (diff) | |
download | midipix_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.subr | 25 |
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; |