summaryrefslogtreecommitdiffhomepage
path: root/subr/ex_pkg_state.subr
diff options
context:
space:
mode:
authorLucio Andrés Illanes Albornoz (arab, vxp) <lucio@lucioillanes.de>2017-11-22 01:32:50 +0000
committerLucio Andrés Illanes Albornoz (arab, vxp) <lucio@lucioillanes.de>2017-11-22 02:35:10 +0000
commit32ad217d197203a97dfcc0076e748731d2315c0b (patch)
tree1f4dd5799daa9ac8540cddcc45b4c1557cb0ac70 /subr/ex_pkg_state.subr
parent465073d1a9f8ead60dbe66a26b55c0c1927e63c6 (diff)
downloadmidipix_build-32ad217d197203a97dfcc0076e748731d2315c0b.tar.bz2
midipix_build-32ad217d197203a97dfcc0076e748731d2315c0b.tar.xz
subr/*: reorganised as {ex{,_{pkg,rtl,setup}},pkg}_*.
Diffstat (limited to 'subr/ex_pkg_state.subr')
-rw-r--r--subr/ex_pkg_state.subr64
1 files changed, 64 insertions, 0 deletions
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