| |
| |
| |
| |
| exp_pkg_exec_filter_vars_fn() { |
| local _vname="${1}"; |
| case "${_vname}" in |
| DEFAULT|PKG_*) |
| return 0; ;; |
| BUILD_DLCACHEDIR|BUILD_WORKDIR|MIDIPIX_BUILD_PWD) |
| return 0; ;; |
| CONFIG_CACHE_GNULIB) |
| return 0; ;; |
| PREFIX|PREFIX_CROSS|PREFIX_MINGW32|PREFIX_MINIPIX|PREFIX_NATIVE|PREFIX_RPM) |
| return 0; ;; |
| *) return 1; ;; |
| esac; |
| }; |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| exp_pkg_exec_pre() { |
| local _group_name="${1}" _pkg_name="${2}" _restart_at="${3}"; |
| if [ -z "${PKG_URL:-}" ]\ |
| && [ -z "${PKG_URLS_GIT:-}" ]\ |
| && [ -z "${PKG_VERSION:-}" ]\ |
| && ! rtl_test_cmd "pkg_${_pkg_name}_all"; then |
| "${_dispatch_fn}" missing_pkg "${_group_name}" "${_pkg_name}"; |
| return 1; |
| elif ! ex_pkg_state_test "${_pkg_name}" "start" "${_restart_at}"; then |
| if [ "${PKG_NO_CLEAN_BASE_DIR:-0}" -eq 0 ]\ |
| && ! rtl_fileop rm "${PKG_BASE_DIR}" "${PKG_BUILD_DIR}" "${PKG_DESTDIR}" "${PKG_DESTDIR_HOST}"\ |
| || ! rtl_fileop mkdir "${PKG_BASE_DIR}"; then |
| return 1; |
| fi; |
| if ! rtl_fileop mkdir "${PKG_BUILD_DIR}" "${PKG_DESTDIR}"\ |
| || ! ex_pkg_state_set "${_pkg_name}" "start"; then |
| return 1; |
| fi; |
| fi; |
| rtl_fileop cd "${PKG_BUILD_DIR}"; |
| }; |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| exp_pkg_exec_step() { |
| local _group_name="${1}" _pkg_name="${2}" _restart_at="${3}" _step="${4}" \ |
| _fn_name="" _pkg_step_fn="" _rc=0; |
| if rtl_test_cmd "pkg_${_pkg_name}_${_step}"; then |
| _pkg_step_fn="pkg_${_pkg_name}_${_step}"; |
| else |
| _pkg_step_fn="pkg_${_step}"; |
| fi; |
| for _fn_name in \ |
| "pkg_${_pkg_name}_${_step}_pre" \ |
| "${_pkg_step_fn}" \ |
| "pkg_${_pkg_name}_${_step}_post"; do |
| if rtl_test_cmd "${_fn_name}"\ |
| && ! "${_fn_name}" "${_group_name}" "${_pkg_name}" "${_restart_at}"; then |
| _rc=1; break; |
| fi; |
| done; |
| return "${_rc}"; |
| }; |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| ex_pkg_exec() { |
| local _dispatch_fn="${1}" _group_name="${2}" _pkg_name="${3}" _restart_at="${4}" \ |
| _rc=0 _step="" _step_next=""; |
| if exp_pkg_exec_pre "${_group_name}" "${_pkg_name}" "${_restart_at}"\ |
| && "${_dispatch_fn}" start_pkg_child "${_group_name}" "${_pkg_name}"; then |
| if rtl_test_cmd "pkg_${_pkg_name}_all"; then |
| "pkg_${_pkg_name}_all" "${_restart_at}"; _rc="${?}"; |
| else set -- ${PKG_BUILD_STEPS}; |
| while [ ${#} -gt 0 ]; do |
| _step="${1}"; _step_next="${2:-}"; shift; |
| if [ "${ARG_DUMP_IN}" = "${_step}" ]; then |
| printf "" > "${BUILD_WORKDIR}/${_pkg_name}.dump"; |
| rtl_filter_vars exp_pkg_exec_filter_vars_fn >> "${BUILD_WORKDIR}/${_pkg_name}.dump"; |
| export >> "${BUILD_WORKDIR}/${_pkg_name}.dump"; |
| exit 1; |
| elif [ "${PKG_FORCE:-0}" -eq 0 ]\ |
| && ex_pkg_state_test "${_pkg_name}" "${_step}" "${_restart_at}" ; then |
| continue; |
| elif ! exp_pkg_exec_step "${_group_name}" "${_pkg_name}" "${_restart_at}" "${_step}"; then |
| _rc=1; break; |
| else |
| printf "step %s %s %s\n" "${_group_name}" "${_pkg_name}" "${_step}" >&3; |
| ex_pkg_state_set "${_pkg_name}" "${_step}" "${_step_next:+-${_step_next}}"; |
| fi; |
| done; |
| fi; |
| if [ "${_rc:-0}" -eq 0 ]; then |
| if [ -z "${_restart_at}" ]\ |
| || [ "${_restart_at}" = "ALL" ]; then |
| ex_pkg_state_set "${_pkg_name}" finish; |
| fi; |
| elif [ "${_rc:-0}" -ne 0 ]\ |
| && [ "${ARG_DUMP_ON_ABORT:-0}" -eq 1 ]; then |
| printf "" > "${BUILD_WORKDIR}/${_pkg_name}.dump"; |
| rtl_filter_vars exp_pkg_exec_filter_vars_fn >> "${BUILD_WORKDIR}/${_pkg_name}.dump"; |
| export >> "${BUILD_WORKDIR}/${_pkg_name}.dump"; |
| fi; |
| fi; |
| return "${_rc}"; |
| }; |
| |
| |