diff options
author | Brian Dolbec <dolsen@gentoo.org> | 2014-09-19 22:04:47 -0700 |
---|---|---|
committer | Brian Dolbec <dolsen@gentoo.org> | 2014-09-19 22:04:47 -0700 |
commit | c775565a9f0c2aa5872559f3927d6608e840cb1d (patch) | |
tree | 083232e6c593cde794c52e16dea836d6b6e3b442 /bin | |
parent | testpath: Add a generic testpath script (diff) | |
download | portage-c775565a9f0c2aa5872559f3927d6608e840cb1d.tar.gz portage-c775565a9f0c2aa5872559f3927d6608e840cb1d.tar.bz2 portage-c775565a9f0c2aa5872559f3927d6608e840cb1d.zip |
Revert "Rewrite default ebuild phase setting code" (bug 523182)
This reverts commit 772ed29fd9e7cf722aed943adbe33a27f250e1ff.
X-Gentoo-Bug: 523182
X-Gentoo-Url: https://bugs.gentoo.org/show_bug.cgi?id=523182
Diffstat (limited to 'bin')
-rw-r--r-- | bin/phase-functions.sh | 117 | ||||
-rw-r--r-- | bin/save-ebuild-env.sh | 2 |
2 files changed, 66 insertions, 53 deletions
diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh index 9bc3eb558..df385b841 100644 --- a/bin/phase-functions.sh +++ b/bin/phase-functions.sh @@ -750,78 +750,91 @@ __ebuild_phase_funcs() { [ $# -ne 2 ] && die "expected exactly 2 args, got $#: $*" local eapi=$1 local phase_func=$2 - local all_phases="src_compile pkg_config src_configure pkg_info - src_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst - src_prepare pkg_prerm pkg_pretend pkg_setup src_test src_unpack" - local x - - # First, set up the error handlers for default* - for x in ${all_phases} ; do - eval "default_${x}() { - die \"default_${x}() is not supported in EAPI='${eapi}' in phase ${phase_func}\" - }" - done + local default_phases="pkg_nofetch src_unpack src_prepare src_configure + src_compile src_install src_test" + local x y default_func="" - # We can just call the specific handler -- it will either error out - # on invalid phase or run it. - eval "default() { - default_${phase_func} - }" + for x in pkg_nofetch src_unpack src_test ; do + declare -F $x >/dev/null || \ + eval "$x() { __eapi0_$x \"\$@\" ; }" + done case "$eapi" in - 0|1) # EAPIs not supporting 'default' - for x in pkg_nofetch src_unpack src_test ; do - declare -F $x >/dev/null || \ - eval "$x() { __eapi0_$x; }" - done + 0|1) if ! declare -F src_compile >/dev/null ; then case "$eapi" in 0) - src_compile() { __eapi0_src_compile; } + src_compile() { __eapi0_src_compile "$@" ; } ;; *) - src_compile() { __eapi1_src_compile; } + src_compile() { __eapi1_src_compile "$@" ; } ;; esac fi + + for x in $default_phases ; do + eval "default_$x() { + die \"default_$x() is not supported with EAPI='$eapi' during phase $phase_func\" + }" + done + + eval "default() { + die \"default() is not supported with EAPI='$eapi' during phase $phase_func\" + }" + ;; - *) # EAPIs supporting 'default' - - # defaults starting with EAPI 0 - [[ ${phase_func} == pkg_nofetch ]] && \ - default_pkg_nofetch() { __eapi0_pkg_nofetch; } - [[ ${phase_func} == src_unpack ]] && \ - default_src_unpack() { __eapi0_src_unpack; } - [[ ${phase_func} == src_test ]] && \ - default_src_test() { __eapi0_src_test; } - - # defaults starting with EAPI 2 - [[ ${phase_func} == src_configure ]] && \ - default_src_configure() { __eapi2_src_configure; } - [[ ${phase_func} == src_compile ]] && \ - default_src_compile() { __eapi2_src_compile; } - - # bind supported phases to the defaults - declare -F src_unpack >/dev/null || \ - src_unpack() { default; } + *) + declare -F src_configure >/dev/null || \ - src_configure() { default; } + src_configure() { __eapi2_src_configure "$@" ; } + declare -F src_compile >/dev/null || \ - src_compile() { default; } - declare -F src_test >/dev/null || \ - src_test() { default; } + src_compile() { __eapi2_src_compile "$@" ; } + + has $eapi 2 3 || declare -F src_install >/dev/null || \ + src_install() { __eapi4_src_install "$@" ; } - # defaults starting with EAPI 4 - if ! has ${eapi} 2 3; then - [[ ${phase_func} == src_install ]] && \ - default_src_install() { __eapi4_src_install; } + if has $phase_func $default_phases ; then + + __eapi2_pkg_nofetch () { __eapi0_pkg_nofetch "$@" ; } + __eapi2_src_unpack () { __eapi0_src_unpack "$@" ; } + __eapi2_src_prepare () { true ; } + __eapi2_src_test () { __eapi0_src_test "$@" ; } + __eapi2_src_install () { die "$FUNCNAME is not supported" ; } + + for x in $default_phases ; do + eval "default_$x() { __eapi2_$x \"\$@\" ; }" + done + + eval "default() { __eapi2_$phase_func \"\$@\" ; }" + + case "$eapi" in + 2|3) + ;; + *) + eval "default_src_install() { __eapi4_src_install \"\$@\" ; }" + [[ $phase_func = src_install ]] && \ + eval "default() { __eapi4_$phase_func \"\$@\" ; }" + ;; + esac + + else + + for x in $default_phases ; do + eval "default_$x() { + die \"default_$x() is not supported in phase $default_func\" + }" + done + + eval "default() { + die \"default() is not supported with EAPI='$eapi' during phase $phase_func\" + }" - declare -F src_install >/dev/null || \ - src_install() { default; } fi + ;; esac } diff --git a/bin/save-ebuild-env.sh b/bin/save-ebuild-env.sh index de0c49935..98cff839e 100644 --- a/bin/save-ebuild-env.sh +++ b/bin/save-ebuild-env.sh @@ -42,7 +42,7 @@ __save_ebuild_env() { for x in pkg_setup pkg_nofetch src_unpack src_prepare src_configure \ src_compile src_test src_install pkg_preinst pkg_postinst \ - pkg_prerm pkg_postrm pkg_config pkg_info pkg_pretend ; do + pkg_prerm pkg_postrm ; do unset -f default_$x __eapi{0,1,2,3,4}_$x done unset x |