summaryrefslogtreecommitdiffhomepage
path: root/subr.ex
diff options
context:
space:
mode:
authorLucía Andrea Illanes Albornoz <lucia@luciaillanes.de>2023-03-13 10:03:34 +0100
committerLucía Andrea Illanes Albornoz <lucia@luciaillanes.de>2023-03-13 10:03:34 +0100
commitfd38dc025f5d31890abbf3d48c597114203b1421 (patch)
tree082236b4fa89abbdf2b55a65c181b05d4d3beb2d /subr.ex
parent8de17ea56956a074de18bb9cdbea3178b28dc8f8 (diff)
downloadmidipix_build-fd38dc025f5d31890abbf3d48c597114203b1421.tar.bz2
midipix_build-fd38dc025f5d31890abbf3d48c597114203b1421.tar.xz
Move patches & vars pathname defaults handling into subr.ex/ex_pkg.subr.
Diffstat (limited to 'subr.ex')
-rw-r--r--subr.ex/ex_pkg.subr67
-rw-r--r--subr.ex/ex_pkg_env.subr14
2 files changed, 77 insertions, 4 deletions
diff --git a/subr.ex/ex_pkg.subr b/subr.ex/ex_pkg.subr
index e3e90574..2babb92a 100644
--- a/subr.ex/ex_pkg.subr
+++ b/subr.ex/ex_pkg.subr
@@ -78,6 +78,73 @@ ex_pkg_find_package() {
};
#
+# ex_pkg_get_default() - get single package default value
+# @_rdefault: reference to out variable of default value or "" on end of list
+# @_pkg_name: single package name
+# @_pkg_version: single package version
+# @_ldefault: SP-separated list of default value names (any of: patches, patches_chainport, patches_pre, vars_file)
+# @_default_idx: one-based single default value index
+#
+# Return: zero (0) on success, non-zero (>0) on invalid default value name or unknown package.
+#
+ex_pkg_get_default() {
+ local _epgd_rdefault="${1#\$}" _epgd_pkg_name="${2}" _epgd_pkg_version="${3}" \
+ _epgd_ldefault="${4}" _epgd_default_idx="${5}" \
+ _epgd_default="" _epgd_patch_fname="" _epgd_pkg_name_full="" \
+ _epgd_pkg_patches_extra="" _epgd_rc=0;
+
+ set --;
+ _epgd_pkg_name_full="${_epgd_pkg_name}${_epgd_pkg_version:+-${_epgd_pkg_version}}";
+ _epgd_rc=0;
+
+ for _epgd_default in ${_epgd_ldefault}; do
+ case "${_epgd_default}" in
+ patches)
+ rtl_get_var_unsafe \$_epgd_pkg_patches_extra -u "${_epgd_pkg_name}_PATCHES_EXTRA";
+ set +o noglob;
+ set -- \
+ "${@}" \
+ "${MIDIPIX_BUILD_PWD}/patches/${_epgd_pkg_name_full}/"*.patch \
+ "${MIDIPIX_BUILD_PWD}/patches/${_epgd_pkg_name_full}.local.patch" \
+ "${MIDIPIX_BUILD_PWD}/patches/${_epgd_pkg_name_full}.local@${BUILD_HNAME}.patch" \
+ ${_epgd_pkg_patches_extra};
+ set -o noglob;
+ ;;
+
+ patches_chainport)
+ if [ "${_epgd_pkg_version:+1}" = 1 ]; then
+ set -- \
+ "${@}" \
+ "${BUILD_WORKDIR}/chainport/patches/${_epgd_pkg_name%%_*}/${_epgd_pkg_name%%_*}-${_epgd_pkg_version}.midipix.patch";
+ fi;
+ ;;
+
+ patches_pre)
+ set -- \
+ "${@}" \
+ "${MIDIPIX_BUILD_PWD}/patches/${_epgd_pkg_name_full}_pre.local.patch" \
+ "${MIDIPIX_BUILD_PWD}/patches/${_epgd_pkg_name_full}_pre.local@${BUILD_HNAME}.patch";
+ ;;
+
+ vars_file)
+ set -- \
+ "vars/${_epgd_pkg_name}.vars";
+ ;;
+
+ *)
+ _epgd_rc=1; break;
+ ;;
+ esac;
+ done;
+
+ if [ "${_epgd_rc}" = 0 ]; then
+ eval ${_epgd_rdefault}="\${${_epgd_default_idx}:-}";
+ fi;
+
+ return "${_epgd_rc}";
+};
+
+#
# ex_pkg_get_packages() - get list of packages belonging to single named build group
# @_rpkg_names: reference to out variable of package names
# @_group_name: build group name
diff --git a/subr.ex/ex_pkg_env.subr b/subr.ex/ex_pkg_env.subr
index f8966ad3..d6e8b803 100644
--- a/subr.ex/ex_pkg_env.subr
+++ b/subr.ex/ex_pkg_env.subr
@@ -118,9 +118,11 @@ exp_pkg_env_set() {
# Return: zero (0) on success, non-zero (>0) on failure
#
ex_pkg_env() {
- local _epe_build_steps_default="${1}" _epe_build_vars_default="${2}" _epe_group_name="${3}" \
- _epe_pkg_name="${4}" _epe_restart_at="${5}" _epe_workdir="${6}" \
- _epe_inherit_from="" _epe_vars_file="" _epe_vars_file_parent="" _epe_vname="";
+ local _epe_build_steps_default="${1}" _epe_build_vars_default="${2}" \
+ _epe_group_name="${3}" _epe_pkg_name="${4}" _epe_restart_at="${5}" \
+ _epe_workdir="${6}" \
+ _epe_inherit_from="" _epe_pkg_version="" _epe_vars_file="" \
+ _epe_vars_file_parent="" _epe_vname="";
if rtl_get_var_unsafe \$_epe_inherit_from -u "PKG_${_epe_pkg_name}_INHERIT_FROM"\
&& [ "${_epe_inherit_from:+1}" = 1 ]; then
@@ -134,7 +136,11 @@ ex_pkg_env() {
fi;
if [ "${_epe_vars_file:+1}" != 1 ]; then
- _epe_vars_file="vars/${_epe_pkg_name}.vars";
+ rtl_get_var_unsafe \$_epe_pkg_version -u "PKG_${_epe_pkg_name}_VERSION";
+ ex_pkg_get_default \
+ \$_epe_vars_file "${_epe_pkg_name}" \
+ "${_epe_pkg_version}" "vars_file" 1 \
+ || return 1;
fi;
rtl_fileop source_opt "${_epe_vars_file}" "${_epe_group_name}/${_epe_pkg_name}.${_epe_group_name}";