f6a5cb {build.sh,subr/pre_setup_args.subr}: split.

Authored and Committed by Lucio Andrés Illanes Albornoz (arab, vxp) 7 years ago
    {build.sh,subr/pre_setup_args.subr}: split.
    subr/pre_setup_env.subr: set -o noglob.
    
        
file modified
+6 -46
build.sh CHANGED
@@ -2,48 +2,9 @@
2
2
# Copyright (c) 2016, 2017 Lucio Andrés Illanes Albornoz <lucio@lucioillanes.de>
3
3
#
4
4
5
- #
6
- #
7
- #
5
+ for __ in $(find subr -name *.subr); do . "${__}"; done;
6
+ pre_setup_args "${@}"; pre_setup_env; pre_check; pre_subdirs;
7
+ build_files_init; {(
8
- for __ in subr/*.subr; do . "${__}"; done;
9
- set -o noglob;
10
- while [ ${#} -gt 0 ]; do
11
- case ${1} in
12
- -4) ARG_IPV4_ONLY=1; ;;
13
- -6) ARG_IPV6_ONLY=1; ;;
14
- -c) ARG_CLEAN=1; ;;
15
- -N) ARG_OFFLINE=1; ;;
16
- -i) ARG_IGNORE_SHA256SUMS=1; ;;
17
- -R) ARG_RELAXED=1; ;;
18
- --debug-minipix)
19
- ARG_DEBUG_MINIPIX=1; ;;
20
- -t*) ARG_TARBALL=1; [ "${1#-t.}" != "${1}" ] && TARBALL_SUFFIX="${1#-t.}"; ;;
21
- -v) ARG_VERBOSE=1; ;;
22
- -x) ARG_XTRACE=1; set -o xtrace; ;;
23
- -a) [ -z "${2}" ] && exec cat etc/build.usage || ARCH="${2}"; shift; ;;
24
- -b) [ -z "${2}" ] && exec cat etc/build.usage || BUILD="${2}"; shift; ;;
25
- -r) if [ -z "${2}" ]; then
26
- exec cat build.usage;
27
- elif [ "${2%:*}" = "${2}" ]; then
28
- ARG_RESTART="${2}";
29
- else
30
- ARG_RESTART="${2%:*}"; ARG_RESTART_AT="${2#*:}";
31
- fi;
32
- BUILD_PACKAGES_RESTART="$(echo ${ARG_RESTART} | sed "s/,/ /g")";
33
- shift; ;;
34
- *=*) set_var_unsafe "${1%%=*}" "${1#*=}"; ;;
35
- *) if lmatch "${1}" " " "${ALL_TARGETS}"; then
36
- BUILD_TARGETS_META="${BUILD_TARGETS_META:+${BUILD_TARGETS_META} }${1}";
37
- else
38
- exec cat etc/build.usage;
39
- fi; ;;
40
- esac; shift; done;
41
- pre_setup_env; pre_check; pre_subdirs; build_files_init;
42
-
43
- #
44
- #
45
- #
46
- {(
47
8
log_msg info "Build started by ${BUILD_USER:=${USER}}@${BUILD_HNAME:=$(hostname)} at ${BUILD_DATE_START}.";
48
9
log_env_vars "build (global)" ${LOG_ENV_VARS};
49
10
for BUILD_TARGET_LC in $(subst_tgts invariants ${BUILD_TARGETS_META:-world}); do
@@ -71,8 +32,7 @@ for BUILD_TARGET_LC in $(subst_tgts invariants ${BUILD_TARGETS_META:-world}); do
71
32
if [ "${BUILD_SCRIPT_RC:-0}" -ne 0 ]; then
72
33
break;
73
34
fi;
74
- done;
35
+ done; build_files_fini;
75
- build_files_fini;
76
36
log_msg info "${BUILD_NFINI} finished, ${BUILD_NSKIP} skipped, and ${BUILD_NFAIL} failed builds in ${BUILD_NBUILT} build script(s).";
77
37
log_msg info "Build time: ${BUILD_TIMES_HOURS} hour(s), ${BUILD_TIMES_MINUTES} minute(s), and ${BUILD_TIMES_SECS} second(s).";
78
38
if [ ${ARG_RELAXED:-0} -eq 1 ]\
@@ -80,10 +40,10 @@ if [ ${ARG_RELAXED:-0} -eq 1 ]\
80
40
log_msg info "Build script failure(s) in: ${BUILD_PKGS_FAILED}.";
81
41
fi;
82
42
exit "${BUILD_SCRIPT_RC:-0}")} 2>&1 | tee "${BUILD_LOG_FNAME}" & TEE_PID="${!}";
43
+
83
44
trap "rm -f ${BUILD_STATUS_IN_PROGRESS_FNAME}; \
84
45
log_msg fail \"Build aborted.\"; \
85
46
echo kill ${TEE_PID}; \
86
- kill ${TEE_PID}" HUP INT TERM USR1 USR2;
47
+ kill ${TEE_PID}" HUP INT TERM USR1 USR2; wait;
87
- wait;
88
48
89
49
# vim:filetype=sh
subr/pre_setup_args.subr ADDED
@@ -0,0 +1,67 @@
1
+ BUILD_ARGS_SPEC="
2
+ ARG_IPV4_ONLY:-4
3
+ ARG_IPV6_ONLY:-6
4
+ ARCH:arg:-a
5
+ BUILD:arg:-b
6
+ ARG_CLEAN:-c
7
+ ARG_DEBUG_MINIPIX:--debug-minipix
8
+ ARG_IGNORE_SHA256SUMS:-i
9
+ ARG_OFFLINE:-N
10
+ ARG_RELAXED:-R
11
+ ARG_RESTART:arg:-r
12
+ ARG_TARBALL:selfarg:-t
13
+ ARG_TARBALL:selfarg:-t.bz2
14
+ ARG_TARBALL:selfarg:-t.gz
15
+ ARG_TARBALL:selfarg:-t.xz
16
+ ARG_VERBOSE:-v
17
+ ARG_XTRACE:-x";
18
+
19
+ pre_setup_args() {
20
+ local _spec="${BUILD_ARGS_SPEC}" _spec_arg _found;
21
+ while [ ${#} -gt 0 ]; do
22
+ if [ "${1#-}" = "${1}" ]; then
23
+ break;
24
+ fi;
25
+ for _spec_arg in ${_spec}; do
26
+ case "${_spec_arg}" in
27
+ *:${1}) case "${_spec_arg#*:}" in
28
+ arg:*)
29
+ set_var_unsafe "${_spec_arg%%:*}" "${2}"; shift; ;;
30
+ selfarg:*)
31
+ set_var_unsafe "${_spec_arg%%:*}" "${1}"; ;;
32
+ *)
33
+ set_var_unsafe "${_spec_arg%%:*}" 1; ;;
34
+ esac; _found=1; break; ;;
35
+ *) _found=0; ;;
36
+ esac;
37
+ done;
38
+ if [ "${_found:-0}" -eq 0 ]; then
39
+ exec cat etc/build.usage;
40
+ else
41
+ shift;
42
+ fi;
43
+ done;
44
+ if [ -n "${ARG_TARBALL}" ]; then
45
+ if [ "${ARG_TARBALL#-t.}" != "${ARG_TARBALL}" ]; then
46
+ TARBALL_SUFFIX="${ARG_TARBALL#-t.}";
47
+ else
48
+ TARBALL_SUFFIX=xz;
49
+ fi;
50
+ fi;
51
+ if [ "${ARG_XTRACE:-0}" -eq 1 ]; then
52
+ set -o xtrace;
53
+ fi;
54
+ if [ -n "${ARG_RESTART}" ]; then
55
+ if [ "${ARG_RESTART%:*}" != "${ARG_RESTART}" ]; then
56
+ ARG_RESTART_AT="${ARG_RESTART#*:}"; ARG_RESTART="${ARG_RESTART%:*}";
57
+ fi;
58
+ BUILD_PACKAGES_RESTART="$(echo ${ARG_RESTART} | sed "s/,/ /g")";
59
+ fi;
60
+ while [ ${#} -gt 0 ]; do
61
+ case "${1}" in
62
+ *=*) set_var_unsafe "${1%%=*}" "${1#*=}"; ;;
63
+ *) BUILD_TARGETS_META="${BUILD_TARGETS_META:+${BUILD_TARGETS_META} }${1}"; ;;
64
+ esac; shift; done;
65
+ };
66
+
67
+ # vim:filetype=sh
file modified
+1 -4
subr/pre_setup_env.subr CHANGED
@@ -1,9 +1,6 @@
1
- #
2
- # set -o errexit -o noglob are assumed.
3
- #
4
-
5
1
pre_setup_env() {
6
2
local __;
3
+ set -o noglob;
7
4
if [ -z "${DEFAULT_BUILD_CPUS}" ]\
8
5
&& [ -e /proc/cpuinfo ]; then
9
6
DEFAULT_BUILD_CPUS=$(awk '/^processor/{cpus++} END{print cpus}' /proc/cpuinfo);