| 1 | # Copyright 1999-2006 Gentoo Foundation |
1 | # Copyright 1999-2006 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/linux-info.eclass,v 1.60 2009/07/04 18:39:33 robbat2 Exp $ |
3 | # $Header: /var/cvsroot/gentoo-x86/eclass/linux-info.eclass,v 1.63 2009/09/06 23:04:37 robbat2 Exp $ |
| 4 | # |
4 | # |
| 5 | # Original author: John Mylchreest <johnm@gentoo.org> |
5 | # Original author: John Mylchreest <johnm@gentoo.org> |
| 6 | # Maintainer: kernel-misc@gentoo.org |
6 | # Maintainer: kernel-misc@gentoo.org |
| 7 | # |
7 | # |
| 8 | # Please direct your bugs to the current eclass maintainer :) |
8 | # Please direct your bugs to the current eclass maintainer :) |
| … | |
… | |
| 11 | # @MAINTAINER: |
11 | # @MAINTAINER: |
| 12 | # kernel-misc@gentoo.org |
12 | # kernel-misc@gentoo.org |
| 13 | # @BLURB: eclass used for accessing kernel related information |
13 | # @BLURB: eclass used for accessing kernel related information |
| 14 | # @DESCRIPTION: |
14 | # @DESCRIPTION: |
| 15 | # This eclass is used as a central eclass for accessing kernel |
15 | # This eclass is used as a central eclass for accessing kernel |
| 16 | # related information for sources already installed. |
16 | # related information for source or binary already installed. |
| 17 | # It is vital for linux-mod.eclass to function correctly, and is split |
17 | # It is vital for linux-mod.eclass to function correctly, and is split |
| 18 | # out so that any ebuild behaviour "templates" are abstracted out |
18 | # out so that any ebuild behaviour "templates" are abstracted out |
| 19 | # using additional eclasses. |
19 | # using additional eclasses. |
|
|
20 | # |
|
|
21 | # "kernel config" in this file means: |
|
|
22 | # The .config of the currently installed sources is used as the first |
|
|
23 | # preference, with a fall-back to bundled config (/proc/config.gz) if available. |
| 20 | |
24 | |
| 21 | # A Couple of env vars are available to effect usage of this eclass |
25 | # A Couple of env vars are available to effect usage of this eclass |
| 22 | # These are as follows: |
26 | # These are as follows: |
| 23 | |
27 | |
| 24 | # @ECLASS-VARIABLE: KERNEL_DIR |
28 | # @ECLASS-VARIABLE: KERNEL_DIR |
| … | |
… | |
| 36 | # You can also check that an option doesn't exist by |
40 | # You can also check that an option doesn't exist by |
| 37 | # prepending it with an exclamation mark (!). |
41 | # prepending it with an exclamation mark (!). |
| 38 | # |
42 | # |
| 39 | # e.g.: CONFIG_CHECK="!MTRR" |
43 | # e.g.: CONFIG_CHECK="!MTRR" |
| 40 | # |
44 | # |
| 41 | # To simply warn about a missing option, prepend a '~'. |
45 | # To simply warn about a missing option, prepend a '~'. |
|
|
46 | # It may be combined with '!'. |
|
|
47 | # |
|
|
48 | # In general, most checks should be non-fatal. The only time fatal checks should |
|
|
49 | # be used is for building kernel modules or cases that a compile will fail |
|
|
50 | # without the option. |
|
|
51 | # |
|
|
52 | # This is to allow usage of binary kernels, and minimal systems without kernel |
|
|
53 | # sources. |
| 42 | |
54 | |
| 43 | # @ECLASS-VARIABLE: ERROR_<CFG> |
55 | # @ECLASS-VARIABLE: ERROR_<CFG> |
| 44 | # @DESCRIPTION: |
56 | # @DESCRIPTION: |
| 45 | # A string containing the error message to display when the check against CONFIG_CHECK |
57 | # A string containing the error message to display when the check against CONFIG_CHECK |
| 46 | # fails. <CFG> should reference the appropriate option used in CONFIG_CHECK. |
58 | # fails. <CFG> should reference the appropriate option used in CONFIG_CHECK. |
| … | |
… | |
| 86 | |
98 | |
| 87 | # @ECLASS-VARIABLE: KV_OUT_DIR |
99 | # @ECLASS-VARIABLE: KV_OUT_DIR |
| 88 | # @DESCRIPTION: |
100 | # @DESCRIPTION: |
| 89 | # A read-only variable. It's a string containing the kernel object directory, will be KV_DIR unless |
101 | # A read-only variable. It's a string containing the kernel object directory, will be KV_DIR unless |
| 90 | # KBUILD_OUTPUT is used. This should be used for referencing .config. |
102 | # KBUILD_OUTPUT is used. This should be used for referencing .config. |
|
|
103 | |
|
|
104 | # @ECLASS-VARIABLE: I_KNOW_WHAT_I_AM_DOING |
|
|
105 | # @DESCRIPTION: |
|
|
106 | # Temporary variable for the migration to making linux-info non-fatal. |
| 91 | |
107 | |
| 92 | # And to ensure all the weirdness with crosscompile |
108 | # And to ensure all the weirdness with crosscompile |
| 93 | inherit toolchain-funcs versionator |
109 | inherit toolchain-funcs versionator |
| 94 | |
110 | |
| 95 | EXPORT_FUNCTIONS pkg_setup |
111 | EXPORT_FUNCTIONS pkg_setup |
| … | |
… | |
| 143 | |
159 | |
| 144 | # @FUNCTION: getfilevar |
160 | # @FUNCTION: getfilevar |
| 145 | # @USAGE: variable configfile |
161 | # @USAGE: variable configfile |
| 146 | # @RETURN: the value of the variable |
162 | # @RETURN: the value of the variable |
| 147 | # @DESCRIPTION: |
163 | # @DESCRIPTION: |
| 148 | # It detects the value of the variable defined in the file configfile |
164 | # It detects the value of the variable defined in the file configfile. This is |
|
|
165 | # done by including the configfile, and printing the variable with Make. |
|
|
166 | # It WILL break if your makefile has missing dependencies! |
| 149 | getfilevar() { |
167 | getfilevar() { |
| 150 | local ERROR basefname basedname myARCH="${ARCH}" |
168 | local ERROR basefname basedname myARCH="${ARCH}" |
| 151 | ERROR=0 |
169 | ERROR=0 |
| 152 | |
170 | |
| 153 | [ -z "${1}" ] && ERROR=1 |
171 | [ -z "${1}" ] && ERROR=1 |
| … | |
… | |
| 168 | |
186 | |
| 169 | ARCH=${myARCH} |
187 | ARCH=${myARCH} |
| 170 | fi |
188 | fi |
| 171 | } |
189 | } |
| 172 | |
190 | |
|
|
191 | # @FUNCTION: getfilevar_noexec |
|
|
192 | # @USAGE: variable configfile |
|
|
193 | # @RETURN: the value of the variable |
|
|
194 | # @DESCRIPTION: |
|
|
195 | # It detects the value of the variable defined in the file configfile. |
|
|
196 | # This is done with sed matching an expression only. If the variable is defined, |
|
|
197 | # you will run into problems. See getfilevar for those cases. |
|
|
198 | getfilevar_noexec() { |
|
|
199 | local ERROR basefname basedname mycat myARCH="${ARCH}" |
|
|
200 | ERROR=0 |
|
|
201 | mycat='cat' |
|
|
202 | |
|
|
203 | [ -z "${1}" ] && ERROR=1 |
|
|
204 | [ ! -f "${2}" ] && ERROR=1 |
|
|
205 | [ "${2#.gz}" != "${2}" ] && mycat='zcat' |
|
|
206 | |
|
|
207 | if [ "${ERROR}" = 1 ] |
|
|
208 | then |
|
|
209 | echo -e "\n" |
|
|
210 | eerror "getfilevar_noexec requires 2 variables, with the second a valid file." |
|
|
211 | eerror " getfilevar_noexec <VARIABLE> <CONFIGFILE>" |
|
|
212 | else |
|
|
213 | ${mycat} "${2}" | \ |
|
|
214 | sed -n \ |
|
|
215 | -e "/^[[:space:]]*${1}[[:space:]]*=[[:space:]]*\(.*\)\$/{ |
|
|
216 | s,^[^=]*[[:space:]]*=[[:space:]]*,,g ; |
|
|
217 | s,[[:space:]]*\$,,g ; |
|
|
218 | p |
|
|
219 | }" |
|
|
220 | fi |
|
|
221 | } |
|
|
222 | |
|
|
223 | |
|
|
224 | # @FUNCTION: linux_config_src_exists |
|
|
225 | # @RETURN: true or false |
|
|
226 | # @DESCRIPTION: |
|
|
227 | # It returns true if .config exists in a build directory otherwise false |
|
|
228 | linux_config_src_exists() { |
|
|
229 | [ -s "${KV_OUT_DIR}/.config" ] |
|
|
230 | } |
|
|
231 | |
|
|
232 | # @FUNCTION: linux_config_bin_exists |
|
|
233 | # @RETURN: true or false |
|
|
234 | # @DESCRIPTION: |
|
|
235 | # It returns true if .config exists in /proc, otherwise false |
|
|
236 | linux_config_bin_exists() { |
|
|
237 | [ -s "/proc/config.gz" ] |
|
|
238 | } |
| 173 | |
239 | |
| 174 | # @FUNCTION: linux_config_exists |
240 | # @FUNCTION: linux_config_exists |
| 175 | # @RETURN: true or false |
241 | # @RETURN: true or false |
| 176 | # @DESCRIPTION: |
242 | # @DESCRIPTION: |
| 177 | # It returns true if .config exists otherwise false |
243 | # It returns true if .config exists otherwise false |
|
|
244 | # |
|
|
245 | # This function MUST be checked before using any of the linux_chkconfig_* |
|
|
246 | # functions. |
| 178 | linux_config_exists() { |
247 | linux_config_exists() { |
| 179 | [ -s "${KV_OUT_DIR}/.config" ] |
248 | linux_config_src_exists || linux_config_bin_exists |
| 180 | } |
249 | } |
| 181 | |
250 | |
| 182 | # @FUNCTION: require_configured_kernel |
251 | # @FUNCTION: require_configured_kernel |
| 183 | # @DESCRIPTION: |
252 | # @DESCRIPTION: |
| 184 | # This function verifies that the current kernel is configured (it checks against the existence of .config) |
253 | # This function verifies that the current kernel is configured (it checks against the existence of .config) |
| 185 | # otherwise it dies. |
254 | # otherwise it dies. |
| 186 | require_configured_kernel() { |
255 | require_configured_kernel() { |
| 187 | if ! linux_config_exists; then |
256 | if ! linux_config_src_exists; then |
| 188 | qeerror "Could not find a usable .config in the kernel source directory." |
257 | qeerror "Could not find a usable .config in the kernel source directory." |
| 189 | qeerror "Please ensure that ${KERNEL_DIR} points to a configured set of Linux sources." |
258 | qeerror "Please ensure that ${KERNEL_DIR} points to a configured set of Linux sources." |
| 190 | qeerror "If you are using KBUILD_OUTPUT, please set the environment var so that" |
259 | qeerror "If you are using KBUILD_OUTPUT, please set the environment var so that" |
| 191 | qeerror "it points to the necessary object directory so that it might find .config." |
260 | qeerror "it points to the necessary object directory so that it might find .config." |
| 192 | die "Kernel not configured; no .config found in ${KV_OUT_DIR}" |
261 | die "Kernel not configured; no .config found in ${KV_OUT_DIR}" |
| … | |
… | |
| 196 | # @FUNCTION: linux_chkconfig_present |
265 | # @FUNCTION: linux_chkconfig_present |
| 197 | # @USAGE: option |
266 | # @USAGE: option |
| 198 | # @RETURN: true or false |
267 | # @RETURN: true or false |
| 199 | # @DESCRIPTION: |
268 | # @DESCRIPTION: |
| 200 | # It checks that CONFIG_<option>=y or CONFIG_<option>=m is present in the current kernel .config |
269 | # It checks that CONFIG_<option>=y or CONFIG_<option>=m is present in the current kernel .config |
|
|
270 | # If linux_config_exists returns false, the results of this are UNDEFINED. You |
|
|
271 | # MUST call linux_config_exists first. |
| 201 | linux_chkconfig_present() { |
272 | linux_chkconfig_present() { |
| 202 | local RESULT |
273 | local RESULT |
| 203 | require_configured_kernel |
274 | [ -z "${I_KNOW_WHAT_I_AM_DOING}" ] && require_configured_kernel |
|
|
275 | local config |
|
|
276 | config="${KV_OUT_DIR}/.config" |
|
|
277 | [ ! -f "${config}" ] && config="/proc/config.gz" |
| 204 | RESULT="$(getfilevar CONFIG_${1} ${KV_OUT_DIR}/.config)" |
278 | RESULT="$(getfilevar_noexec CONFIG_${1} "${config}")" |
| 205 | [ "${RESULT}" = "m" -o "${RESULT}" = "y" ] && return 0 || return 1 |
279 | [ "${RESULT}" = "m" -o "${RESULT}" = "y" ] && return 0 || return 1 |
| 206 | } |
280 | } |
| 207 | |
281 | |
| 208 | # @FUNCTION: linux_chkconfig_module |
282 | # @FUNCTION: linux_chkconfig_module |
| 209 | # @USAGE: option |
283 | # @USAGE: option |
| 210 | # @RETURN: true or false |
284 | # @RETURN: true or false |
| 211 | # @DESCRIPTION: |
285 | # @DESCRIPTION: |
| 212 | # It checks that CONFIG_<option>=m is present in the current kernel .config |
286 | # It checks that CONFIG_<option>=m is present in the current kernel .config |
|
|
287 | # If linux_config_exists returns false, the results of this are UNDEFINED. You |
|
|
288 | # MUST call linux_config_exists first. |
| 213 | linux_chkconfig_module() { |
289 | linux_chkconfig_module() { |
| 214 | local RESULT |
290 | local RESULT |
| 215 | require_configured_kernel |
291 | [ -z "${I_KNOW_WHAT_I_AM_DOING}" ] && require_configured_kernel |
|
|
292 | local config |
|
|
293 | config="${KV_OUT_DIR}/.config" |
|
|
294 | [ ! -f "${config}" ] && config="/proc/config.gz" |
| 216 | RESULT="$(getfilevar CONFIG_${1} ${KV_OUT_DIR}/.config)" |
295 | RESULT="$(getfilevar_noexec CONFIG_${1} "${config}")" |
| 217 | [ "${RESULT}" = "m" ] && return 0 || return 1 |
296 | [ "${RESULT}" = "m" ] && return 0 || return 1 |
| 218 | } |
297 | } |
| 219 | |
298 | |
| 220 | # @FUNCTION: linux_chkconfig_builtin |
299 | # @FUNCTION: linux_chkconfig_builtin |
| 221 | # @USAGE: option |
300 | # @USAGE: option |
| 222 | # @RETURN: true or false |
301 | # @RETURN: true or false |
| 223 | # @DESCRIPTION: |
302 | # @DESCRIPTION: |
| 224 | # It checks that CONFIG_<option>=y is present in the current kernel .config |
303 | # It checks that CONFIG_<option>=y is present in the current kernel .config |
|
|
304 | # If linux_config_exists returns false, the results of this are UNDEFINED. You |
|
|
305 | # MUST call linux_config_exists first. |
| 225 | linux_chkconfig_builtin() { |
306 | linux_chkconfig_builtin() { |
| 226 | local RESULT |
307 | local RESULT |
| 227 | require_configured_kernel |
308 | [ -z "${I_KNOW_WHAT_I_AM_DOING}" ] && require_configured_kernel |
|
|
309 | local config |
|
|
310 | config="${KV_OUT_DIR}/.config" |
|
|
311 | [ ! -f "${config}" ] && config="/proc/config.gz" |
| 228 | RESULT="$(getfilevar CONFIG_${1} ${KV_OUT_DIR}/.config)" |
312 | RESULT="$(getfilevar_noexec CONFIG_${1} "${config}")" |
| 229 | [ "${RESULT}" = "y" ] && return 0 || return 1 |
313 | [ "${RESULT}" = "y" ] && return 0 || return 1 |
| 230 | } |
314 | } |
| 231 | |
315 | |
| 232 | # @FUNCTION: linux_chkconfig_string |
316 | # @FUNCTION: linux_chkconfig_string |
| 233 | # @USAGE: option |
317 | # @USAGE: option |
| 234 | # @RETURN: CONFIG_<option> |
318 | # @RETURN: CONFIG_<option> |
| 235 | # @DESCRIPTION: |
319 | # @DESCRIPTION: |
| 236 | # It prints the CONFIG_<option> value of the current kernel .config (it requires a configured kernel). |
320 | # It prints the CONFIG_<option> value of the current kernel .config (it requires a configured kernel). |
|
|
321 | # If linux_config_exists returns false, the results of this are UNDEFINED. You |
|
|
322 | # MUST call linux_config_exists first. |
| 237 | linux_chkconfig_string() { |
323 | linux_chkconfig_string() { |
| 238 | require_configured_kernel |
324 | [ -z "${I_KNOW_WHAT_I_AM_DOING}" ] && require_configured_kernel |
|
|
325 | local config |
|
|
326 | config="${KV_OUT_DIR}/.config" |
|
|
327 | [ ! -f "${config}" ] && config="/proc/config.gz" |
| 239 | getfilevar "CONFIG_${1}" "${KV_OUT_DIR}/.config" |
328 | getfilevar_noexec "CONFIG_${1}" "${config}" |
| 240 | } |
329 | } |
| 241 | |
330 | |
| 242 | # Versioning Functions |
331 | # Versioning Functions |
| 243 | # --------------------------------------- |
332 | # --------------------------------------- |
| 244 | |
333 | |
| … | |
… | |
| 287 | 3) for((y=0; y<$((3 - ${#KV_PATCH})); y++)); do test="${test}0"; done; |
376 | 3) for((y=0; y<$((3 - ${#KV_PATCH})); y++)); do test="${test}0"; done; |
| 288 | test="${test}${KV_PATCH}";; |
377 | test="${test}${KV_PATCH}";; |
| 289 | *) die "Error in kernel-2_kernel_is(): Too many parameters.";; |
378 | *) die "Error in kernel-2_kernel_is(): Too many parameters.";; |
| 290 | esac |
379 | esac |
| 291 | done |
380 | done |
| 292 | |
381 | |
| 293 | [ ${test} ${operator} ${value} ] && return 0 || return 1 |
382 | [ ${test} ${operator} ${value} ] && return 0 || return 1 |
| 294 | } |
383 | } |
| 295 | |
384 | |
| 296 | get_localversion() { |
385 | get_localversion() { |
| 297 | local lv_list i x |
386 | local lv_list i x |
| … | |
… | |
| 306 | done |
395 | done |
| 307 | x=${x/ /} |
396 | x=${x/ /} |
| 308 | echo ${x} |
397 | echo ${x} |
| 309 | } |
398 | } |
| 310 | |
399 | |
|
|
400 | # internal variable, so we know to only print the warning once |
|
|
401 | get_version_warning_done= |
|
|
402 | |
| 311 | # @FUNCTION: get_version |
403 | # @FUNCTION: get_version |
| 312 | # @DESCRIPTION: |
404 | # @DESCRIPTION: |
| 313 | # It gets the version of the kernel inside KERNEL_DIR and populates the KV_FULL variable |
405 | # It gets the version of the kernel inside KERNEL_DIR and populates the KV_FULL variable |
| 314 | # (if KV_FULL is already set it does nothing). |
406 | # (if KV_FULL is already set it does nothing). |
| 315 | # |
407 | # |
| … | |
… | |
| 328 | # if we dont know KV_FULL, then we need too. |
420 | # if we dont know KV_FULL, then we need too. |
| 329 | # make sure KV_DIR isnt set since we need to work it out via KERNEL_DIR |
421 | # make sure KV_DIR isnt set since we need to work it out via KERNEL_DIR |
| 330 | unset KV_DIR |
422 | unset KV_DIR |
| 331 | |
423 | |
| 332 | # KV_DIR will contain the full path to the sources directory we should use |
424 | # KV_DIR will contain the full path to the sources directory we should use |
|
|
425 | [ -z "${get_version_warning_done}" ] && \ |
| 333 | qeinfo "Determining the location of the kernel source code" |
426 | qeinfo "Determining the location of the kernel source code" |
| 334 | [ -h "${KERNEL_DIR}" ] && KV_DIR="$(readlink -f ${KERNEL_DIR})" |
427 | [ -h "${KERNEL_DIR}" ] && KV_DIR="$(readlink -f ${KERNEL_DIR})" |
| 335 | [ -d "${KERNEL_DIR}" ] && KV_DIR="${KERNEL_DIR}" |
428 | [ -d "${KERNEL_DIR}" ] && KV_DIR="${KERNEL_DIR}" |
| 336 | |
429 | |
| 337 | if [ -z "${KV_DIR}" ] |
430 | if [ -z "${KV_DIR}" ] |
| 338 | then |
431 | then |
|
|
432 | if [ -z "${get_version_warning_done}" ]; then |
|
|
433 | get_version_warning_done=1 |
| 339 | qeerror "Unable to find kernel sources at ${KERNEL_DIR}" |
434 | qeerror "Unable to find kernel sources at ${KERNEL_DIR}" |
| 340 | qeinfo "This package requires Linux sources." |
435 | #qeinfo "This package requires Linux sources." |
| 341 | if [ "${KERNEL_DIR}" == "/usr/src/linux" ] ; then |
436 | if [ "${KERNEL_DIR}" == "/usr/src/linux" ] ; then |
| 342 | qeinfo "Please make sure that ${KERNEL_DIR} points at your running kernel, " |
437 | qeinfo "Please make sure that ${KERNEL_DIR} points at your running kernel, " |
| 343 | qeinfo "(or the kernel you wish to build against)." |
438 | qeinfo "(or the kernel you wish to build against)." |
| 344 | qeinfo "Alternatively, set the KERNEL_DIR environment variable to the kernel sources location" |
439 | qeinfo "Alternatively, set the KERNEL_DIR environment variable to the kernel sources location" |
| 345 | else |
440 | else |
| 346 | qeinfo "Please ensure that the KERNEL_DIR environment variable points at full Linux sources of the kernel you wish to compile against." |
441 | qeinfo "Please ensure that the KERNEL_DIR environment variable points at full Linux sources of the kernel you wish to compile against." |
|
|
442 | fi |
| 347 | fi |
443 | fi |
| 348 | return 1 |
444 | return 1 |
| 349 | fi |
445 | fi |
| 350 | |
446 | |
|
|
447 | if [ -z "${get_version_warning_done}" ]; then |
| 351 | qeinfo "Found kernel source directory:" |
448 | qeinfo "Found kernel source directory:" |
| 352 | qeinfo " ${KV_DIR}" |
449 | qeinfo " ${KV_DIR}" |
|
|
450 | fi |
| 353 | |
451 | |
| 354 | if [ ! -s "${KV_DIR}/Makefile" ] |
452 | if [ ! -s "${KV_DIR}/Makefile" ] |
| 355 | then |
453 | then |
|
|
454 | if [ -z "${get_version_warning_done}" ]; then |
|
|
455 | get_version_warning_done=1 |
| 356 | qeerror "Could not find a Makefile in the kernel source directory." |
456 | qeerror "Could not find a Makefile in the kernel source directory." |
| 357 | qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources" |
457 | qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources" |
|
|
458 | fi |
| 358 | return 1 |
459 | return 1 |
| 359 | fi |
460 | fi |
| 360 | |
461 | |
| 361 | # OK so now we know our sources directory, but they might be using |
462 | # OK so now we know our sources directory, but they might be using |
| 362 | # KBUILD_OUTPUT, and we need this for .config and localversions-* |
463 | # KBUILD_OUTPUT, and we need this for .config and localversions-* |
| 363 | # so we better find it eh? |
464 | # so we better find it eh? |
| 364 | # do we pass KBUILD_OUTPUT on the CLI? |
465 | # do we pass KBUILD_OUTPUT on the CLI? |
| 365 | OUTPUT_DIR="${OUTPUT_DIR:-${KBUILD_OUTPUT}}" |
466 | OUTPUT_DIR="${OUTPUT_DIR:-${KBUILD_OUTPUT}}" |
| 366 | |
467 | |
| 367 | # And if we didn't pass it, we can take a nosey in the Makefile |
468 | # And if we didn't pass it, we can take a nosey in the Makefile |
| 368 | kbuild_output="$(getfilevar KBUILD_OUTPUT ${KV_DIR}/Makefile)" |
469 | kbuild_output="$(getfilevar_noexec KBUILD_OUTPUT ${KV_DIR}/Makefile)" |
| 369 | OUTPUT_DIR="${OUTPUT_DIR:-${kbuild_output}}" |
470 | OUTPUT_DIR="${OUTPUT_DIR:-${kbuild_output}}" |
| 370 | |
471 | |
| 371 | # And contrary to existing functions I feel we shouldn't trust the |
472 | # And contrary to existing functions I feel we shouldn't trust the |
| 372 | # directory name to find version information as this seems insane. |
473 | # directory name to find version information as this seems insane. |
| 373 | # so we parse ${KV_DIR}/Makefile |
474 | # so we parse ${KV_DIR}/Makefile |
| 374 | KV_MAJOR="$(getfilevar VERSION ${KV_DIR}/Makefile)" |
475 | KV_MAJOR="$(getfilevar_noexec VERSION ${KV_DIR}/Makefile)" |
| 375 | KV_MINOR="$(getfilevar PATCHLEVEL ${KV_DIR}/Makefile)" |
476 | KV_MINOR="$(getfilevar_noexec PATCHLEVEL ${KV_DIR}/Makefile)" |
| 376 | KV_PATCH="$(getfilevar SUBLEVEL ${KV_DIR}/Makefile)" |
477 | KV_PATCH="$(getfilevar_noexec SUBLEVEL ${KV_DIR}/Makefile)" |
| 377 | KV_EXTRA="$(getfilevar EXTRAVERSION ${KV_DIR}/Makefile)" |
478 | KV_EXTRA="$(getfilevar_noexec EXTRAVERSION ${KV_DIR}/Makefile)" |
| 378 | |
479 | |
| 379 | if [ -z "${KV_MAJOR}" -o -z "${KV_MINOR}" -o -z "${KV_PATCH}" ] |
480 | if [ -z "${KV_MAJOR}" -o -z "${KV_MINOR}" -o -z "${KV_PATCH}" ] |
| 380 | then |
481 | then |
|
|
482 | if [ -z "${get_version_warning_done}" ]; then |
|
|
483 | get_version_warning_done=1 |
| 381 | qeerror "Could not detect kernel version." |
484 | qeerror "Could not detect kernel version." |
| 382 | qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources." |
485 | qeerror "Please ensure that ${KERNEL_DIR} points to a complete set of Linux sources." |
|
|
486 | fi |
| 383 | return 1 |
487 | return 1 |
| 384 | fi |
488 | fi |
| 385 | |
489 | |
| 386 | # and in newer versions we can also pull LOCALVERSION if it is set. |
490 | # and in newer versions we can also pull LOCALVERSION if it is set. |
| 387 | # but before we do this, we need to find if we use a different object directory. |
491 | # but before we do this, we need to find if we use a different object directory. |
| … | |
… | |
| 639 | local DEFLATE |
743 | local DEFLATE |
| 640 | |
744 | |
| 641 | einfo "Determining the usability of ZLIB_INFLATE support in your kernel" |
745 | einfo "Determining the usability of ZLIB_INFLATE support in your kernel" |
| 642 | |
746 | |
| 643 | ebegin "checking ZLIB_INFLATE" |
747 | ebegin "checking ZLIB_INFLATE" |
| 644 | getfilevar_isbuiltin CONFIG_ZLIB_INFLATE ${KV_DIR}/.config |
748 | linux_chkconfig_builtin CONFIG_ZLIB_INFLATE |
| 645 | eend $? |
749 | eend $? |
| 646 | [ "$?" != 0 ] && die |
750 | [ "$?" != 0 ] && die |
| 647 | |
751 | |
| 648 | ebegin "checking ZLIB_DEFLATE" |
752 | ebegin "checking ZLIB_DEFLATE" |
| 649 | getfilevar_isbuiltin CONFIG_ZLIB_DEFLATE ${KV_DIR}/.config |
753 | linux_chkconfig_builtin CONFIG_ZLIB_DEFLATE |
| 650 | eend $? |
754 | eend $? |
| 651 | [ "$?" != 0 ] && die |
755 | [ "$?" != 0 ] && die |
| 652 | |
756 | |
| 653 | local LINENO_START |
757 | local LINENO_START |
| 654 | local LINENO_END |
758 | local LINENO_END |
| … | |
… | |
| 697 | # @FUNCTION: linux-info_pkg_setup |
801 | # @FUNCTION: linux-info_pkg_setup |
| 698 | # @DESCRIPTION: |
802 | # @DESCRIPTION: |
| 699 | # Force a get_version() call when inherited from linux-mod.eclass and then check if the kernel is configured |
803 | # Force a get_version() call when inherited from linux-mod.eclass and then check if the kernel is configured |
| 700 | # to support the options specified in CONFIG_CHECK (if not null) |
804 | # to support the options specified in CONFIG_CHECK (if not null) |
| 701 | linux-info_pkg_setup() { |
805 | linux-info_pkg_setup() { |
| 702 | get_version || die "Unable to calculate Linux Kernel version" |
806 | get_version |
|
|
807 | if [[ $rc -ne 0 ]]; then |
|
|
808 | ewarn "Unable to calculate Linux Kernel version for build, attempting to use running version" |
|
|
809 | get_running_version |
|
|
810 | fi |
| 703 | |
811 | |
| 704 | if kernel_is 2 4; then |
812 | if kernel_is 2 4; then |
| 705 | if [ "$( gcc-major-version )" -eq "4" ] ; then |
813 | if [ "$( gcc-major-version )" -eq "4" ] ; then |
| 706 | echo |
814 | echo |
| 707 | ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with" |
815 | ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with" |