From fd38dc025f5d31890abbf3d48c597114203b1421 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luc=C3=ADa=20Andrea=20Illanes=20Albornoz?= Date: Mon, 13 Mar 2023 10:03:34 +0100 Subject: Move patches & vars pathname defaults handling into subr.ex/ex_pkg.subr. --- subr.ex/ex_pkg.subr | 67 +++++++++++++++++++++++++++++++++++++++++++++++++ subr.ex/ex_pkg_env.subr | 14 ++++++++--- 2 files changed, 77 insertions(+), 4 deletions(-) (limited to 'subr.ex') 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 @@ -77,6 +77,73 @@ ex_pkg_find_package() { esac; }; +# +# 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 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}"; -- cgit v1.2.3