summaryrefslogtreecommitdiffhomepage
path: root/build.sh
diff options
context:
space:
mode:
authorLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2020-03-15 09:14:23 +0000
committerLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2020-03-15 09:14:23 +0000
commitb6a9a1a3c8b98077cce47d579069c42080d17da5 (patch)
tree56301493a28e098de840c21b6d7e2776dd5574a1 /build.sh
parent3e295f4e81f867fbd8b6c9c306bc1ca124e41d8b (diff)
downloadmidipix_build-b6a9a1a3c8b98077cce47d579069c42080d17da5.tar.bz2
midipix_build-b6a9a1a3c8b98077cce47d579069c42080d17da5.tar.xz
General cleanup.
Diffstat (limited to 'build.sh')
-rwxr-xr-xbuild.sh116
1 files changed, 66 insertions, 50 deletions
diff --git a/build.sh b/build.sh
index 4c812f62..c36eae05 100755
--- a/build.sh
+++ b/build.sh
@@ -5,7 +5,7 @@
buildp_ast() {
local _param="${1}" _pids="" _pids_niter=0 _pkg_name="" RTL_KILL_TREE_PIDS="";
if [ "${_param}" = "abort" ]; then
- rtl_log_msg failexit "Build aborted.";
+ rtl_log_msg fatalexit "Build aborted.";
fi;
if [ -n "${DEFAULT_BUILD_STATUS_IN_PROGRESS_FNAME}" ]; then
rtl_fileop rm "${DEFAULT_BUILD_STATUS_IN_PROGRESS_FNAME}";
@@ -20,34 +20,34 @@ buildp_ast() {
fi;
done;
if [ -n "${_pids}" ]; then
- rtl_log_msg vnfo "Killed PIDs $(rtl_uniq ${_pids})";
+ rtl_log_msg notice "Killed PID(s): %s" "$(rtl_uniq ${_pids})";
fi;
if [ -n "${EX_PKG_DISPATCH_WAIT}" ]; then
for _pkg_name in ${EX_PKG_DISPATCH_WAIT}; do
rtl_state_clear "${BUILD_WORKDIR}" "${_pkg_name}";
done;
- rtl_log_msg vnfo "Reset package state for: ${EX_PKG_DISPATCH_WAIT}";
+ rtl_log_msg notice "Reset package state for: %s" "${EX_PKG_DISPATCH_WAIT}";
fi;
};
buildp_dispatch_fail_pkg() {
local _group_name="${1}" _pkg_name="${2}";
: $((BUILD_NFAIL+=1)); BUILD_PKGS_FAILED="$(rtl_lconcat "${BUILD_PKGS_FAILED}" "${_pkg_name}")";
- if [ "${ARG_RELAXED:-0}" -eq 1 ]; then
- rtl_log_msg fail "$(printf "Build failed in \`%s', check \`%s' for details." "${_pkg_name}" "${BUILD_WORKDIR}/${_pkg_name}_stderrout.log")";
- if [ "${ARG_DUMP_ON_ABORT:-0}" -eq 1 ]; then
- rtl_log_msg info "Logged environment dump for failed package \`${_pkg_name}' to \`${BUILD_WORKDIR}/${_pkg_name}.dump'.";
- fi;
- else rtl_log_msg fail "${BUILD_WORKDIR}/${_pkg_name}_stderrout.log:";
+ if [ "${ARG_RELAXED:-0}" -eq 0 ]; then
+ rtl_log_msg fatal "${BUILD_WORKDIR}/${_pkg_name}_stderrout.log:";
cat "${BUILD_WORKDIR}/${_pkg_name}_stderrout.log";
if [ -n "${DEFAULT_BUILD_LAST_FAILED_PKG_FNAME}" ]; then
printf "%s" "${_pkg_name}" > "${DEFAULT_BUILD_LAST_FAILED_PKG_FNAME}";
fi;
- rtl_log_msg fail "$(printf "Build failed in \`%s', check \`%s' for details." "${_pkg_name}" "${BUILD_WORKDIR}/${_pkg_name}_stderrout.log")";
- if [ "${ARG_DUMP_ON_ABORT:-0}" -eq 1 ]; then
- rtl_log_msg info "Logged environment dump for failed package \`${_pkg_name}' to \`${BUILD_WORKDIR}/${_pkg_name}.dump'.";
- rtl_log_msg info "Enter an interactive package build shell w/ the command line: ./pkgtool.sh -a ${ARCH} -b ${BUILD} ${_pkg_name} PREFIX=\"${PREFIX}\"";
- fi;
+ rtl_log_msg fatal "Build failed in \`%s', check \`%s' for details." "${_pkg_name}" "${BUILD_WORKDIR}/${_pkg_name}_stderrout.log";
+ else rtl_log_msg warning "Build failed in \`%s', check \`%s' for details." "${_pkg_name}" "${BUILD_WORKDIR}/${_pkg_name}_stderrout.log";
+ fi;
+ if [ "${ARG_DUMP_ON_ABORT:-0}" -eq 1 ]; then
+ rtl_log_msg info "Logged environment dump for failed package \`%s' to \`%s'." "${_pkg_name}" "${BUILD_WORKDIR}/${_pkg_name}.dump";
+ rtl_log_msg info "Enter an interactive package build shell w/ the command line: ./pkgtool.sh -a %s -b %s \"%s\" PREFIX=\"%s\""\
+ "${ARCH}" "${BUILD}" "${_pkg_name}" "${PREFIX}";
+ fi;
+ if [ "${ARG_RELAXED:-0}" -eq 0 ]; then
exit 1;
fi;
};
@@ -55,29 +55,29 @@ buildp_dispatch_fail_pkg() {
buildp_dispatch_group_state() {
local _msg="${1}" _group_name="${2}";
case "${_msg}" in
- finish_group) rtl_log_msg suc2 "Finished \`${_group_name}' build group."; ;;
- start_group) rtl_log_msg inf2 "Starting \`${_group_name}' build group..."; ;;
+ finish_group) rtl_log_msg success_end "Finished \`%s' build group." "${_group_name}"; ;;
+ start_group) rtl_log_msg success "Starting \`%s' build group..." "${_group_name}"; ;;
esac;
};
buildp_dispatch_pkg_state() {
local _msg="${1}" _group_name="${2}" _pkg_name="${3}";
case "${_msg}" in
- disabled_pkg) : $((BUILD_NSKIP+=1)); rtl_log_msg vnfo "$(printf "Skipping disabled package \`%s'." "${_pkg_name}")"; ;;
- missing_pkg) rtl_log_msg failexit "Error: unknown package \`${_pkg_name}'."; ;;
- msg_pkg) shift 3; rtl_log_msg vucc "$(printf "%s/%s: %s" "${_group_name}" "${_pkg_name}" "${*}")"; ;;
- skipped_pkg) : $((BUILD_NSKIP+=1)); rtl_log_msg vnfo "$(printf "Skipping finished package \`%s'." "${_pkg_name}")"; ;;
- start_pkg) rtl_log_msg info "$(printf "[%03d/%03d] Starting \`%s' build..." "${4}" "${5}" "${_pkg_name}")"; ;;
- step_pkg) rtl_log_msg vucc "$(printf "Finished build step %s of package \`%s'." "${4}" "${_pkg_name}")"; ;;
+ disabled_pkg) : $((BUILD_NSKIP+=1)); rtl_log_msg verbose "Skipping disabled package \`%s'." "${_pkg_name}"; ;;
+ missing_pkg) rtl_log_msg fatalexit "Error: unknown package \`%s'." "${_pkg_name}"; ;;
+ msg_pkg) shift 3; rtl_log_msg verbose "%s/%s: %s" "${_group_name}" "${_pkg_name}" "${*}"; ;;
+ skipped_pkg) : $((BUILD_NSKIP+=1)); rtl_log_msg verbose "Skipping finished package \`%s'." "${_pkg_name}"; ;;
+ start_pkg) rtl_log_msg info "[%03d/%03d] Starting \`%s' build..." "${4}" "${5}" "${_pkg_name}"; ;;
+ step_pkg) rtl_log_msg verbose "Finished build step %s of package \`%s'." "${4}" "${_pkg_name}"; ;;
finish_pkg)
: $((BUILD_NFINI+=1));
if [ "${ARG_VERBOSE:-0}" -ge 2 ]; then
cat "${BUILD_WORKDIR}/${_pkg_name}_stderrout.log";
fi;
- rtl_log_msg succ "$(printf "Finished \`%s' build." "${_pkg_name}")"; ;;
+ rtl_log_msg info_end "Finished \`%s' build." "${_pkg_name}"; ;;
start_pkg_child)
if [ "${PKG_NO_LOG_VARS:-0}" -eq 0 ]; then
- rtl_log_env_vars "build" $(set | awk -F= '/^PKG_/{print $1}' | sort);
+ rtl_log_env_vars "build" $(rtl_get_vars_fast "^PKG_");
fi;
if [ "${ARG_VERBOSE:-0}" -ge 3 ]; then
set -o xtrace;
@@ -98,36 +98,52 @@ buildp_dispatch() {
esac;
};
+buildp_time_init() {
+ BUILD_DATE_START="$(rtl_date %Y-%m-%d-%H-%M-%S)";
+ _build_time_secs="$(rtl_date %s)";
+};
+
+buildp_time_update() {
+ : $((_build_time_secs=$(rtl_date %s)-${_build_time_secs}));
+ : $((_build_time_hours=${_build_time_secs}/3600));
+ : $((_build_time_minutes=(${_build_time_secs}%3600)/60));
+ : $((_build_time_secs=(${_build_time_secs}%3600)%60));
+};
+
build() {
- local _build_time_hours=0 _build_time_mins=0 _build_time_secs=0 _pkg_name="" \
- BUILD_DATE_START="" BUILD_NFAIL=0 BUILD_NFINI=0 BUILD_NSKIP=0 \
- BUILD_PKGS_FAILED="" EX_PKG_DISPATCH_UNKNOWN="";
- if ! cd "$(dirname "${0}")"; then
- printf "Error: failed to setup environment.\n"; exit 1;
- elif . ./subr/build_init.subr && build_init "${@}"\
- && trap "buildp_ast abort" HUP INT TERM USR1 USR2\
- && trap "buildp_ast exit" EXIT; then
- BUILD_DATE_START="$(rtl_date %Y-%m-%d-%H-%M-%S)"; _build_time_secs="$(rtl_date %s)";
- rtl_log_msg info "Build started by ${BUILD_USER:=${USER}}@${BUILD_HNAME:=$(hostname)} at ${BUILD_DATE_START}.";
+ local _build_time_hours=0 _build_time_mins=0 _build_time_secs=0 _pkg_name="" _rc=0 _status="" \
+ BUILD_DATE_START="" BUILD_GROUPS="" BUILD_GROUPS_INHIBIT_DEPS=0 BUILD_HNAME="" BUILD_IS_PARENT=1 \
+ BUILD_NFAIL=0 BUILD_NFINI=0 BUILD_NSKIP=0 BUILD_PKGS_FAILED="" BUILD_TARGET="" BUILD_USER="" \
+ DEFAULT_BUILD_CPUS=1 DEFAULT_BUILD_LAST_FAILED_PKG_FNAME="" DEFAULT_BUILD_LOG_FNAME="" \
+ DEFAULT_BUILD_STEPS="" DEFAULT_BUILD_VARS="" DEFAULT_CLEAR_PREFIX_PATHS="" DEFAULT_GIT_ARGS="" \
+ DEFAULT_GITROOT_HEAD="" DEFAULT_LOG_ENV_VARS="" DEFAULT_TARGET="" DEFAULT_WGET_ARGS="" \
+ MIDIPIX_BUILD_PWD=""; DEFAULT_BUILD_STATUS_IN_PROGRESS_FNAME="";
+ if ! . "${0%/*}/subr/build_init.subr"; then
+ _rc=1; printf "Error: failed to source \`${0%/*}/subr/build_init.subr'." >&2;
+ elif ! build_init "${@}"; then
+ _rc=1; _status="${_status}";
+ elif [ -n "${_status}" ]; then
+ _rc=0; _status="${_status}";
+ else trap "buildp_ast exit" EXIT; trap "buildp_ast abort" HUP INT TERM USR1 USR2;
+ buildp_time_init;
+ rtl_log_msg info "Build started by %s@%s at %s." "${BUILD_USER}" "${BUILD_HNAME}" "${BUILD_DATE_START}";
rtl_log_env_vars "build (global)" ${DEFAULT_LOG_ENV_VARS};
- if ! ex_pkg_dispatch "${DEFAULT_BUILD_STEPS}" "${DEFAULT_BUILD_VARS}" \
- buildp_dispatch "${BUILD_GROUPS}" "${BUILD_GROUPS_INHIBIT_DEPS:-0}" \
- "${ARG_PARALLEL:-1}" "${BUILD_WORKDIR}/build.fifo" "${ARG_RESTART}" \
- "${ARG_RESTART_AT}" "${ARG_RESTART_RECURSIVE}" "${BUILD_WORKDIR}"; then
- for _pkg_name in ${EX_PKG_DISPATCH_UNKNOWN}; do
- rtl_log_msg fail "Error: package \`${_pkg_name}' unknown.";
- done; exit 1;
- else : $((_build_time_secs=$(rtl_date %s)-${_build_time_secs}));
- : $((_build_time_hours=${_build_time_secs}/3600));
- : $((_build_time_minutes=(${_build_time_secs}%3600)/60));
- : $((_build_time_secs=(${_build_time_secs}%3600)%60));
- rtl_log_msg info "${BUILD_NFINI:-0} finished, ${BUILD_NSKIP:-0} skipped, and ${BUILD_NFAIL:-0} failed package(s).";
- rtl_log_msg info "Build time: ${_build_time_hours:-0} hour(s), ${_build_time_minutes:-0} minute(s), and ${_build_time_secs:-0} second(s).";
- if [ -n "${BUILD_PKGS_FAILED}" ]; then
- rtl_log_msg failexit "Build script failure(s) in: ${BUILD_PKGS_FAILED}.";
- fi;
+ ex_pkg_dispatch "${DEFAULT_BUILD_STEPS}" "${DEFAULT_BUILD_VARS}" \
+ buildp_dispatch "${BUILD_GROUPS}" "${BUILD_GROUPS_INHIBIT_DEPS}" \
+ "${ARG_PARALLEL}" "${BUILD_WORKDIR}/build.fifo" "${ARG_RESTART}" \
+ "${ARG_RESTART_AT}" "${ARG_RESTART_RECURSIVE}" "${BUILD_WORKDIR}";
+ buildp_time_update;
+ rtl_log_msg info "%s finished, %s skipped, and %s failed package(s)." "${BUILD_NFINI:-0}" "${BUILD_NSKIP:-0}" "${BUILD_NFAIL:-0}";
+ rtl_log_msg info "Build time: %s hour(s), %s minute(s), and %s second(s)." "${_build_time_hours:-0}" "${_build_time_minutes:-0}" "${_build_time_secs:-0}";
+ if [ -n "${BUILD_PKGS_FAILED}" ]; then
+ _rc=1; _status="Build script failure(s) in: ${BUILD_PKGS_FAILED}.";
fi;
fi;
+ if [ "${_rc}" -ne 0 ]; then
+ rtl_log_msg fatalexit "${_status}";
+ elif [ -n "${_status}" ]; then
+ rtl_log_msg info "${_status}";
+ fi;
};
set +o errexit -o noglob; build "${@}";