aboutsummaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorBrian Dolbec <dolsen@gentoo.org>2014-09-19 22:04:47 -0700
committerBrian Dolbec <dolsen@gentoo.org>2014-09-19 22:04:47 -0700
commitc775565a9f0c2aa5872559f3927d6608e840cb1d (patch)
tree083232e6c593cde794c52e16dea836d6b6e3b442 /bin
parenttestpath: Add a generic testpath script (diff)
downloadportage-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.sh117
-rw-r--r--bin/save-ebuild-env.sh2
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