diff options
author | Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> | 2024-04-25 21:12:38 +0200 |
---|---|---|
committer | Lucía Andrea Illanes Albornoz <lucia@luciaillanes.de> | 2024-04-25 21:12:38 +0200 |
commit | e87e474c7f820c3ccb89ccec5b2eca68eb7a5256 (patch) | |
tree | e948fe66ad329b381080bc334b6de43d65b4e60e /subr.ex | |
parent | 9429b5475c3e0ef15a98b22ea6fddb59dd2af385 (diff) | |
download | midipix_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.subr | 2 | ||||
-rw-r--r-- | subr.ex/ex_pkg.subr | 58 | ||||
-rw-r--r-- | subr.ex/ex_pkg_dispatch.subr | 24 |
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 |