1da591
{build.sh,subr/pkg_setup_dispatch.subr}: split.
@@ -54,68 +54,7 @@ for BUILD_TARGET_LC in $(subst_tgts invariants ${BUILD_TARGETS_META:-world}); do
|
|
54
54
|
BUILD_PACKAGES="$(lfilter "${BUILD_PACKAGES}" "${BUILD_PACKAGES_RESTART}")";
|
55
55
|
fi;
|
56
56
|
for PKG_NAME in ${BUILD_PACKAGES}; do
|
57
|
-
|
57
|
+
pkg_setup_dispatch "${BUILD_TARGET}" "${PKG_NAME}" "${ARG_RESTART}" "${ARG_RESTART_AT}";
|
58
|
-
#
|
59
|
-
#
|
60
|
-
unset PKG_NAME_PARENT;
|
61
|
-
if [ "${PKG_NAME#*_flavour_*}" != "${PKG_NAME}" ]; then
|
62
|
-
PKG_NAME_PARENT="${PKG_NAME%_flavour_*}";
|
63
|
-
else
|
64
|
-
unset BUILD_SCRIPT_RC;
|
65
|
-
fi;
|
66
|
-
(set -o errexit -o noglob;
|
67
|
-
if [ -n "${BUILD_PACKAGES_RESTART}" ]\
|
68
|
-
|| [ "${BUILD_TARGET}" = "INVARIANTS" ]\
|
69
|
-
|| ! is_build_script_done "${PKG_NAME}" finish; then
|
70
|
-
set -- $(lfilter -not "${BUILD_STEPS}" \
|
71
|
-
"$(get_var_unsafe PKG_$(toupper "${PKG_NAME}")_BUILD_STEPS_DISABLE)");
|
72
|
-
while [ ${#} -gt 0 ]; do
|
73
|
-
_pkg_step_cmds=""; _pkg_step_cmd_args="";
|
74
|
-
case "${1#*:}" in
|
75
|
-
dynamic)
|
76
|
-
if [ "${BUILD_TARGET}" = "INVARIANTS" ]; then
|
77
|
-
_pkg_step_cmds="pkg_${PKG_NAME}_${1%:*} pkg_${1%:*}";
|
78
|
-
elif [ -n "${BUILD_PACKAGES_RESTART}" ]; then
|
79
|
-
if [ -z "${ARG_RESTART_AT}" ]\
|
80
|
-
|| lmatch "${ARG_RESTART_AT}" , "${1%:*}"; then
|
81
|
-
_pkg_step_cmds="pkg_${PKG_NAME}_${1%:*} pkg_${1%:*}";
|
82
|
-
fi;
|
83
|
-
elif ! is_build_script_done "${PKG_NAME}" "${1%:*}"; then
|
84
|
-
_pkg_step_cmds="pkg_${PKG_NAME}_${1%:*} pkg_${1%:*}";
|
85
|
-
fi; ;;
|
86
|
-
invariant)
|
87
|
-
_pkg_step_cmds="pkg_${1%:*}"; ;;
|
88
|
-
variant)
|
89
|
-
if lmatch "${ARG_RESTART_AT}" "," "${1%:*}"; then
|
90
|
-
_pkg_step_cmds="pkg_${PKG_NAME}_${1%:*} pkg_${1%:*}";
|
91
|
-
fi; ;;
|
92
|
-
virtual)
|
93
|
-
_pkg_step_cmds="pkg_${PKG_NAME}_${1%:*}";
|
94
|
-
_pkg_step_cmd_args="${ARG_RESTART_AT:-ALL}"; ;;
|
95
|
-
all)
|
96
|
-
if test_cmd "pkg_${PKG_NAME}_${1%:*}"; then
|
97
|
-
"pkg_${PKG_NAME}_${1%:*}" "${ARG_RESTART_AT:-ALL}";
|
98
|
-
break;
|
99
|
-
fi; ;;
|
100
|
-
*) continue; ;;
|
101
|
-
esac;
|
102
|
-
for __ in ${_pkg_step_cmds}; do
|
103
|
-
if test_cmd "${__}"; then
|
104
|
-
test_cmd "pkg_${PKG_NAME}_${1%:*}_pre" \
|
105
|
-
&& "pkg_${PKG_NAME}_${1%:*}_pre"
|
106
|
-
"${__}" ${_pkg_step_cmd_args};
|
107
|
-
test_cmd "pkg_${PKG_NAME}_${1%:*}_post" \
|
108
|
-
&& "pkg_${PKG_NAME}_${1%:*}_post"
|
109
|
-
if [ "${1#*:}" != "always" ]\
|
110
|
-
&& [ ${#} -ge 2 ]; then
|
111
|
-
set_build_script_done "${PKG_NAME}" "${1%:*}" "-${2#*:}";
|
112
|
-
else
|
113
|
-
set_build_script_done "${PKG_NAME}" "${1%:*}";
|
114
|
-
fi; break;
|
115
|
-
fi;
|
116
|
-
done;
|
117
|
-
shift; done;
|
118
|
-
fi);
|
119
58
|
case "${BUILD_SCRIPT_RC:=${?}}" in
|
120
59
|
0) log_msg succ "Finished \`${PKG_NAME}' build.";
|
121
60
|
: $((BUILD_NFINI+=1)); continue; ;;
|
@@ -0,0 +1,67 @@
|
|
1
|
+
|
2
|
+
set -o errexit -o noglob are assumed.
|
3
|
+
|
4
|
+
|
5
|
+
pkg_setup_dispatch() {
|
6
|
+
local _tgt_name="${1}" _pkg_name="${2}" \
|
7
|
+
_restart="${3}" _restart_at="${4}" \
|
8
|
+
_pkg_name_parent _pkg_step_cmds _pkg_step_cmd_args;
|
9
|
+
if [ "${_pkg_name#*_flavour_*}" != "${_pkg_name}" ]; then
|
10
|
+
_pkg_name_parent="${_pkg_name%_flavour_*}";
|
11
|
+
fi;
|
12
|
+
(set -o errexit -o noglob;
|
13
|
+
if [ -n "${_restart}" ]\
|
14
|
+
|| [ "${_tgt_name}" = "INVARIANTS" ]\
|
15
|
+
|| ! is_build_script_done "${_pkg_name}" finish; then
|
16
|
+
set -- $(lfilter -not "${BUILD_STEPS}" \
|
17
|
+
"$(get_var_unsafe PKG_$(toupper "${_pkg_name}")_BUILD_STEPS_DISABLE)");
|
18
|
+
while [ ${#} -gt 0 ]; do
|
19
|
+
_pkg_step_cmds=""; _pkg_step_cmd_args="";
|
20
|
+
case "${1#*:}" in
|
21
|
+
dynamic)
|
22
|
+
if [ "${_tgt_name}" = "INVARIANTS" ]; then
|
23
|
+
_pkg_step_cmds="pkg_${_pkg_name}_${1%:*} pkg_${1%:*}";
|
24
|
+
elif [ -n "${_restart}" ]; then
|
25
|
+
if [ -z "${_restart_at}" ]\
|
26
|
+
|| lmatch "${_restart_at}" , "${1%:*}"; then
|
27
|
+
_pkg_step_cmds="pkg_${_pkg_name}_${1%:*} pkg_${1%:*}";
|
28
|
+
fi;
|
29
|
+
elif ! is_build_script_done "${_pkg_name}" "${1%:*}"; then
|
30
|
+
_pkg_step_cmds="pkg_${_pkg_name}_${1%:*} pkg_${1%:*}";
|
31
|
+
fi; ;;
|
32
|
+
invariant)
|
33
|
+
_pkg_step_cmds="pkg_${1%:*}"; ;;
|
34
|
+
variant)
|
35
|
+
if lmatch "${_restart_at}" "," "${1%:*}"; then
|
36
|
+
_pkg_step_cmds="pkg_${_pkg_name}_${1%:*} pkg_${1%:*}";
|
37
|
+
fi; ;;
|
38
|
+
virtual)
|
39
|
+
_pkg_step_cmds="pkg_${_pkg_name}_${1%:*}";
|
40
|
+
_pkg_step_cmd_args="${_restart_at:-ALL}"; ;;
|
41
|
+
all)
|
42
|
+
if test_cmd "pkg_${_pkg_name}_${1%:*}"; then
|
43
|
+
"pkg_${_pkg_name}_${1%:*}" "${_restart_at:-ALL}";
|
44
|
+
break;
|
45
|
+
fi; ;;
|
46
|
+
*) continue; ;;
|
47
|
+
esac;
|
48
|
+
for __ in ${_pkg_step_cmds}; do
|
49
|
+
if test_cmd "${__}"; then
|
50
|
+
test_cmd "pkg_${_pkg_name}_${1%:*}_pre" \
|
51
|
+
&& "pkg_${_pkg_name}_${1%:*}_pre"
|
52
|
+
"${__}" ${_pkg_step_cmd_args};
|
53
|
+
test_cmd "pkg_${_pkg_name}_${1%:*}_post" \
|
54
|
+
&& "pkg_${_pkg_name}_${1%:*}_post"
|
55
|
+
if [ "${1#*:}" != "always" ]\
|
56
|
+
&& [ ${#} -ge 2 ]; then
|
57
|
+
set_build_script_done "${_pkg_name}" "${1%:*}" "-${2#*:}";
|
58
|
+
else
|
59
|
+
set_build_script_done "${_pkg_name}" "${1%:*}";
|
60
|
+
fi; break;
|
61
|
+
fi;
|
62
|
+
done;
|
63
|
+
shift; done;
|
64
|
+
fi); return ${?};
|
65
|
+
};
|
66
|
+
|
67
|
+
vim:filetype=sh
|