diff options
-rw-r--r-- | bin/phase-functions.sh | 23 | ||||
-rw-r--r-- | bin/phase-helpers.sh | 15 | ||||
-rw-r--r-- | bin/save-ebuild-env.sh | 4 |
3 files changed, 40 insertions, 2 deletions
diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh index c23be74d3..ff7d85520 100644 --- a/bin/phase-functions.sh +++ b/bin/phase-functions.sh @@ -277,7 +277,8 @@ dyn_clean() { "$PORTAGE_BUILDDIR"/.{configured,compiled,tested,packaged} \ "$PORTAGE_BUILDDIR"/.die_hooks \ "$PORTAGE_BUILDDIR"/.ipc_{in,out,lock} \ - "$PORTAGE_BUILDDIR"/.exit_status + "$PORTAGE_BUILDDIR"/.exit_status \ + "$PORTAGE_BUILDDIR"/.apply_user_patches rm -rf "${PORTAGE_BUILDDIR}/build-info" rm -rf "${WORKDIR}" @@ -381,6 +382,14 @@ dyn_prepare() { die "Failed to create $PORTAGE_BUILDDIR/.prepared" vecho ">>> Source prepared." ebuild_phase post_src_prepare + case "${EAPI}" in + 0|1|2|3|4|4-python|4-slot-abi) + ;; + *) + [[ ! -f ${PORTAGE_BUILDDIR}/.apply_user_patches ]] && \ + die "src_prepare must call apply_user_patches at least once" + ;; + esac trap - SIGINT SIGQUIT } @@ -804,6 +813,18 @@ _ebuild_phase_funcs() { eval "default_src_install() { _eapi4_src_install \"\$@\" ; }" [[ $phase_func = src_install ]] && \ eval "default() { _eapi4_$phase_func \"\$@\" ; }" + case "$eapi" in + 4|4-python|4-slot-abi) + ;; + *) + ! declare -F src_prepare >/dev/null && \ + src_prepare() { _eapi5_src_prepare "$@" ; } + default_src_prepare() { _eapi5_src_prepare "$@" ; } + [[ $phase_func = src_prepare ]] && \ + eval "default() { _eapi5_$phase_func \"\$@\" ; }" + apply_user_patches() { _eapi5_apply_user_patches "$@" ; } + ;; + esac ;; esac diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index 3f02c0701..3230870c2 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -598,6 +598,21 @@ _eapi4_src_install() { fi } +_eapi5_src_prepare() { + apply_user_patches +} + +apply_user_patches() { + die "apply_user_patches is not supported with EAPI ${EAPI}" +} + +_eapi5_apply_user_patches() { + # This is a no-op that is just enough to fullfill the spec. + [[ -f ${PORTAGE_BUILDDIR}/.apply_user_patches ]] && return 1 + > "${PORTAGE_BUILDDIR}/.apply_user_patches" || die + return 1 +} + # @FUNCTION: has_version # @USAGE: <DEPEND ATOM> # @DESCRIPTION: diff --git a/bin/save-ebuild-env.sh b/bin/save-ebuild-env.sh index 47a2acae5..4bf6e4e18 100644 --- a/bin/save-ebuild-env.sh +++ b/bin/save-ebuild-env.sh @@ -46,7 +46,8 @@ save_ebuild_env() { done unset x - unset -f assert assert_sigpipe_ok dump_trace die diefunc \ + unset -f apply_user_patches assert assert_sigpipe_ok \ + dump_trace die diefunc \ quiet_mode vecho elog_base eqawarn elog \ esyslog einfo einfon ewarn eerror ebegin _eend eend KV_major \ KV_minor KV_micro KV_to_int get_KV unset_colors set_colors has \ @@ -67,6 +68,7 @@ save_ebuild_env() { save_ebuild_env filter_readonly_variables preprocess_ebuild_env \ set_unless_changed unset_unless_changed source_all_bashrcs \ ebuild_main ebuild_phase ebuild_phase_with_hooks \ + _eapi5_apply_user_patches _eapi5_src_prepare \ _ebuild_arg_to_phase _ebuild_phase_funcs default \ _hasg _hasgq _unpack_tar \ ${QA_INTERCEPTORS} |