diff options
author | Lucio Andrés Illanes Albornoz <lucio@lucioillanes.de> | 2020-12-30 19:04:08 +0000 |
---|---|---|
committer | Lucio Andrés Illanes Albornoz <lucio@lucioillanes.de> | 2020-12-30 19:04:08 +0000 |
commit | 612534022b81a70ef4248e84a5e36ef34da990f0 (patch) | |
tree | a8bf51dc9fa0a7623b2edf9ce2157a5576de16cb /subr.rtl/rtl_state.subr | |
parent | f4b29eabbab105a87848295d640ed6e4f61e7e3d (diff) | |
download | midipix_build-612534022b81a70ef4248e84a5e36ef34da990f0.tar.bz2 midipix_build-612534022b81a70ef4248e84a5e36ef34da990f0.tar.xz |
subr/rtl*.subr, subr.rtl/: moved.
subr/build_init.subr:buildp_init_env(): updated.
subr/pkgtool_init.subr:pkgtoolp_init_env(): updated.
Diffstat (limited to 'subr.rtl/rtl_state.subr')
-rw-r--r-- | subr.rtl/rtl_state.subr | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/subr.rtl/rtl_state.subr b/subr.rtl/rtl_state.subr new file mode 100644 index 00000000..6d539563 --- /dev/null +++ b/subr.rtl/rtl_state.subr @@ -0,0 +1,39 @@ +# +# set +o errexit -o noglob -o nounset is assumed. +# + +rtl_state_clear() { + local _workdir="${1}" _pkg_name="${2}" _pkg_fname=""; + for _pkg_fname in $(find "${_workdir}" \ + -maxdepth 1 -mindepth 1 -name .${_pkg_name}.\* -type f); do + rtl_fileop rm "${_pkg_fname}"; + done; +}; + +rtl_state_set() { + local _workdir="${1}" _pkg_fname="${2}" _done_fname_pfx=""; + _done_fname_pfx="${_workdir}/.${_pkg_fname}"; + shift 2; while [ ${#} -ge 1 ]; do + if [ -z "${1}" ]; then + shift; continue; + elif [ "${1#-}" != "${1}" ]; then + rtl_fileop rm "${_done_fname_pfx}.${1#-}"; + else + rtl_fileop touch "${_done_fname_pfx}.${1}"; + fi; + shift; done; +}; + +rtl_state_test() { + local _workdir="${1}" _pkg_name="${2}" _build_step="${3}" _restart_at="${4:-}" _done_fname=""; + _done_fname="${_workdir}/.${_pkg_name}.${_build_step}"; + if [ -z "${_restart_at}" ]; then + rtl_fileop test "${_done_fname}"; + elif [ "${_restart_at}" = "ALL" ]; then + return 1; + else + ! rtl_lmatch "${_restart_at}" "${_build_step}" ","; + fi; +}; + +# vim:filetype=sh |