summaryrefslogtreecommitdiffhomepage
path: root/build.sh
diff options
context:
space:
mode:
authorLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2019-01-19 17:41:24 +0000
committerLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2019-01-19 17:41:24 +0000
commitda03644a9f0c6daa76f20797910693731e9ad230 (patch)
tree75c4618c9fbb2cd39e8d2d6ec6283e29090157ae /build.sh
parent04b44cb22dd9c7e5b3fa3d94e8beb82466bc9d89 (diff)
downloadmidipix_build-da03644a9f0c6daa76f20797910693731e9ad230.tar.bz2
midipix_build-da03644a9f0c6daa76f20797910693731e9ad230.tar.xz
build.sh, etc/build.usage, subr/ex_pkg_dispatch.subr: adds -r LAST.
subr/ex_rtl_state.subr: adds ex_rtl_state_clear(). vars/midipix.vars: adds ${DEFAULT_BUILD_LAST_FAILED_PKG_FNAME}.
Diffstat (limited to 'build.sh')
-rwxr-xr-xbuild.sh25
1 files changed, 11 insertions, 14 deletions
diff --git a/build.sh b/build.sh
index c0986675..146ac4b2 100755
--- a/build.sh
+++ b/build.sh
@@ -4,7 +4,7 @@
buildp_dispatch() {
local _msg="${1}" _pkg_name="${2}" _tgt_name="${3}" \
- _build_tgt_meta="" _build_tgt_lc="" _build_tgt_pkg_names="" _build_tgt_uc="" _build_tgts_lc="";
+ _build_tgt_meta="" _build_tgt_lc="" _build_tgts_lc=""_pkg_restart="" _pkgs_found="";
case "${_msg}" in
# Top-level
start_build) shift; build_args "${@}"; build_init; build_checks;
@@ -15,26 +15,20 @@ buildp_dispatch() {
if ! ex_rtl_lmatch "${ARG_DIST}" , rpm; then
_build_tgts_lc="$(ex_rtl_lfilter_not "${_build_tgts_lc}" "host_tools_rpm")";
fi;
- if [ -n "${ARG_RESTART}" ]\
- && [ "${ARG_RESTART}" != ALL ]; then
- _build_tgt_pkg_names="";
- for _build_tgt_lc in ${_build_tgts_lc}; do
- _build_tgt_uc="$(ex_rtl_toupper "${_build_tgt_lc}")";
- _build_tgt_pkg_names="${_build_tgt_pkg_names:+${_build_tgt_pkg_names} }$(ex_rtl_get_var_unsafe ${_build_tgt_uc}_PACKAGES)";
- done;
- _build_tgt_pkg_names="$(ex_rtl_lfilter_not "${ARG_RESTART}" "${_build_tgt_pkg_names}")";
- if [ -n "${_build_tgt_pkg_names}" ]; then
- ex_rtl_log_msg failexit "Error: package(s) \`${_build_tgt_pkg_names}' unknown.";
- fi;
- fi;
for _build_tgt_lc in ${_build_tgts_lc}; do
ex_pkg_dispatch "${_build_tgt_lc}" \
"${ARG_RESTART}" "${ARG_RESTART_AT}" \
- buildp_dispatch;
+ buildp_dispatch _pkgs_found;
if [ ${?} -ne 0 ]; then
break;
fi;
done;
+ for _pkg_restart in ${ARG_RESTART}; do
+ if ! ex_rtl_lmatch "ALL LAST" " " "${_pkg_restart}" \
+ && ! ex_rtl_lmatch "${_pkgs_found}" " " "${_pkg_restart}"; then
+ ex_rtl_log_msg failexit "Error: package \`${_pkg_restart}' unknown.";
+ fi;
+ done;
if ! ex_pkg_dispatch "invariants" "ALL" "ALL" buildp_dispatch; then
break;
fi;
@@ -64,6 +58,9 @@ buildp_dispatch() {
else
ex_rtl_log_msg fail "${BUILD_WORKDIR}/${_pkg_name}_stderrout.log:";
cat "${BUILD_WORKDIR}/${_pkg_name}_stderrout.log";
+ if [ -n "${DEFAULT_BUILD_LAST_FAILED_PKG_FNAME}" ]; then
+ echo "${_pkg_name}" > "${DEFAULT_BUILD_LAST_FAILED_PKG_FNAME}";
+ fi;
ex_rtl_log_msg fail "Build failed in \`${_pkg_name}'.";
if [ "${ARG_PARALLEL:-0}" -eq 1 ]; then
ex_rtl_log_msg fail "Terminating pending builds...";