summaryrefslogtreecommitdiffhomepage
path: root/subr
diff options
context:
space:
mode:
Diffstat (limited to 'subr')
-rw-r--r--subr/ex_pkg_dispatch.subr104
1 files changed, 53 insertions, 51 deletions
diff --git a/subr/ex_pkg_dispatch.subr b/subr/ex_pkg_dispatch.subr
index 99c9ff8f..fc1ddaa9 100644
--- a/subr/ex_pkg_dispatch.subr
+++ b/subr/ex_pkg_dispatch.subr
@@ -9,63 +9,65 @@ ex_pkg_dispatch() {
if [ "${_pkg_name#*_flavour_*}" != "${_pkg_name}" ]; then
PKG_NAME_PARENT="${_pkg_name%_flavour_*}";
fi;
+ if ex_pkg_state_test "${_pkg_name}" finish; then
+ if [ -z "${_restart}" ]\
+ && [ "${_tgt_name}" != "INVARIANTS" ]; then
+ return 0;
+ fi;
+ fi;
(set -o errexit -o noglob;
ex_pkg_vars; ex_pkg_env;
ex_build_fileop mkdir "${PKG_BASE_DIR}";
ex_build_fileop cd "${PKG_BASE_DIR}";
- if [ -n "${_restart}" ]\
- || [ "${_tgt_name}" = "INVARIANTS" ]\
- || ! ex_pkg_state_test "${_pkg_name}" finish; then
- set -- $(ex_lfilter -not "${BUILD_STEPS}" \
- "$(ex_get_var_unsafe PKG_$(ex_toupper "${_pkg_name}")_BUILD_STEPS_DISABLE)");
- while [ ${#} -gt 0 ]; do
- _pkg_step_cmds=""; _pkg_step_cmd_args="";
- case "${1#*:}" in
- dynamic)
- if [ "${_tgt_name}" = "INVARIANTS" ]; then
- _pkg_step_cmds="pkg_${_pkg_name}_${1%:*} pkg_${1%:*}";
- elif [ -n "${_restart}" ]; then
- if [ -z "${_restart_at}" ]\
- || ex_lmatch "${_restart_at}" , "${1%:*}"; then
- _pkg_step_cmds="pkg_${_pkg_name}_${1%:*} pkg_${1%:*}";
- fi;
- elif ! ex_pkg_state_test "${_pkg_name}" "${1%:*}"; then
- _pkg_step_cmds="pkg_${_pkg_name}_${1%:*} pkg_${1%:*}";
- fi; ;;
- invariant)
- _pkg_step_cmds="pkg_${1%:*}"; ;;
- variant)
- if ex_lmatch "${_restart_at}" "," "${1%:*}"; then
+ set -- $(ex_lfilter -not "${BUILD_STEPS}" \
+ "$(ex_get_var_unsafe PKG_$(ex_toupper "${_pkg_name}")_BUILD_STEPS_DISABLE)");
+ while [ ${#} -gt 0 ]; do
+ _pkg_step_cmds=""; _pkg_step_cmd_args="";
+ case "${1#*:}" in
+ dynamic)
+ if [ "${_tgt_name}" = "INVARIANTS" ]; then
+ _pkg_step_cmds="pkg_${_pkg_name}_${1%:*} pkg_${1%:*}";
+ elif [ -n "${_restart}" ]; then
+ if [ -z "${_restart_at}" ]\
+ || ex_lmatch "${_restart_at}" , "${1%:*}"; then
_pkg_step_cmds="pkg_${_pkg_name}_${1%:*} pkg_${1%:*}";
- fi; ;;
- virtual)
- _pkg_step_cmds="pkg_${_pkg_name}_${1%:*}";
- _pkg_step_cmd_args="${_restart_at:-ALL}"; ;;
- all)
- if ex_test_cmd "pkg_${_pkg_name}_${1%:*}"; then
- "pkg_${_pkg_name}_${1%:*}" "${_restart_at:-ALL}";
- break;
- fi; ;;
- finish) ex_pkg_state_push "${_pkg_name}" finish; ;;
- *) ;;
- esac;
- for __ in ${_pkg_step_cmds}; do
- if ex_test_cmd "${__}"; then
- ex_test_cmd "pkg_${_pkg_name}_${1%:*}_pre" \
- && "pkg_${_pkg_name}_${1%:*}_pre"
- "${__}" ${_pkg_step_cmd_args};
- ex_test_cmd "pkg_${_pkg_name}_${1%:*}_post" \
- && "pkg_${_pkg_name}_${1%:*}_post"
- if [ "${1#*:}" != "invariant" ]\
- && [ ${#} -ge 2 ]; then
- ex_pkg_state_push "${_pkg_name}" "${1%:*}" "-${2#*:}";
- else
- ex_pkg_state_push "${_pkg_name}" "${1%:*}";
- fi; break;
fi;
- done;
- shift; done;
- fi); return ${?};
+ elif ! ex_pkg_state_test "${_pkg_name}" "${1%:*}"; then
+ _pkg_step_cmds="pkg_${_pkg_name}_${1%:*} pkg_${1%:*}";
+ fi; ;;
+ invariant)
+ _pkg_step_cmds="pkg_${1%:*}"; ;;
+ variant)
+ if ex_lmatch "${_restart_at}" "," "${1%:*}"; then
+ _pkg_step_cmds="pkg_${_pkg_name}_${1%:*} pkg_${1%:*}";
+ fi; ;;
+ virtual)
+ _pkg_step_cmds="pkg_${_pkg_name}_${1%:*}";
+ _pkg_step_cmd_args="${_restart_at:-ALL}"; ;;
+ all)
+ if ex_test_cmd "pkg_${_pkg_name}_${1%:*}"; then
+ "pkg_${_pkg_name}_${1%:*}" "${_restart_at:-ALL}";
+ break;
+ fi; ;;
+ finish) ex_pkg_state_push "${_pkg_name}" finish; ;;
+ *) ;;
+ esac;
+ for __ in ${_pkg_step_cmds}; do
+ if ex_test_cmd "${__}"; then
+ ex_test_cmd "pkg_${_pkg_name}_${1%:*}_pre" \
+ && "pkg_${_pkg_name}_${1%:*}_pre"
+ "${__}" ${_pkg_step_cmd_args};
+ ex_test_cmd "pkg_${_pkg_name}_${1%:*}_post" \
+ && "pkg_${_pkg_name}_${1%:*}_post"
+ if [ "${1#*:}" != "invariant" ]\
+ && [ ${#} -ge 2 ]; then
+ ex_pkg_state_push "${_pkg_name}" "${1%:*}" "-${2#*:}";
+ else
+ ex_pkg_state_push "${_pkg_name}" "${1%:*}";
+ fi; break;
+ fi;
+ done;
+ shift; done); return ${?};
};
# vim:filetype=sh