summaryrefslogtreecommitdiffhomepage
path: root/subr.ex
diff options
context:
space:
mode:
authorLucía Andrea Illanes Albornoz <lucia@luciaillanes.de>2024-04-25 21:12:38 +0200
committerLucía Andrea Illanes Albornoz <lucia@luciaillanes.de>2024-04-25 21:12:38 +0200
commite87e474c7f820c3ccb89ccec5b2eca68eb7a5256 (patch)
treee948fe66ad329b381080bc334b6de43d65b4e60e /subr.ex
parent9429b5475c3e0ef15a98b22ea6fddb59dd2af385 (diff)
downloadmidipix_build-e87e474c7f820c3ccb89ccec5b2eca68eb7a5256.tar.bz2
midipix_build-e87e474c7f820c3ccb89ccec5b2eca68eb7a5256.tar.xz
Fix ./build.sh -r ***name and ./pkgtool.sh -r name.
Diffstat (limited to 'subr.ex')
-rw-r--r--subr.ex/ex_init.subr2
-rw-r--r--subr.ex/ex_pkg.subr58
-rw-r--r--subr.ex/ex_pkg_dispatch.subr24
3 files changed, 46 insertions, 38 deletions
diff --git a/subr.ex/ex_init.subr b/subr.ex/ex_init.subr
index e9b4d3f4..5dc4f857 100644
--- a/subr.ex/ex_init.subr
+++ b/subr.ex/ex_init.subr
@@ -321,7 +321,7 @@ ex_init_files() {
#
# ex_init_logging() - initialise build logging
# @_rstatus: out reference to variable of status string on failure
-# @_rverbose_tags: in reference toout variable of -V argument value
+# @_rverbose_tags: in reference to out variable of -V argument value
# @_verbose: -[vV] argument value
#
# Returns: zero (0) on success, non-zero (>0) on failure
diff --git a/subr.ex/ex_pkg.subr b/subr.ex/ex_pkg.subr
index a14ac215..d706d235 100644
--- a/subr.ex/ex_pkg.subr
+++ b/subr.ex/ex_pkg.subr
@@ -382,8 +382,8 @@ ex_pkg_register_group() {
#
# ex_pkg_unfold_depends() - unfold list of package names into dependency-expanded set of complete, disabled, finished, and outstanding package names
-# @_rdisabled: in reference toout variable of disabled packages
-# @_rfinished: in reference toout variable of finished packages
+# @_rdisabled: in reference to out variable of disabled packages
+# @_rfinished: in reference to out variable of finished packages
# @_rnames: out reference to variable of package names
# @_checkfl: enable (1) or inhibit (0) dependency expansion
# @_forcefl: enable (1) or inhibit (0) forcibly rebuilding finished packages
@@ -467,24 +467,25 @@ ex_pkg_unfold_depends() {
#
# ex_pkg_unfold_rdepends() - unfold list of package names into reverse dependency-expanded set of complete, disabled, finished, and outstanding package names
-# @_rdisabled: in reference toout variable of disabled packages
-# @_rfinished: in reference toout variable of finished packages
+# @_rdisabled: in reference to out variable of disabled packages
+# @_rfinished: in reference to out variable of finished packages
# @_rnames: out reference to variable of package names
# @_group_name: build group name
# @_pkg_names: list of package names
# @_restart: optional whitespace-separated list of package names to rebuild
# @_test_finished: only exclude disabled packages (0,) split finished packages
# @_workdir: pathname to build-specific temporary directory
+# @_recursefl: resolve recursively ("recurse") or non-recursively ("norecurse")
#
# Returns: zero (0) on success, non-zero (>0) on failure.
#
ex_pkg_unfold_rdepends() {
local _epur_rdisabled="${1#\$}" _epur_rfinished="${2#\$}" _epur_rnames="${3#\$}" \
_epur_group_name="${4}" _epur_pkg_names="${5}" _epur_restart="${6}" \
- _epur_test_finished="${7}" _epur_workdir="${8}" \
+ _epur_test_finished="${7}" _epur_workdir="${8}" _epur_recursefl="${9}" \
_epur_depends="" _epur_disabled=0 _epur_force=0 _epur_pkg_depends="" \
_epur_pkg_name="" _epur_pkg_names_new="" _epur_pkg_name_depend="" \
- _epur_pkg_rdepends="";
+ _epur_pkg_name_rdepend="" _epur_pkg_rdepends="";
for _epur_pkg_name_depend in ${_epur_restart}; do
for _epur_pkg_name in ${_epur_pkg_names}; do
@@ -496,25 +497,32 @@ ex_pkg_unfold_rdepends() {
&& [ "${_epur_pkg_depends:+1}" = 1 ]\
&& rtl_lmatch \$_epur_pkg_depends "${_epur_pkg_name_depend}";
then
- if rtl_get_var_unsafe \$_epur_disabled -u "PKG_${_epur_pkg_name}_DISABLED"\
- && [ "${_epur_disabled}" = 1 ];
- then
- rtl_lconcat "${_epur_rdisabled}" "${_epur_pkg_name}";
-
- elif [ "${_epur_test_finished}" -eq 1 ]\
- && ex_pkg_state_test2 "${_epur_workdir}" "${_epur_pkg_name}" finish\
- && rtl_get_var_unsafe \$_epur_force -u "${_epur_group_name}_FORCE"\
- && [ "${_epur_force}" != 1 ];
- then
- rtl_lconcat "${_epur_rfinished}" "${_epur_pkg_name}";
-
- elif [ "${_epur_test_finished:-1}" -eq 0 ]\
- || ! ex_pkg_state_test2 "${_epur_workdir}" "${_epur_pkg_name}" finish\
- || ( rtl_get_var_unsafe \$_epur_force -u "${_epur_group_name}_FORCE"\
- && [ "${_epur_force}" = 1 ] );
- then
- rtl_lconcat \$_epur_pkg_names_new "${_epur_pkg_name}";
- fi;
+ case "${_epur_recursefl}" in
+ recurse) _epur_pkg_rdepends="${_epur_pkg_name} ${_epur_pkg_depends}"; ;;
+ norecurse) _epur_pkg_rdepends="${_epur_pkg_name}"; ;;
+ esac;
+
+ for _epur_pkg_name_rdepend in ${_epur_pkg_rdepends}; do
+ if rtl_get_var_unsafe \$_epur_disabled -u "PKG_${_epur_pkg_name_rdepend}_DISABLED"\
+ && [ "${_epur_disabled}" = 1 ];
+ then
+ rtl_lconcat "${_epur_rdisabled}" "${_epur_pkg_name_rdepend}";
+
+ elif [ "${_epur_test_finished}" -eq 1 ]\
+ && ex_pkg_state_test2 "${_epur_workdir}" "${_epur_pkg_name_rdepend}" finish\
+ && rtl_get_var_unsafe \$_epur_force -u "${_epur_group_name}_FORCE"\
+ && [ "${_epur_force}" != 1 ];
+ then
+ rtl_lconcat "${_epur_rfinished}" "${_epur_pkg_name_rdepend}";
+
+ elif [ "${_epur_test_finished:-1}" -eq 0 ]\
+ || ! ex_pkg_state_test2 "${_epur_workdir}" "${_epur_pkg_name_rdepend}" finish\
+ || ( rtl_get_var_unsafe \$_epur_force -u "${_epur_group_name}_FORCE"\
+ && [ "${_epur_force}" = 1 ] );
+ then
+ rtl_lconcat \$_epur_pkg_names_new "${_epur_pkg_name_rdepend}";
+ fi;
+ done;
fi;
done;
done;
diff --git a/subr.ex/ex_pkg_dispatch.subr b/subr.ex/ex_pkg_dispatch.subr
index 83f36656..19818e97 100644
--- a/subr.ex/ex_pkg_dispatch.subr
+++ b/subr.ex/ex_pkg_dispatch.subr
@@ -64,7 +64,7 @@ exp_pkg_dispatch_expand_packages() {
"${_epdep_rdisabled}" "${_epdep_rfinished}" \
"${_epdep_rnames}" "${_epdep_group_name}" \
"${_epdep_pkg_names}" "${_epdep_restart}" 1 \
- "${_epdep_workdir}";
+ "${_epdep_workdir}" "recurse";
fi;
fi;
@@ -77,16 +77,16 @@ exp_pkg_dispatch_expand_packages() {
#
# exp_pkg_dispatch_group() - dispatch a single build group
-# @_rdispatch_count: in reference toout variable of dispatcher count
-# @_rdispatch_count_cur: in reference toout variable of current dispatcher count
+# @_rdispatch_count: in reference to out variable of dispatcher count
+# @_rdispatch_count_cur: in reference to out variable of current dispatcher count
# @_dispatch_count_max: maximum dispatcher count
# @_dispatch_group_cur: current group
# @_dispatch_group_max: maximum group
-# @_rdispatch_njobs: in reference toout variable of dispatcher count
-# @_rdispatch_wait: in reference toout variable of package names in a wait state
+# @_rdispatch_njobs: in reference to out variable of dispatcher count
+# @_rdispatch_wait: in reference to out variable of package names in a wait state
# @_rpkg_disabled: in reference to variable of list of disabled packages
-# @_rpkg_finished: in reference toout variable of list of finished packages
-# @_rpkg_names: in reference toout variable of list of package names
+# @_rpkg_finished: in reference to out variable of list of finished packages
+# @_rpkg_names: in reference to out variable of list of package names
# @_build_steps_default: list of default build steps
# @_build_vars_default: list of default build variables
# @_checkfl: enable (1) or inhibit (0) dependency expansion
@@ -213,16 +213,16 @@ exp_pkg_dispatch_group() {
#
# exp_pkg_dispatch_packages() - dispatch set of packages
-# @_rdispatch_count: in reference toout variable of dispatcher count
+# @_rdispatch_count: in reference to out variable of dispatcher count
# @_dispatch_count_cur: current dispatcher count
# @_dispatch_count_max: maximum dispatcher count
# @_dispatch_group_cur: current group
# @_dispatch_group_max: maximum group
-# @_rdispatch_njobs: in reference toout variable of dispatcher count
-# @_rdispatch_wait: in reference toout variable of package names in a wait state
+# @_rdispatch_njobs: in reference to out variable of dispatcher count
+# @_rdispatch_wait: in reference to out variable of package names in a wait state
# @_rpkg_disabled: in reference to variable of list of disabled packages
-# @_rpkg_finished: in reference toout variable of list of finished packages
-# @_rpkg_names: in reference toout variable of list of package names
+# @_rpkg_finished: in reference to out variable of list of finished packages
+# @_rpkg_names: in reference to out variable of list of package names
# @_build_steps_default: list of default build steps
# @_build_vars_default: list of default build variables
# @_checkfl: enable (1) or inhibit (0) dependency expansion