summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xbuild.sh17
-rw-r--r--subr/build_init.subr8
-rw-r--r--subr/ex_pkg_dispatch.subr12
3 files changed, 19 insertions, 18 deletions
diff --git a/build.sh b/build.sh
index d9bfd93c..be59adbb 100755
--- a/build.sh
+++ b/build.sh
@@ -5,7 +5,7 @@
buildp_dispatch() {
local _msg="${1}" _group_name="${2}" _pkg_name="${3}" \
_build_group_lc="" _build_group_meta="" _build_groups_lc="" \
- _njobs_max=1 _pkg_names="" _pkg_restart="" _rc=0;
+ _pkg_names="" _pkg_restart="" _rc=0;
case "${_msg}" in
# Top-level
start_build) shift; build_init "${@}";
@@ -15,13 +15,10 @@ buildp_dispatch() {
if ! ex_rtl_lmatch "${ARG_DIST}" "rpm" ","; then
_build_groups_lc="$(ex_rtl_lfilter "${_build_groups_lc}" "host_deps_rpm")";
fi;
- if [ "${ARG_PARALLEL:-0}" -gt 1 ]; then
- _njobs_max="${ARG_PARALLEL}";
- fi;
for _build_group_lc in ${_build_groups_lc}; do
- ex_pkg_dispatch buildp_dispatch "${_build_group_lc}" "${_njobs_max}" \
+ ex_pkg_dispatch buildp_dispatch "${_build_group_lc}" "${ARG_PARALLEL:-1}" \
"${ARG_RESTART}" "${ARG_RESTART_AT}" "${ARG_RESTART_RECURSIVE}"; _rc="${?}";
- : $((_nskipped+=${EX_PKG_NSKIPPED})); _pkg_names="$(ex_rtl_lconcat "${_pkg_names}" "${EX_PKG_NAMES}")";
+ _pkg_names="$(ex_rtl_lconcat "${_pkg_names}" "${EX_PKG_NAMES}")";
if [ "${_rc}" -ne 0 ]; then
break;
fi;
@@ -32,12 +29,12 @@ buildp_dispatch() {
ex_rtl_log_msg failexit "Error: package \`${_pkg_restart}' unknown.";
fi;
done;
- if ! ex_pkg_dispatch buildp_dispatch "invariants" "${_njobs_max}" "ALL" "ALL" 2; then
+ if ! ex_pkg_dispatch buildp_dispatch "invariants" "${ARG_PARALLEL:-1}" "ALL" "ALL" 2; then
break;
fi;
buildp_dispatch finish_build; ;;
finish_build) build_fini;
- ex_rtl_log_msg info "${BUILD_NFINI:-0} finished, ${_nskipped:-0} skipped, and ${BUILD_NFAIL:-0} failed builds in ${BUILD_NBUILT:-0} build script(s).";
+ ex_rtl_log_msg info "${BUILD_NFINI:-0} finished, ${BUILD_NSKIP:-0} skipped, and ${BUILD_NFAIL:-0} failed package(s).";
ex_rtl_log_msg info "Build time: ${BUILD_TIMES_HOURS:-0} hour(s), ${BUILD_TIMES_MINUTES:-0} minute(s), and ${BUILD_TIMES_SECS:-0} second(s).";
if [ -n "${BUILD_PKGS_FAILED}" ]; then
ex_rtl_log_msg failexit "Build script failure(s) in: ${BUILD_PKGS_FAILED}.";
@@ -71,6 +68,10 @@ buildp_dispatch() {
fi;
exit 1;
fi; ;;
+ disabled_pkg) : $((BUILD_NSKIP+=1));
+ ex_rtl_log_msg vnfo "$(printf "Skipping disabled package \`%s.'" "${_pkg_name}")"; ;;
+ skipped_pkg) : $((BUILD_NSKIP+=1));
+ ex_rtl_log_msg vnfo "$(printf "Skipping finished package \`%s.'" "${_pkg_name}")"; ;;
step_pkg) ex_rtl_log_msg vucc "$(printf "Finished build step %s of package \`%s'." "${4}" "${_pkg_name}")"; ;;
# Child process
diff --git a/subr/build_init.subr b/subr/build_init.subr
index 870128ba..a52ff5ff 100644
--- a/subr/build_init.subr
+++ b/subr/build_init.subr
@@ -40,11 +40,9 @@ buildp_init_args() {
fi;
fi;
ex_rtl_log_set_vnfo_lvl "${ARG_VERBOSE:-0}";
- BUILD_IS_PARENT=1;
- BUILD_DATE_START="$(ex_rtl_date %Y-%m-%d-%H-%M-%S)";
- BUILD_NFINI="${BUILD_NSKIP:=${BUILD_NFAIL:=${BUILD_NBUILT:=0}}}";
- BUILD_PKGS_FAILED="";
- BUILD_TIMES_SECS="$(ex_rtl_date %s)";
+ BUILD_DATE_START="$(ex_rtl_date %Y-%m-%d-%H-%M-%S)"; BUILD_IS_PARENT=1;
+ BUILD_NFAIL="${BUILD_NFINI:=${BUILD_NSKIP:=0}}";
+ BUILD_PKGS_FAILED=""; BUILD_TIMES_SECS="$(ex_rtl_date %s)";
if [ "${ARG_FETCH_FORCE}" = "ipv4" ]; then
DEFAULT_GIT_ARGS="-4${DEFAULT_GIT_ARGS:+ ${DEFAULT_GIT_ARGS}}";
DEFAULT_WGET_ARGS="-4${DEFAULT_WGET_ARGS:+ ${DEFAULT_WGET_ARGS}}";
diff --git a/subr/ex_pkg_dispatch.subr b/subr/ex_pkg_dispatch.subr
index d3053c47..2d34a900 100644
--- a/subr/ex_pkg_dispatch.subr
+++ b/subr/ex_pkg_dispatch.subr
@@ -84,7 +84,7 @@ exp_pkg_dispatch_packages() {
# @_restart: optional comma-separated list of package names to rebuild
# @_restart_recursive: optional flag specifiying either no dependency expansion (0,) dependency expansion (1,) dependency expansion and forcibly rebuild (2.)
#
-# Return: zero (0) on success, non-zero (>0) on failure, ${EX_PKG_NSKIPPED}, ${EX_PKG_NAMES}, and ${PKG_COMPLETE} set post-return.
+# Return: zero (0) on success, non-zero (>0) on failure, ${EX_PKG_NAMES} and ${PKG_COMPLETE} set post-return.
#
exp_pkg_expand_packages() {
local _group_name="${1}" _restart="${2}" _restart_recursive="${3}" _pkg_name="" _pkg_names="";
@@ -99,12 +99,14 @@ exp_pkg_expand_packages() {
for _pkg_name in ${_pkg_names}; do
if [ -n "$(ex_rtl_get_var_unsafe -u "PKG_${_pkg_name}_DISABLED")" ]; then
PKG_COMPLETE="$(ex_rtl_lconcat "${PKG_COMPLETE}" "${_pkg_name}")";
- : $((EX_PKG_NSKIPPED+=1)); _pkg_names="$(ex_rtl_lfilter "${_pkg_names}" "${_pkg_name}")";
+ _pkg_names="$(ex_rtl_lfilter "${_pkg_names}" "${_pkg_name}")";
+ "${_dispatch_fn}" disabled_pkg "${_group_name}" "${_pkg_name}";
elif ex_pkg_state_test "${_pkg_name}" finish\
&& ! ex_rtl_lmatch "${_restart}" "${_pkg_name}"\
&& [ "${_restart_recursive:-0}" -ne 2 ]; then
PKG_COMPLETE="$(ex_rtl_lconcat "${PKG_COMPLETE}" "${_pkg_name}")";
- : $((EX_PKG_NSKIPPED+=1)); _pkg_names="$(ex_rtl_lfilter "${_pkg_names}" "${_pkg_name}")";
+ _pkg_names="$(ex_rtl_lfilter "${_pkg_names}" "${_pkg_name}")";
+ "${_dispatch_fn}" skipped_pkg "${_group_name}" "${_pkg_name}";
fi;
done;
EX_PKG_NAMES="${_pkg_names}"; return 0;
@@ -120,12 +122,12 @@ exp_pkg_expand_packages() {
# @_restart_at: optional comma-separated list of build steps at which to rebuild or ALL
# @_restart_recursive: optional flag specifiying either no dependency expansion (0,) dependency expansion (1,) dependency expansion and forcibly rebuild (2.)
#
-# Return: zero (0) on success, non-zero (>0) on failure, ${EX_PKG_NAMES} and ${EX_PKG_NSKIPPED} set post-return.
+# Return: zero (0) on success, non-zero (>0) on failure, ${EX_PKG_NAMES} set post-return.
#
ex_pkg_dispatch() {
local _dispatch_fn="${1}" _group_name="${2}" _njobs_max="${3}" _restart="${4}" _restart_at="${5}" \
_restart_recursive="${6}" _pipe_msg="" _pipe_path="${BUILD_WORKDIR}/build.fifo" _pkg_name="" \
- _script_rc=0 NJOBS=0 PKG_COMPLETE="" PKG_COUNT=0 PKG_COUNT_MAX=0 PKG_NAMES="" PKG_WAIT=""; EX_PKG_NSKIPPED=0; EX_PKG_NAMES="";
+ _script_rc=0 NJOBS=0 PKG_COMPLETE="" PKG_COUNT=0 PKG_COUNT_MAX=0 PKG_NAMES="" PKG_WAIT=""; EX_PKG_NAMES="";
if "${_dispatch_fn}" start_group "${_group_name}" ""; then
if ex_rtl_fileop mkdir "${BUILD_WORKDIR}"\
&& ex_rtl_log_msg vnfo "Resolving \`${_group_name}' dependencies..."\