| |
| |
| |
| |
| exp_pkg_exec_pre() { |
| local _pkg_name="${1}" _tgt_name="${2}" _restart_at="${3}"; |
| if [ -z "${PKG_URL}" ]\ |
| && [ -z "${PKG_URLS_GIT}" ]\ |
| && [ -z "${PKG_VERSION}" ]\ |
| && ! ex_rtl_test_cmd "pkg_${_pkg_name}_all"; then |
| "${_dispatch_fn}" exec_missing "${_pkg_name}" "${_tgt_name}"; |
| return 1; |
| elif ! ex_pkg_state_test "${_pkg_name}" "start" "${_restart_at}"; then |
| if [ "${PKG_NO_CLEAN_BASE_DIR:-0}" -eq 0 ]; then |
| ex_rtl_fileop rm "${PKG_BASE_DIR}" "${PKG_BUILD_DIR}" "${PKG_DESTDIR}"; |
| ex_rtl_fileop mkdir "${PKG_BASE_DIR}"; |
| fi; |
| ex_rtl_fileop mkdir "${PKG_BUILD_DIR}" "${PKG_DESTDIR}"; |
| ex_pkg_state_set "${_pkg_name}" "start"; |
| fi; |
| ex_rtl_fileop cd "${PKG_BUILD_DIR}"; |
| }; |
| |
| ex_pkg_exec() { |
| local _pkg_name="${1}" _tgt_name="${2}" _restart_at="${3}" \ |
| _step="" _step_cmd="" _step_cmd_pfx="" _step_rc=""; |
| trap "if [ \${?} -eq 0 ]; then \ |
| echo \"done ${_pkg_name} ${_tgt_name}\" >&3; \ |
| else \ |
| echo \"fail ${_pkg_name} ${_tgt_name}\" >&3; \ |
| pkill -U "${$}"; \ |
| fi;" EXIT HUP INT TERM USR1 USR2; |
| exp_pkg_exec_pre "${_pkg_name}" "${_tgt_name}" "${_restart_at}"; |
| "${_dispatch_fn}" exec_start "${_pkg_name}" "${_tgt_name}"; |
| if ex_rtl_test_cmd "pkg_${_pkg_name}_all"; then |
| "pkg_${_pkg_name}_all" "${_restart_at}"; |
| else set -- ${PKG_BUILD_STEPS}; |
| while [ ${#} -gt 0 ]; do |
| _step="${1}"; shift; |
| if ex_pkg_state_test "${_pkg_name}" "${_step}" \ |
| "${_restart_at}"; then |
| continue; |
| else ex_rtl_try_run \ |
| "pkg_${_pkg_name}_${_step}_pre" \ |
| "${_pkg_name}" "${_tgt_name}" "${_restart_at}"; |
| if ex_rtl_test_cmd "pkg_${_pkg_name}_${_step}"; then |
| ex_rtl_try_run "pkg_${_pkg_name}_${_step}" \ |
| "${_pkg_name}" "${_tgt_name}" "${_restart_at}"; |
| else |
| ex_rtl_try_run "pkg_${_step}" \ |
| "${_pkg_name}" "${_tgt_name}" "${_restart_at}"; |
| fi; |
| ex_rtl_try_run \ |
| "pkg_${_pkg_name}_${_step}_post" \ |
| "${_pkg_name}" "${_tgt_name}" "${_restart_at}"; |
| |
| fi; |
| echo "step ${_pkg_name} ${_tgt_name} ${_step}" >&3; |
| "${_dispatch_fn}" exec_step "${_pkg_name}" "${_tgt_name}" "${_step}"; |
| ex_pkg_state_set "${_pkg_name}" "${_step}" "${1:+-${1}}"; |
| done; |
| fi; |
| "${_dispatch_fn}" exec_finish "${_pkg_name}" "${_tgt_name}"; |
| ex_pkg_state_set "${_pkg_name}" finish; |
| }; |
| |
| |