Gentoo Archives: gentoo-commits

From: Brian Dolbec <brian.dolbec@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: bin/
Date: Fri, 26 Sep 2014 02:17:25
Message-Id: 1411694533.042e1e0695255470e3194b6d343c74a1f2ec7f4b.dol-sen@gentoo
1 commit: 042e1e0695255470e3194b6d343c74a1f2ec7f4b
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Thu Sep 25 18:33:44 2014 +0000
4 Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
5 CommitDate: Fri Sep 26 01:22:13 2014 +0000
6 URL: http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=042e1e06
7
8 Re-apply "Rewrite default ebuild phase setting code" (bug 523182)"
9
10 Add empty default src_prepare() as required by PMS
11 Add missing bind for pkg_nofetch. Spotted-by: Zac Medico <zmedico <AT> gentoo.org>
12
13 X-Gento-Bug: 523182
14 X-Gentoo-URL: https://bugs.gentoo.org/show_bug.cgi?id=523182
15 Merged 3 pathces by: Brian Dolbec <dolsen <AT> gentoo.org>
16
17 ---
18 bin/phase-functions.sh | 123 +++++++++++++++++++++++--------------------------
19 bin/phase-helpers.sh | 4 ++
20 bin/save-ebuild-env.sh | 2 +-
21 3 files changed, 63 insertions(+), 66 deletions(-)
22
23 diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh
24 index df385b8..d292ad3 100644
25 --- a/bin/phase-functions.sh
26 +++ b/bin/phase-functions.sh
27 @@ -750,91 +750,84 @@ __ebuild_phase_funcs() {
28 [ $# -ne 2 ] && die "expected exactly 2 args, got $#: $*"
29 local eapi=$1
30 local phase_func=$2
31 - local default_phases="pkg_nofetch src_unpack src_prepare src_configure
32 - src_compile src_install src_test"
33 - local x y default_func=""
34 -
35 - for x in pkg_nofetch src_unpack src_test ; do
36 - declare -F $x >/dev/null || \
37 - eval "$x() { __eapi0_$x \"\$@\" ; }"
38 + local all_phases="src_compile pkg_config src_configure pkg_info
39 + src_install pkg_nofetch pkg_postinst pkg_postrm pkg_preinst
40 + src_prepare pkg_prerm pkg_pretend pkg_setup src_test src_unpack"
41 + local x
42 +
43 + # First, set up the error handlers for default*
44 + for x in ${all_phases} ; do
45 + eval "default_${x}() {
46 + die \"default_${x}() is not supported in EAPI='${eapi}' in phase ${phase_func}\"
47 + }"
48 done
49
50 + # We can just call the specific handler -- it will either error out
51 + # on invalid phase or run it.
52 + eval "default() {
53 + default_${phase_func}
54 + }"
55 +
56 case "$eapi" in
57 + 0|1) # EAPIs not supporting 'default'
58
59 - 0|1)
60 + for x in pkg_nofetch src_unpack src_test ; do
61 + declare -F $x >/dev/null || \
62 + eval "$x() { __eapi0_$x; }"
63 + done
64
65 if ! declare -F src_compile >/dev/null ; then
66 case "$eapi" in
67 0)
68 - src_compile() { __eapi0_src_compile "$@" ; }
69 + src_compile() { __eapi0_src_compile; }
70 ;;
71 *)
72 - src_compile() { __eapi1_src_compile "$@" ; }
73 + src_compile() { __eapi1_src_compile; }
74 ;;
75 esac
76 fi
77 -
78 - for x in $default_phases ; do
79 - eval "default_$x() {
80 - die \"default_$x() is not supported with EAPI='$eapi' during phase $phase_func\"
81 - }"
82 - done
83 -
84 - eval "default() {
85 - die \"default() is not supported with EAPI='$eapi' during phase $phase_func\"
86 - }"
87 -
88 ;;
89
90 - *)
91 -
92 + *) # EAPIs supporting 'default'
93 +
94 + # defaults starting with EAPI 0
95 + [[ ${phase_func} == pkg_nofetch ]] && \
96 + default_pkg_nofetch() { __eapi0_pkg_nofetch; }
97 + [[ ${phase_func} == src_unpack ]] && \
98 + default_src_unpack() { __eapi0_src_unpack; }
99 + [[ ${phase_func} == src_test ]] && \
100 + default_src_test() { __eapi0_src_test; }
101 +
102 + # defaults starting with EAPI 2
103 + [[ ${phase_func} == src_prepare ]] && \
104 + default_src_prepare() { __eapi2_src_prepare; }
105 + [[ ${phase_func} == src_configure ]] && \
106 + default_src_configure() { __eapi2_src_configure; }
107 + [[ ${phase_func} == src_compile ]] && \
108 + default_src_compile() { __eapi2_src_compile; }
109 +
110 + # bind supported phases to the defaults
111 + declare -F pkg_nofetch >/dev/null || \
112 + pkg_nofetch() { default; }
113 + declare -F src_unpack >/dev/null || \
114 + src_unpack() { default; }
115 + declare -F src_prepare >/dev/null || \
116 + src_prepare() { default; }
117 declare -F src_configure >/dev/null || \
118 - src_configure() { __eapi2_src_configure "$@" ; }
119 -
120 + src_configure() { default; }
121 declare -F src_compile >/dev/null || \
122 - src_compile() { __eapi2_src_compile "$@" ; }
123 -
124 - has $eapi 2 3 || declare -F src_install >/dev/null || \
125 - src_install() { __eapi4_src_install "$@" ; }
126 + src_compile() { default; }
127 + declare -F src_test >/dev/null || \
128 + src_test() { default; }
129
130 - if has $phase_func $default_phases ; then
131 -
132 - __eapi2_pkg_nofetch () { __eapi0_pkg_nofetch "$@" ; }
133 - __eapi2_src_unpack () { __eapi0_src_unpack "$@" ; }
134 - __eapi2_src_prepare () { true ; }
135 - __eapi2_src_test () { __eapi0_src_test "$@" ; }
136 - __eapi2_src_install () { die "$FUNCNAME is not supported" ; }
137 -
138 - for x in $default_phases ; do
139 - eval "default_$x() { __eapi2_$x \"\$@\" ; }"
140 - done
141 -
142 - eval "default() { __eapi2_$phase_func \"\$@\" ; }"
143 -
144 - case "$eapi" in
145 - 2|3)
146 - ;;
147 - *)
148 - eval "default_src_install() { __eapi4_src_install \"\$@\" ; }"
149 - [[ $phase_func = src_install ]] && \
150 - eval "default() { __eapi4_$phase_func \"\$@\" ; }"
151 - ;;
152 - esac
153 -
154 - else
155 -
156 - for x in $default_phases ; do
157 - eval "default_$x() {
158 - die \"default_$x() is not supported in phase $default_func\"
159 - }"
160 - done
161 -
162 - eval "default() {
163 - die \"default() is not supported with EAPI='$eapi' during phase $phase_func\"
164 - }"
165 + # defaults starting with EAPI 4
166 + if ! has ${eapi} 2 3; then
167 + [[ ${phase_func} == src_install ]] && \
168 + default_src_install() { __eapi4_src_install; }
169
170 + declare -F src_install >/dev/null || \
171 + src_install() { default; }
172 fi
173 -
174 ;;
175 esac
176 }
177
178 diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh
179 index ca28ce9..5f7c809 100644
180 --- a/bin/phase-helpers.sh
181 +++ b/bin/phase-helpers.sh
182 @@ -682,6 +682,10 @@ __eapi1_src_compile() {
183 __eapi2_src_compile
184 }
185
186 +__eapi2_src_prepare() {
187 + :
188 +}
189 +
190 __eapi2_src_configure() {
191 if [[ -x ${ECONF_SOURCE:-.}/configure ]] ; then
192 econf
193
194 diff --git a/bin/save-ebuild-env.sh b/bin/save-ebuild-env.sh
195 index 98cff83..de0c499 100644
196 --- a/bin/save-ebuild-env.sh
197 +++ b/bin/save-ebuild-env.sh
198 @@ -42,7 +42,7 @@ __save_ebuild_env() {
199
200 for x in pkg_setup pkg_nofetch src_unpack src_prepare src_configure \
201 src_compile src_test src_install pkg_preinst pkg_postinst \
202 - pkg_prerm pkg_postrm ; do
203 + pkg_prerm pkg_postrm pkg_config pkg_info pkg_pretend ; do
204 unset -f default_$x __eapi{0,1,2,3,4}_$x
205 done
206 unset x