From 32ad217d197203a97dfcc0076e748731d2315c0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucio=20Andr=C3=A9s=20Illanes=20Albornoz=20=28arab=2C=20vx?= =?UTF-8?q?p=29?= Date: Wed, 22 Nov 2017 01:32:50 +0000 Subject: subr/*: reorganised as {ex{,_{pkg,rtl,setup}},pkg}_*. --- subr/ex_pkg_state.subr | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 subr/ex_pkg_state.subr (limited to 'subr/ex_pkg_state.subr') diff --git a/subr/ex_pkg_state.subr b/subr/ex_pkg_state.subr new file mode 100644 index 00000000..4cc0a8b0 --- /dev/null +++ b/subr/ex_pkg_state.subr @@ -0,0 +1,64 @@ +# +# set -o errexit -o noglob are assumed. +# + +ex_pkg_state_build_dir() { + PKG_BUILD_DIR="${1}-${2}-${PKG_TARGET}"; +}; + +ex_pkg_state_fini() { + : $((BUILD_TIMES_SECS=$(ex_date %s)-${BUILD_TIMES_SECS})); + : $((BUILD_TIMES_HOURS=${BUILD_TIMES_SECS}/3600)); + : $((BUILD_TIMES_MINUTES=(${BUILD_TIMES_SECS}%3600)/60)); + : $((BUILD_TIMES_SECS=(${BUILD_TIMES_SECS}%3600)%60)); + if [ -f "${BUILD_STATUS_IN_PROGRESS_FNAME}" ]; then + ex_build_fileop rm ${BUILD_STATUS_IN_PROGRESS_FNAME}; + fi; +}; + +ex_pkg_state_init() { + if [ -e ${BUILD_STATUS_IN_PROGRESS_FNAME} ]; then + ex_log_msg failexit "Error: another build targeting this architecture and build type is currently in progress."; + else + touch ${BUILD_STATUS_IN_PROGRESS_FNAME}; + fi; + if [ -e ${BUILD_LOG_FNAME} ]; then + mv -- ${BUILD_LOG_FNAME} ${BUILD_LOG_LAST_FNAME}; + fi; + BUILD_DATE_START="$(ex_date %Y-%m-%d-%H-%M-%S)"; + BUILD_NFINI=${BUILD_NSKIP:=${BUILD_NFAIL:=${BUILD_NBUILT:=0}}}; + BUILD_TIMES_SECS=$(ex_date %s); + BUILD_PKGS_FAILED=""; +}; + +ex_pkg_state_push() { + local _pkg_fname="${1}"; + local _done_fname_pfx="${WORKDIR}/.${_pkg_fname}"; + shift; while [ ${#} -ge 1 ]; do + if [ "${1#-}" != "${1}" ]; then + ex_build_fileop rm "${_done_fname_pfx}.${1#-}"; + else + touch "${_done_fname_pfx}.${1}"; + ex_log_msg info "Finished build step ${1} of package \`${_pkg_fname}'."; + fi; shift; + done; +}; + +ex_pkg_state_test() { + local _done_fname="${WORKDIR}/.${1}.${2}" _restart_at="${3}"; + if [ -z "${_restart_at}" ]; then + if [ -e "${_done_fname}" ]; then + return 0; # Skip + else + return 1; # Build + fi; + elif [ "${_restart_at}" = "ALL" ]; then + return 1; # Build + elif ex_lmatch "${_restart_at}" , "${2}"; then + return 1; # Build + else + return 0; # Skip + fi; +}; + +# vim:filetype=sh -- cgit v1.2.3