summaryrefslogtreecommitdiffhomepage
path: root/subr/build_init.subr
diff options
context:
space:
mode:
authorLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2020-03-12 08:56:34 +0000
committerLucio Andrés Illanes Albornoz <lucio@lucioillanes.de>2020-03-12 08:56:34 +0000
commit0d1c4f95c4c2d2d7c1a01f6a46502b7c49c06647 (patch)
tree10fa5a00d57bc448c56af4b7ccdb69d4721e045b /subr/build_init.subr
parent72e7c3318ee19b81bfe532750bb467f1391ee1fb (diff)
downloadmidipix_build-0d1c4f95c4c2d2d7c1a01f6a46502b7c49c06647.tar.bz2
midipix_build-0d1c4f95c4c2d2d7c1a01f6a46502b7c49c06647.tar.xz
Reduce awk(1), grep(1), seq(1), and stat(1) usage.
subr/build_init.subr:buildp_init_files(): replace timestamp w/ running total log filename suffix. subr/build_init.subr:buildp_init_prereqs(): ensure sed(1) supports -i option. subr/rtl_complex.subr:rtl_{get_cpu_count,is_newer}(): initial implementation. subr/rtl_string.subr:rtl_match(): initial implementation.
Diffstat (limited to 'subr/build_init.subr')
-rw-r--r--subr/build_init.subr46
1 files changed, 22 insertions, 24 deletions
diff --git a/subr/build_init.subr b/subr/build_init.subr
index c5f91174..eeeaf60b 100644
--- a/subr/build_init.subr
+++ b/subr/build_init.subr
@@ -87,7 +87,7 @@ buildp_init_env() {
};
buildp_init_files() {
- local _log_last_fname="" _log_last_ts="" _rc=0; _status=""
+ local _log_last_fname="" _log_last_num=1 _rc=0; _status=""
if ! rtl_fileop mkdir "${BUILD_DLCACHEDIR}" "${BUILD_WORKDIR}"\
|| rtl_lmatch "${ARG_DIST}" "rpm" ","\
&& ! rtl_fileop mkdir "${PREFIX_RPM}"; then
@@ -98,12 +98,12 @@ buildp_init_files() {
_rc=1; _status="Error: failed to clean environment.";
elif ! rtl_check_path_vars "${DEFAULT_CHECK_PATH_VARS}"; then
_rc=1; _status="${_status}";
- else
- touch "${DEFAULT_BUILD_STATUS_IN_PROGRESS_FNAME}";
+ else touch "${DEFAULT_BUILD_STATUS_IN_PROGRESS_FNAME}";
if [ -e "${DEFAULT_BUILD_LOG_FNAME}" ]; then
- _log_last_ts="$(stat -c %Y "${DEFAULT_BUILD_LOG_FNAME}")";
- _log_last_ts="$(awk 'BEGIN {printf(strftime("%Y-%m-%d-%H-%M-%S", '"${_log_last_ts}"'))}')";
- _log_last_fname="${DEFAULT_BUILD_LOG_FNAME}.${_log_last_ts}";
+ while [ -e "${DEFAULT_BUILD_LOG_FNAME}.${_log_last_num}" ]; do
+ : $((_log_last_num+=1));
+ done;
+ _log_last_fname="${DEFAULT_BUILD_LOG_FNAME}.${_log_last_num}";
rtl_fileop mv "${DEFAULT_BUILD_LOG_FNAME}" "${_log_last_fname}";
rtl_fileop ln_symbolic "${_log_last_fname}" "${DEFAULT_BUILD_LOG_LAST_FNAME}";
fi;
@@ -224,21 +224,20 @@ buildp_init_groups() {
buildp_init_prereqs() {
local _cmd="" _cmds_missing="" _rc=0; _status="";
for _cmd in \
- awk bunzip2 cat chmod cmake cp date find flock g++ \
- gcc git grep gunzip gzip hostname install kill \
- ln lzip make mkdir mkfifo mv paste patch perl \
- pgrep pkill printf readlink rm sed seq sha256sum \
- sort stat tail tar test touch tr wget xz zip; do
+ awk bunzip2 bzip2 cat chmod cmake cp date find flock \
+ g++ gcc git grep gunzip gzip hostname install kill \
+ ln lzip make mkdir mkfifo mktemp mv paste patch perl \
+ pgrep pkill printf readlink rm sed sha256sum sort \
+ tail tar test touch tr uniq wget xz zip; do
if ! which "${_cmd}" >/dev/null 2>&1; then
_cmds_missing="${_cmds_missing:+${_cmds_missing} }${_cmd}";
fi;
done;
if [ -n "${_cmds_missing}" ]; then
_rc=1; _status="Error: missing prerequisite package(s): ${_cmds_missing}";
- elif ! awk -V 2>/dev/null | grep -q "^GNU Awk "; then
- _rc=1; _status="Error: awk(1) in \$PATH must be GNU Awk.";
- elif ! sed --version 2>/dev/null | grep -q "^GNU sed "; then
- _rc=1; _status="Error: sed(1) in \$PATH must be GNU sed.";
+ elif ! (FNAME="$(mktemp)" && { trap "rm -f \"\${FNAME}\"" EXIT; \
+ sed -i'' -e '' "${FNAME}" >/dev/null 2>&1; }); then
+ _rc=1; _status="Error: sed(1) in \${PATH} does not support the \`-i' option.";
fi;
return "${_rc}";
};
@@ -256,20 +255,19 @@ buildp_init_vars() {
nt32) DEFAULT_TARGET="i686-nt32-midipix"; ;;
nt64) DEFAULT_TARGET="x86_64-nt64-midipix"; ;;
esac;
- if [ -e "/proc/cpuinfo" ]; then
- DEFAULT_BUILD_CPUS="$(awk '/^processor/{cpus++} END{print cpus}' /proc/cpuinfo)";
+ if DEFAULT_BUILD_CPUS="$(rtl_get_cpu_count)"; then
if [ "${ARG_PARALLEL}" = "auto" ]\
&& [ "${DEFAULT_BUILD_CPUS}" -gt 1 ]; then
ARG_PARALLEL=$((${DEFAULT_BUILD_CPUS}/2));
fi;
+ rtl_fileop source_opt \
+ "${HOME}/midipix_build.vars" "${HOME}/.midipix_build.vars" \
+ ../midipix_build.vars ./midipix.env;
+ if [ -z "${PREFIX}" ]; then
+ _rc=1; _status="Error: \${PREFIX} empty or unset.";
+ fi;
fi;
- rtl_fileop source_opt \
- "${HOME}/midipix_build.vars" "${HOME}/.midipix_build.vars" \
- ../midipix_build.vars ./midipix.env;
- if [ -z "${PREFIX}" ]; then
- _rc=1; _status="Error: \${PREFIX} empty or unset.";
- fi; fi;
- return "${_rc}";
+ fi; return "${_rc}";
};
build_init() {