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:27
Message-Id: 1411694533.d8bcaa6564d33928d7dbdd7f186ef635d23b1fb7.dol-sen@gentoo
1 commit: d8bcaa6564d33928d7dbdd7f186ef635d23b1fb7
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Thu Sep 11 17:23:13 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=d8bcaa65
7
8 Allow inheriting utility eclasses in QA checks
9
10 Allow inheriting utility eclasses for use in QA checks. The eclasses can
11 be used e.g. to obtain paths or other data needed for the check.
12 However, the eclasses must not export phases or set ebuild metadata.
13
14 ---
15 bin/ebuild.sh | 131 ++++++++++++++++++++++++++------------------------
16 bin/misc-functions.sh | 2 +
17 2 files changed, 70 insertions(+), 63 deletions(-)
18
19 diff --git a/bin/ebuild.sh b/bin/ebuild.sh
20 index be044e0..b980caa 100755
21 --- a/bin/ebuild.sh
22 +++ b/bin/ebuild.sh
23 @@ -230,10 +230,10 @@ inherit() {
24 __export_funcs_var=__export_functions_$ECLASS_DEPTH
25 unset $__export_funcs_var
26
27 - if [ "${EBUILD_PHASE}" != "depend" ] && \
28 - [ "${EBUILD_PHASE}" != "nofetch" ] && \
29 - [[ ${EBUILD_PHASE} != *rm ]] && \
30 - [[ ${EMERGE_FROM} != "binary" ]] ; then
31 + if [[ ${EBUILD_PHASE} != depend && ${EBUILD_PHASE} != nofetch && \
32 + ${EBUILD_PHASE} != *rm && ${EMERGE_FROM} != "binary" && \
33 + -z ${_IN_INSTALL_QA_CHECK} ]]
34 + then
35 # This is disabled in the *rm phases because they frequently give
36 # false alarms due to INHERITED in /var/db/pkg being outdated
37 # in comparison the the eclasses from the portage tree. It's
38 @@ -256,70 +256,75 @@ inherit() {
39 debug-print "inherit: $1 -> $location"
40 [[ -z ${location} ]] && die "${1}.eclass could not be found by inherit()"
41
42 - #We need to back up the values of *DEPEND to B_*DEPEND
43 - #(if set).. and then restore them after the inherit call.
44 -
45 - #turn off glob expansion
46 - set -f
47 -
48 - # Retain the old data and restore it later.
49 - unset B_IUSE B_REQUIRED_USE B_DEPEND B_RDEPEND B_PDEPEND B_HDEPEND
50 - [ "${IUSE+set}" = set ] && B_IUSE="${IUSE}"
51 - [ "${REQUIRED_USE+set}" = set ] && B_REQUIRED_USE="${REQUIRED_USE}"
52 - [ "${DEPEND+set}" = set ] && B_DEPEND="${DEPEND}"
53 - [ "${RDEPEND+set}" = set ] && B_RDEPEND="${RDEPEND}"
54 - [ "${PDEPEND+set}" = set ] && B_PDEPEND="${PDEPEND}"
55 - [ "${HDEPEND+set}" = set ] && B_HDEPEND="${HDEPEND}"
56 - unset IUSE REQUIRED_USE DEPEND RDEPEND PDEPEND HDEPEND
57 - #turn on glob expansion
58 - set +f
59 + # inherits in QA checks can't handle metadata assignments
60 + if [[ -z ${_IN_INSTALL_QA_CHECK} ]]; then
61 + #We need to back up the values of *DEPEND to B_*DEPEND
62 + #(if set).. and then restore them after the inherit call.
63 +
64 + #turn off glob expansion
65 + set -f
66 +
67 + # Retain the old data and restore it later.
68 + unset B_IUSE B_REQUIRED_USE B_DEPEND B_RDEPEND B_PDEPEND B_HDEPEND
69 + [ "${IUSE+set}" = set ] && B_IUSE="${IUSE}"
70 + [ "${REQUIRED_USE+set}" = set ] && B_REQUIRED_USE="${REQUIRED_USE}"
71 + [ "${DEPEND+set}" = set ] && B_DEPEND="${DEPEND}"
72 + [ "${RDEPEND+set}" = set ] && B_RDEPEND="${RDEPEND}"
73 + [ "${PDEPEND+set}" = set ] && B_PDEPEND="${PDEPEND}"
74 + [ "${HDEPEND+set}" = set ] && B_HDEPEND="${HDEPEND}"
75 + unset IUSE REQUIRED_USE DEPEND RDEPEND PDEPEND HDEPEND
76 + #turn on glob expansion
77 + set +f
78 + fi
79
80 __qa_source "$location" || die "died sourcing $location in inherit()"
81
82 - #turn off glob expansion
83 - set -f
84 -
85 - # If each var has a value, append it to the global variable E_* to
86 - # be applied after everything is finished. New incremental behavior.
87 - [ "${IUSE+set}" = set ] && E_IUSE+="${E_IUSE:+ }${IUSE}"
88 - [ "${REQUIRED_USE+set}" = set ] && E_REQUIRED_USE+="${E_REQUIRED_USE:+ }${REQUIRED_USE}"
89 - [ "${DEPEND+set}" = set ] && E_DEPEND+="${E_DEPEND:+ }${DEPEND}"
90 - [ "${RDEPEND+set}" = set ] && E_RDEPEND+="${E_RDEPEND:+ }${RDEPEND}"
91 - [ "${PDEPEND+set}" = set ] && E_PDEPEND+="${E_PDEPEND:+ }${PDEPEND}"
92 - [ "${HDEPEND+set}" = set ] && E_HDEPEND+="${E_HDEPEND:+ }${HDEPEND}"
93 -
94 - [ "${B_IUSE+set}" = set ] && IUSE="${B_IUSE}"
95 - [ "${B_IUSE+set}" = set ] || unset IUSE
96 -
97 - [ "${B_REQUIRED_USE+set}" = set ] && REQUIRED_USE="${B_REQUIRED_USE}"
98 - [ "${B_REQUIRED_USE+set}" = set ] || unset REQUIRED_USE
99 -
100 - [ "${B_DEPEND+set}" = set ] && DEPEND="${B_DEPEND}"
101 - [ "${B_DEPEND+set}" = set ] || unset DEPEND
102 -
103 - [ "${B_RDEPEND+set}" = set ] && RDEPEND="${B_RDEPEND}"
104 - [ "${B_RDEPEND+set}" = set ] || unset RDEPEND
105 -
106 - [ "${B_PDEPEND+set}" = set ] && PDEPEND="${B_PDEPEND}"
107 - [ "${B_PDEPEND+set}" = set ] || unset PDEPEND
108 -
109 - [ "${B_HDEPEND+set}" = set ] && HDEPEND="${B_HDEPEND}"
110 - [ "${B_HDEPEND+set}" = set ] || unset HDEPEND
111 -
112 - #turn on glob expansion
113 - set +f
114 + if [[ -z ${_IN_INSTALL_QA_CHECK} ]]; then
115 + #turn off glob expansion
116 + set -f
117 +
118 + # If each var has a value, append it to the global variable E_* to
119 + # be applied after everything is finished. New incremental behavior.
120 + [ "${IUSE+set}" = set ] && E_IUSE+="${E_IUSE:+ }${IUSE}"
121 + [ "${REQUIRED_USE+set}" = set ] && E_REQUIRED_USE+="${E_REQUIRED_USE:+ }${REQUIRED_USE}"
122 + [ "${DEPEND+set}" = set ] && E_DEPEND+="${E_DEPEND:+ }${DEPEND}"
123 + [ "${RDEPEND+set}" = set ] && E_RDEPEND+="${E_RDEPEND:+ }${RDEPEND}"
124 + [ "${PDEPEND+set}" = set ] && E_PDEPEND+="${E_PDEPEND:+ }${PDEPEND}"
125 + [ "${HDEPEND+set}" = set ] && E_HDEPEND+="${E_HDEPEND:+ }${HDEPEND}"
126 +
127 + [ "${B_IUSE+set}" = set ] && IUSE="${B_IUSE}"
128 + [ "${B_IUSE+set}" = set ] || unset IUSE
129 +
130 + [ "${B_REQUIRED_USE+set}" = set ] && REQUIRED_USE="${B_REQUIRED_USE}"
131 + [ "${B_REQUIRED_USE+set}" = set ] || unset REQUIRED_USE
132 +
133 + [ "${B_DEPEND+set}" = set ] && DEPEND="${B_DEPEND}"
134 + [ "${B_DEPEND+set}" = set ] || unset DEPEND
135 +
136 + [ "${B_RDEPEND+set}" = set ] && RDEPEND="${B_RDEPEND}"
137 + [ "${B_RDEPEND+set}" = set ] || unset RDEPEND
138 +
139 + [ "${B_PDEPEND+set}" = set ] && PDEPEND="${B_PDEPEND}"
140 + [ "${B_PDEPEND+set}" = set ] || unset PDEPEND
141 +
142 + [ "${B_HDEPEND+set}" = set ] && HDEPEND="${B_HDEPEND}"
143 + [ "${B_HDEPEND+set}" = set ] || unset HDEPEND
144 +
145 + #turn on glob expansion
146 + set +f
147 +
148 + if [[ -n ${!__export_funcs_var} ]] ; then
149 + for x in ${!__export_funcs_var} ; do
150 + debug-print "EXPORT_FUNCTIONS: $x -> ${ECLASS}_$x"
151 + declare -F "${ECLASS}_$x" >/dev/null || \
152 + die "EXPORT_FUNCTIONS: ${ECLASS}_$x is not defined"
153 + eval "$x() { ${ECLASS}_$x \"\$@\" ; }" > /dev/null
154 + done
155 + fi
156 + unset $__export_funcs_var
157
158 - if [[ -n ${!__export_funcs_var} ]] ; then
159 - for x in ${!__export_funcs_var} ; do
160 - debug-print "EXPORT_FUNCTIONS: $x -> ${ECLASS}_$x"
161 - declare -F "${ECLASS}_$x" >/dev/null || \
162 - die "EXPORT_FUNCTIONS: ${ECLASS}_$x is not defined"
163 - eval "$x() { ${ECLASS}_$x \"\$@\" ; }" > /dev/null
164 - done
165 + has $1 $INHERITED || export INHERITED="$INHERITED $1"
166 fi
167 - unset $__export_funcs_var
168 -
169 - has $1 $INHERITED || export INHERITED="$INHERITED $1"
170
171 shift
172 done
173
174 diff --git a/bin/misc-functions.sh b/bin/misc-functions.sh
175 index bd43360..cc652a9 100755
176 --- a/bin/misc-functions.sh
177 +++ b/bin/misc-functions.sh
178 @@ -189,6 +189,8 @@ install_qa_check() {
179 for f in "${repo_location}"/metadata/install-qa-check.d/*; do
180 if [[ -f ${f} ]]; then
181 (
182 + # allow inheriting eclasses
183 + _IN_INSTALL_QA_CHECK=1
184 source "${f}" || eerror "Post-install QA check ${f##*/} failed to run"
185 )
186 fi