summaryrefslogtreecommitdiffhomepage
path: root/subr/ex_pkg_vars.subr
diff options
context:
space:
mode:
Diffstat (limited to 'subr/ex_pkg_vars.subr')
-rw-r--r--subr/ex_pkg_vars.subr39
1 files changed, 39 insertions, 0 deletions
diff --git a/subr/ex_pkg_vars.subr b/subr/ex_pkg_vars.subr
new file mode 100644
index 00000000..07c2cacd
--- /dev/null
+++ b/subr/ex_pkg_vars.subr
@@ -0,0 +1,39 @@
+#
+# set -o errexit -o noglob are assumed.
+#
+
+exp_pkg_vars() {
+ local _pkg_name="${1}" _pkg_name_uc _build_uc _vname_dst _vname_src;
+ _pkg_name_uc="$(ex_toupper "${_pkg_name}")";
+ _build_uc="$(ex_toupper "${BUILD}")";
+ for _vname_dst in PREFIX ${PKG_BUILD_VARS}; do
+ for _vname_src in \
+ "DEFAULT_${_vname_dst}" \
+ "${BUILD_TARGET}_${_vname_dst}" \
+ "PKG_${_pkg_name_uc}_${_vname_dst}" \
+ "PKG_${_pkg_name_uc}_${_vname_dst}_${_build_uc}"; do
+ if [ -n "$(ex_get_var_unsafe "${_vname_src}")" ]; then
+ ex_set_var_unsafe "PKG_${_vname_dst}" "$(ex_get_var_unsafe ${_vname_src})";
+ if ! ex_lmatch "${PKG_ENV_VARS}" " " "${_vname_src}"; then
+ PKG_ENV_VARS="${PKG_ENV_VARS:+${PKG_ENV_VARS} }${_vname_src}";
+ fi;
+ fi;
+ done;
+ done;
+};
+
+ex_pkg_vars() {
+ local _vars_path;
+ for _vars_path in vars/${PKG_NAME}.vars; do
+ if [ -e "${_vars_path}" ]\
+ || [ -L "${_vars_path}" ]; then
+ . "${_vars_path}";
+ fi;
+ done;
+ if [ -n "${PKG_NAME_PARENT}" ]; then
+ exp_pkg_vars "${PKG_NAME_PARENT}";
+ fi;
+ exp_pkg_vars "${PKG_NAME}";
+};
+
+# vim:filetype=sh