f6a5cb
{build.sh,subr/pre_setup_args.subr}: split.
@@ -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
|
@@ -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
|
@@ -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);
|