| 1 | # Copyright 1999-2004 Gentoo Foundation |
1 | # Copyright 1999-2012 Gentoo Foundation |
| 2 | # Distributed under the terms of the GNU General Public License v2 |
2 | # Distributed under the terms of the GNU General Public License v2 |
| 3 | # $Header: /var/cvsroot/gentoo-x86/eclass/check-reqs.eclass,v 1.4 2005/07/06 20:23:20 agriffis Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/check-reqs.eclass,v 1.11 2012/09/27 16:35:41 axs Exp $ |
| 4 | # |
4 | |
|
|
5 | # @ECLASS: check-reqs.eclass |
|
|
6 | # @MAINTAINER: |
|
|
7 | # QA Team <qa@gentoo.org> |
|
|
8 | # @AUTHOR: |
|
|
9 | # Bo Ørsted Andresen <zlin@gentoo.org> |
| 5 | # Original Author: Ciaran McCreesh <ciaranm@gentoo.org> |
10 | # Original Author: Ciaran McCreesh <ciaranm@gentoo.org> |
| 6 | # |
11 | # @BLURB: Provides a uniform way of handling ebuild which have very high build requirements |
|
|
12 | # @DESCRIPTION: |
| 7 | # This eclass provides a uniform way of handling ebuilds which have very high |
13 | # This eclass provides a uniform way of handling ebuilds which have very high |
| 8 | # build requirements in terms of memory or disc space. It provides a function |
14 | # build requirements in terms of memory or disk space. It provides a function |
| 9 | # which should usually be called during pkg_setup(). |
15 | # which should usually be called during pkg_setup(). |
| 10 | # |
16 | # |
| 11 | # From a user perspective, the variable CHECKREQS_ACTION can be set to: |
|
|
| 12 | # * "warn" (default), which will display a warning and wait for 15s |
|
|
| 13 | # * "error", which will make the ebuild error out |
|
|
| 14 | # * "ignore", which will not take any action |
|
|
| 15 | # The chosen action only happens when the system's resources are detected |
17 | # The chosen action only happens when the system's resources are detected |
| 16 | # correctly and only if they are below the threshold specified by the package. |
18 | # correctly and only if they are below the threshold specified by the package. |
| 17 | # |
19 | # |
| 18 | # For ebuild authors: only use this eclass if you reaaalllllly have stupidly |
20 | # @CODE |
| 19 | # high build requirements. At an absolute minimum, you shouldn't be using this |
|
|
| 20 | # unless the ebuild needs >256MBytes RAM or >1GByte temporary or install space. |
|
|
| 21 | # The code should look something like: |
|
|
| 22 | # |
|
|
| 23 | # pkg_setup() { |
|
|
| 24 | # # values in MBytes |
|
|
| 25 | # |
|
|
| 26 | # # need this much memory (does *not* check swap) |
21 | # # need this much memory (does *not* check swap) |
| 27 | # CHECKREQS_MEMORY="256" |
22 | # CHECKREQS_MEMORY="256M" |
| 28 | # |
23 | # |
| 29 | # # need this much temporary build space |
24 | # # need this much temporary build space |
| 30 | # CHECKREQS_DISK_BUILD="2048" |
25 | # CHECKREQS_DISK_BUILD="2G" |
| 31 | # |
26 | # |
| 32 | # # install will need this much space in /usr |
27 | # # install will need this much space in /usr |
| 33 | # CHECKREQS_DISK_USR="1024" |
28 | # CHECKREQS_DISK_USR="1G" |
| 34 | # |
29 | # |
| 35 | # # install will need this much space in /var |
30 | # # install will need this much space in /var |
| 36 | # CHECKREQS_DISK_VAR="1024" |
31 | # CHECKREQS_DISK_VAR="1024M" |
| 37 | # |
32 | # |
| 38 | # # go! |
33 | # @CODE |
| 39 | # check_reqs |
|
|
| 40 | # } |
|
|
| 41 | # |
34 | # |
| 42 | # You should *not* override the user's CHECKREQS_ACTION setting, nor should you |
|
|
| 43 | # attempt to provide a value if it is unset. Note that the environment variables |
|
|
| 44 | # are used rather than parameters for a few reasons: |
|
|
| 45 | # * easier to do if use blah ; then things |
|
|
| 46 | # * we might add in additional requirements things later |
|
|
| 47 | # If you don't specify a value for, say, CHECKREQS_MEMORY, then the test is not |
35 | # If you don't specify a value for, say, CHECKREQS_MEMORY, then the test is not |
| 48 | # carried out. |
36 | # carried out. |
| 49 | # |
37 | # |
| 50 | # These checks should probably mostly work on non-Linux, and they should |
38 | # These checks should probably mostly work on non-Linux, and they should |
| 51 | # probably degrade gracefully if they don't. Probably. |
39 | # probably degrade gracefully if they don't. Probably. |
| 52 | |
40 | |
| 53 | inherit eutils |
41 | inherit eutils |
| 54 | |
42 | |
|
|
43 | # @ECLASS-VARIABLE: CHECKREQS_MEMORY |
|
|
44 | # @DEFAULT_UNSET |
|
|
45 | # @DESCRIPTION: |
|
|
46 | # How much RAM is needed? Eg.: CHECKREQS_MEMORY=15M |
| 55 | |
47 | |
|
|
48 | # @ECLASS-VARIABLE: CHECKREQS_DISK_BUILD |
|
|
49 | # @DEFAULT_UNSET |
|
|
50 | # @DESCRIPTION: |
|
|
51 | # How much diskspace is needed to build the package? Eg.: CHECKREQS_DISK_BUILD=2T |
|
|
52 | |
|
|
53 | # @ECLASS-VARIABLE: CHECKREQS_DISK_USR |
|
|
54 | # @DEFAULT_UNSET |
|
|
55 | # @DESCRIPTION: |
|
|
56 | # How much space in /usr is needed to install the package? Eg.: CHECKREQS_DISK_USR=15G |
|
|
57 | |
|
|
58 | # @ECLASS-VARIABLE: CHECKREQS_DISK_VAR |
|
|
59 | # @DEFAULT_UNSET |
|
|
60 | # @DESCRIPTION: |
|
|
61 | # How much space is needed in /var? Eg.: CHECKREQS_DISK_VAR=3000M |
|
|
62 | |
|
|
63 | EXPORT_FUNCTIONS pkg_setup |
|
|
64 | case "${EAPI:-0}" in |
|
|
65 | 0|1|2|3) ;; |
|
|
66 | 4|5) EXPORT_FUNCTIONS pkg_pretend ;; |
|
|
67 | *) die "EAPI=${EAPI} is not supported" ;; |
|
|
68 | esac |
|
|
69 | |
|
|
70 | # @FUNCTION: check_reqs |
|
|
71 | # @DESCRIPTION: |
|
|
72 | # Obsolete function executing all the checks and priting out results |
| 56 | check_reqs() { |
73 | check_reqs() { |
| 57 | [ -n "$1" ] && die "Usage: check_reqs" |
74 | debug-print-function ${FUNCNAME} "$@" |
| 58 | |
75 | |
| 59 | export CHECKREQS_NEED_SLEEP="" CHECKREQS_NEED_DIE="" |
|
|
| 60 | if [ "$CHECKREQS_ACTION" != "ignore" ] ; then |
|
|
| 61 | [ -n "$CHECKREQS_MEMORY" ] && check_build_memory |
|
|
| 62 | [ -n "$CHECKREQS_DISK_BUILD" ] && check_build_disk \ |
|
|
| 63 | "${PORTAGE_TMPDIR}" "\${PORTAGE_TMPDIR}" "${CHECKREQS_DISK_BUILD}" |
|
|
| 64 | [ -n "$CHECKREQS_DISK_USR" ] && check_build_disk \ |
|
|
| 65 | "${ROOT}/usr" "\${ROOT}/usr" "${CHECKREQS_DISK_USR}" |
|
|
| 66 | [ -n "$CHECKREQS_DISK_VAR" ] && check_build_disk \ |
|
|
| 67 | "${ROOT}/var" "\${ROOT}/var" "${CHECKREQS_DISK_VAR}" |
|
|
| 68 | fi |
|
|
| 69 | |
|
|
| 70 | if [ -n "${CHECKREQS_NEED_SLEEP}" ] ; then |
|
|
| 71 | echo |
76 | echo |
| 72 | ewarn "Bad things may happen! You may abort the build by pressing ctrl+c in" |
77 | ewarn "QA: Package calling old ${FUNCNAME} function." |
| 73 | ewarn "the next 15 seconds." |
78 | ewarn "QA: Please file a bug against the package." |
| 74 | ewarn " " |
79 | ewarn "QA: It should call check-reqs_pkg_pretend and check-reqs_pkg_setup" |
| 75 | einfo "To make this kind of warning a fatal error, add a line to /etc/make.conf" |
80 | ewarn "QA: and possibly use EAPI=4 or later." |
| 76 | einfo "setting CHECKREQS_ACTION=\"error\". To skip build requirements checking," |
81 | echo |
| 77 | einfo "set CHECKREQS_ACTION=\"ignore\"." |
|
|
| 78 | epause 15 |
|
|
| 79 | fi |
|
|
| 80 | |
82 | |
|
|
83 | check-reqs_pkg_setup "$@" |
|
|
84 | } |
|
|
85 | |
|
|
86 | # @FUNCTION: check-reqs_pkg_setup |
|
|
87 | # @DESCRIPTION: |
|
|
88 | # Exported function running the resources checks in pkg_setup phase. |
|
|
89 | # It should be run in both phases to ensure condition changes between |
|
|
90 | # pkg_pretend and pkg_setup won't affect the build. |
|
|
91 | check-reqs_pkg_setup() { |
|
|
92 | debug-print-function ${FUNCNAME} "$@" |
|
|
93 | |
|
|
94 | check-reqs_prepare |
|
|
95 | check-reqs_run |
|
|
96 | check-reqs_output |
|
|
97 | } |
|
|
98 | |
|
|
99 | # @FUNCTION: check-reqs_pkg_pretend |
|
|
100 | # @DESCRIPTION: |
|
|
101 | # Exported function running the resources checks in pkg_pretend phase. |
|
|
102 | check-reqs_pkg_pretend() { |
|
|
103 | debug-print-function ${FUNCNAME} "$@" |
|
|
104 | |
|
|
105 | check-reqs_pkg_setup "$@" |
|
|
106 | } |
|
|
107 | |
|
|
108 | # @FUNCTION: check-reqs_prepare |
|
|
109 | # @DESCRIPTION: |
|
|
110 | # Internal function that checks the variables that should be defined. |
|
|
111 | check-reqs_prepare() { |
|
|
112 | debug-print-function ${FUNCNAME} "$@" |
|
|
113 | |
|
|
114 | if [[ -z ${CHECKREQS_MEMORY} && |
|
|
115 | -z ${CHECKREQS_DISK_BUILD} && |
|
|
116 | -z ${CHECKREQS_DISK_USR} && |
|
|
117 | -z ${CHECKREQS_DISK_VAR} ]]; then |
|
|
118 | eerror "Set some check-reqs eclass variables if you want to use it." |
|
|
119 | eerror "If you are user and see this message file a bug against the package." |
|
|
120 | die "${FUNCNAME}: check-reqs eclass called but not actualy used!" |
|
|
121 | fi |
|
|
122 | } |
|
|
123 | |
|
|
124 | # @FUNCTION: check-reqs_run |
|
|
125 | # @DESCRIPTION: |
|
|
126 | # Internal function that runs the check based on variable settings. |
|
|
127 | check-reqs_run() { |
|
|
128 | debug-print-function ${FUNCNAME} "$@" |
|
|
129 | |
|
|
130 | # some people are *censored* |
|
|
131 | unset CHECKREQS_FAILED |
|
|
132 | |
|
|
133 | [[ -n ${CHECKREQS_MEMORY} ]] && \ |
|
|
134 | check-reqs_memory \ |
|
|
135 | ${CHECKREQS_MEMORY} |
|
|
136 | |
|
|
137 | [[ -n ${CHECKREQS_DISK_BUILD} ]] && \ |
|
|
138 | check-reqs_disk \ |
|
|
139 | "${T}" \ |
|
|
140 | "${CHECKREQS_DISK_BUILD}" |
|
|
141 | |
|
|
142 | [[ -n ${CHECKREQS_DISK_USR} ]] && \ |
|
|
143 | check-reqs_disk \ |
|
|
144 | "${EROOT}/usr" \ |
|
|
145 | "${CHECKREQS_DISK_USR}" |
|
|
146 | |
|
|
147 | [[ -n ${CHECKREQS_DISK_VAR} ]] && \ |
|
|
148 | check-reqs_disk \ |
|
|
149 | "${EROOT}/var" \ |
|
|
150 | "${CHECKREQS_DISK_VAR}" |
|
|
151 | } |
|
|
152 | |
|
|
153 | # @FUNCTION: check-reqs_get_mebibytes |
|
|
154 | # @DESCRIPTION: |
|
|
155 | # Internal function that returns number in mebibytes. |
|
|
156 | # Converts from 1G=1024 or 1T=1048576 |
|
|
157 | check-reqs_get_mebibytes() { |
|
|
158 | debug-print-function ${FUNCNAME} "$@" |
|
|
159 | |
|
|
160 | [[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]" |
|
|
161 | |
|
|
162 | local unit=${1:(-1)} |
|
|
163 | local size=${1%[GMT]} |
|
|
164 | |
|
|
165 | case ${unit} in |
|
|
166 | G) echo $((1024 * size)) ;; |
|
|
167 | [M0-9]) echo ${size} ;; |
|
|
168 | T) echo $((1024 * 1024 * size)) ;; |
|
|
169 | *) |
|
|
170 | die "${FUNCNAME}: Unknown unit: ${unit}" |
|
|
171 | ;; |
|
|
172 | esac |
|
|
173 | } |
|
|
174 | |
|
|
175 | # @FUNCTION: check-reqs_get_number |
|
|
176 | # @DESCRIPTION: |
|
|
177 | # Internal function that returns number without the unit. |
|
|
178 | # Converts from 1G=1 or 150T=150. |
|
|
179 | check-reqs_get_number() { |
|
|
180 | debug-print-function ${FUNCNAME} "$@" |
|
|
181 | |
|
|
182 | [[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]" |
|
|
183 | |
|
|
184 | local unit=${1:(-1)} |
|
|
185 | local size=${1%[GMT]} |
|
|
186 | |
|
|
187 | # Check for unset units and warn about them. |
|
|
188 | # Backcompat. |
|
|
189 | if [[ ${size} == ${1} ]]; then |
|
|
190 | ewarn "QA: Package does not specify unit for the size check" |
|
|
191 | ewarn "QA: Assuming mebibytes." |
|
|
192 | ewarn "QA: File bug against the package. It should specify the unit." |
|
|
193 | fi |
|
|
194 | |
|
|
195 | echo ${size} |
|
|
196 | } |
|
|
197 | |
|
|
198 | # @FUNCTION: check-reqs_get_unit |
|
|
199 | # @DESCRIPTION: |
|
|
200 | # Internal function that returns number without the unit. |
|
|
201 | # Converts from 1G=1 or 150T=150. |
|
|
202 | check-reqs_get_unit() { |
|
|
203 | debug-print-function ${FUNCNAME} "$@" |
|
|
204 | |
|
|
205 | [[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]" |
|
|
206 | |
|
|
207 | local unit=${1:(-1)} |
|
|
208 | |
|
|
209 | case ${unit} in |
|
|
210 | G) echo "gibibytes" ;; |
|
|
211 | [M0-9]) echo "mebibytes" ;; |
|
|
212 | T) echo "tebibytes" ;; |
|
|
213 | *) |
|
|
214 | die "${FUNCNAME}: Unknown unit: ${unit}" |
|
|
215 | ;; |
|
|
216 | esac |
|
|
217 | } |
|
|
218 | |
|
|
219 | # @FUNCTION: check-reqs_output |
|
|
220 | # @DESCRIPTION: |
|
|
221 | # Internal function that prints the warning and dies if required based on |
|
|
222 | # the test results. |
|
|
223 | check-reqs_output() { |
|
|
224 | debug-print-function ${FUNCNAME} "$@" |
|
|
225 | |
|
|
226 | local msg="ewarn" |
|
|
227 | |
|
|
228 | [[ ${EBUILD_PHASE} == "pretend" && -z ${I_KNOW_WHAT_I_AM_DOING} ]] && msg="eerror" |
| 81 | if [ -n "${CHECKREQS_NEED_DIE}" ] ; then |
229 | if [[ -n ${CHECKREQS_FAILED} ]]; then |
| 82 | eerror "Bailing out as specified by CHECKREQS_ACTION" |
230 | ${msg} |
|
|
231 | ${msg} "Space constrains set in the ebuild were not met!" |
|
|
232 | ${msg} "The build will most probably fail, you should enhance the space" |
|
|
233 | ${msg} "as per failed tests." |
|
|
234 | ${msg} |
|
|
235 | |
|
|
236 | [[ ${EBUILD_PHASE} == "pretend" && -z ${I_KNOW_WHAT_I_AM_DOING} ]] && \ |
| 83 | die "Build requirements not met" |
237 | die "Build requirements not met!" |
| 84 | fi |
238 | fi |
| 85 | } |
239 | } |
| 86 | |
240 | |
| 87 | # internal use only! |
241 | # @FUNCTION: check-reqs_memory |
| 88 | check_build_memory() { |
242 | # @DESCRIPTION: |
| 89 | [ -n "$1" ] && die "Usage: check_build_memory" |
243 | # Internal function that checks size of RAM. |
| 90 | check_build_msg_begin "${CHECKREQS_MEMORY}" "MBytes" "RAM" |
244 | check-reqs_memory() { |
|
|
245 | debug-print-function ${FUNCNAME} "$@" |
|
|
246 | |
|
|
247 | [[ -z ${1} ]] && die "Usage: ${FUNCNAME} [size]" |
|
|
248 | |
|
|
249 | local size=${1} |
|
|
250 | local actual_memory |
|
|
251 | |
|
|
252 | check-reqs_start_phase \ |
|
|
253 | ${size} \ |
|
|
254 | "RAM" |
|
|
255 | |
| 91 | if [ -r /proc/meminfo ] ; then |
256 | if [[ -r /proc/meminfo ]] ; then |
| 92 | actual_memory=$(sed -n -e '/MemTotal:/s/^[^:]*: *\([0-9]\+\) kB/\1/p' \ |
257 | actual_memory=$(awk '/MemTotal/ { print $2 }' /proc/meminfo) |
| 93 | /proc/meminfo) |
|
|
| 94 | else |
258 | else |
| 95 | actual_memory=$(sysctl hw.physmem 2>/dev/null ) |
259 | actual_memory=$(sysctl hw.physmem 2>/dev/null ) |
| 96 | [ "$?" == "0" ] && |
260 | [[ "$?" == "0" ]] && |
| 97 | actual_memory=$(echo $actual_memory | sed -e 's/^[^:=]*[:=]//' ) |
261 | actual_memory=$(echo $actual_memory | sed -e 's/^[^:=]*[:=]//' ) |
| 98 | fi |
262 | fi |
| 99 | if [ -n "${actual_memory}" ] ; then |
263 | if [[ -n ${actual_memory} ]] ; then |
| 100 | if [ ${actual_memory} -lt $((1024 * ${CHECKREQS_MEMORY})) ] ; then |
264 | if [[ ${actual_memory} -lt $((1024 * $(check-reqs_get_mebibytes ${size}))) ]] ; then |
| 101 | eend 1 |
265 | eend 1 |
| 102 | check_build_msg_ick "${CHECKREQS_MEMORY}" "MBytes" "RAM" |
266 | check-reqs_unsatisfied \ |
|
|
267 | ${size} \ |
|
|
268 | "RAM" |
| 103 | else |
269 | else |
| 104 | eend 0 |
270 | eend 0 |
| 105 | fi |
271 | fi |
| 106 | else |
272 | else |
| 107 | eend 1 |
273 | eend 1 |
| 108 | ewarn "Couldn't determine amount of memory, skipping ..." |
274 | ewarn "Couldn't determine amount of memory, skipping..." |
| 109 | fi |
275 | fi |
| 110 | } |
276 | } |
| 111 | |
277 | |
| 112 | # internal use only! |
278 | # @FUNCTION: check-reqs_disk |
| 113 | check_build_disk() { |
279 | # @DESCRIPTION: |
| 114 | [ -z "$3" ] && die "Usage: check_build_disk where name needed" |
280 | # Internal function that checks space on the harddrive. |
| 115 | check_build_msg_begin "${3}" "MBytes" \ |
281 | check-reqs_disk() { |
|
|
282 | debug-print-function ${FUNCNAME} "$@" |
|
|
283 | |
|
|
284 | [[ -z ${2} ]] && die "Usage: ${FUNCNAME} [path] [size]" |
|
|
285 | |
|
|
286 | local path=${1} |
|
|
287 | local size=${2} |
|
|
288 | local space_megs |
|
|
289 | |
|
|
290 | check-reqs_start_phase \ |
|
|
291 | ${size} \ |
| 116 | "disk space at ${2}" |
292 | "disk space at \"${path}\"" |
| 117 | actual_space=$(df -Pm ${1} 2>/dev/null | sed -n \ |
293 | |
| 118 | '$s/\(\S\+\s\+\)\{3\}\([0-9]\+\).*/\2/p' 2>/dev/null ) |
294 | space_megs=$(df -Pm "${1}" 2>/dev/null | awk 'FNR == 2 {print $4}') |
| 119 | if [ "$?" == "0" ] && [ -n "${actual_space}" ] ; then |
295 | |
| 120 | if [ ${actual_space} -lt ${3} ] ; then |
296 | if [[ $? == 0 && -n ${space_megs} ]] ; then |
|
|
297 | if [[ ${space_megs} -lt $(check-reqs_get_mebibytes ${size}) ]] ; then |
| 121 | eend 1 |
298 | eend 1 |
| 122 | check_build_msg_ick "${3}" "MBytes" \ |
299 | check-reqs_unsatisfied \ |
|
|
300 | ${size} \ |
| 123 | "disk space at ${2}" |
301 | "disk space at \"${path}\"" |
| 124 | else |
302 | else |
| 125 | eend 0 |
303 | eend 0 |
| 126 | fi |
304 | fi |
| 127 | else |
305 | else |
| 128 | eend 1 |
306 | eend 1 |
| 129 | ewarn "Couldn't figure out disk space, skipping ..." |
307 | ewarn "Couldn't determine disk space, skipping..." |
| 130 | fi |
308 | fi |
| 131 | } |
309 | } |
| 132 | |
310 | |
| 133 | # internal use only! |
311 | # @FUNCTION: check-reqs_start_phase |
| 134 | check_build_msg_begin() { |
312 | # @DESCRIPTION: |
|
|
313 | # Internal function that inform about started check |
|
|
314 | check-reqs_start_phase() { |
|
|
315 | debug-print-function ${FUNCNAME} "$@" |
|
|
316 | |
|
|
317 | [[ -z ${2} ]] && die "Usage: ${FUNCNAME} [size] [location]" |
|
|
318 | |
|
|
319 | local size=${1} |
|
|
320 | local location=${2} |
|
|
321 | local sizeunit="$(check-reqs_get_number ${size}) $(check-reqs_get_unit ${size})" |
|
|
322 | |
| 135 | ebegin "Checking for at least ${1}${2} ${3}" |
323 | ebegin "Checking for at least ${sizeunit} ${location}" |
| 136 | } |
324 | } |
| 137 | |
325 | |
| 138 | # internal use only! |
326 | # @FUNCTION: check-reqs_unsatisfied |
| 139 | check_build_msg_skip() { |
327 | # @DESCRIPTION: |
| 140 | ewarn "Skipping check for at least ${1}${2} ${3}" |
328 | # Internal function that inform about check result. |
| 141 | } |
329 | # It has different output between pretend and setup phase, |
|
|
330 | # where in pretend phase it is fatal. |
|
|
331 | check-reqs_unsatisfied() { |
|
|
332 | debug-print-function ${FUNCNAME} "$@" |
| 142 | |
333 | |
| 143 | # internal use only! |
334 | [[ -z ${2} ]] && die "Usage: ${FUNCNAME} [size] [location]" |
| 144 | check_build_msg_ick() { |
|
|
| 145 | if [ "${CHECKREQS_ACTION}" == "error" ] ; then |
|
|
| 146 | eerror "Don't have at least ${1}${2} ${3}" |
|
|
| 147 | echo |
|
|
| 148 | export CHECKREQS_NEED_DIE="yes" |
|
|
| 149 | else |
|
|
| 150 | ewarn "Don't have at least ${1}${2} ${3}" |
|
|
| 151 | echo |
|
|
| 152 | export CHECKREQS_NEED_SLEEP="yes" |
|
|
| 153 | fi |
|
|
| 154 | } |
|
|
| 155 | |
335 | |
|
|
336 | local msg="ewarn" |
|
|
337 | local size=${1} |
|
|
338 | local location=${2} |
|
|
339 | local sizeunit="$(check-reqs_get_number ${size}) $(check-reqs_get_unit ${size})" |
|
|
340 | |
|
|
341 | [[ ${EBUILD_PHASE} == "pretend" && -z ${I_KNOW_WHAT_I_AM_DOING} ]] && msg="eerror" |
|
|
342 | ${msg} "There is NOT at least ${sizeunit} ${location}" |
|
|
343 | |
|
|
344 | # @ECLASS-VARIABLE: CHECKREQS_FAILED |
|
|
345 | # @DESCRIPTION: |
|
|
346 | # @INTERNAL |
|
|
347 | # If set the checks failed and eclass should abort the build. |
|
|
348 | # Internal, do not set yourself. |
|
|
349 | CHECKREQS_FAILED="true" |
|
|
350 | } |
|
|
351 | |