/[gentoo-x86]/eclass/linux-info.eclass
Gentoo

Diff of /eclass/linux-info.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.83 Revision 1.96
1# Copyright 1999-2006 Gentoo Foundation 1# Copyright 1999-2013 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.83 2010/01/17 21:46:55 robbat2 Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/linux-info.eclass,v 1.96 2013/01/24 20:47:23 vapier Exp $
4#
5# Original author: John Mylchreest <johnm@gentoo.org>
6# Maintainer: kernel-misc@gentoo.org
7#
8# Please direct your bugs to the current eclass maintainer :)
9 4
10# @ECLASS: linux-info.eclass 5# @ECLASS: linux-info.eclass
11# @MAINTAINER: 6# @MAINTAINER:
12# kernel-misc@gentoo.org 7# kernel-misc@gentoo.org
8# @AUTHOR:
9# Original author: John Mylchreest <johnm@gentoo.org>
13# @BLURB: eclass used for accessing kernel related information 10# @BLURB: eclass used for accessing kernel related information
14# @DESCRIPTION: 11# @DESCRIPTION:
15# This eclass is used as a central eclass for accessing kernel 12# This eclass is used as a central eclass for accessing kernel
16# related information for source or binary already installed. 13# related information for source or binary already installed.
17# It is vital for linux-mod.eclass to function correctly, and is split 14# It is vital for linux-mod.eclass to function correctly, and is split
19# using additional eclasses. 16# using additional eclasses.
20# 17#
21# "kernel config" in this file means: 18# "kernel config" in this file means:
22# The .config of the currently installed sources is used as the first 19# 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# preference, with a fall-back to bundled config (/proc/config.gz) if available.
21#
22# Before using any of the config-handling functions in this eclass, you must
23# ensure that one of the following functions has been called (in order of
24# preference), otherwise you will get bugs like #364041):
25# linux-info_pkg_setup
26# linux-info_get_any_version
27# get_version
28# get_running_version
24 29
25# A Couple of env vars are available to effect usage of this eclass 30# A Couple of env vars are available to effect usage of this eclass
26# These are as follows: 31# These are as follows:
27 32
28# @ECLASS-VARIABLE: KERNEL_DIR 33# @ECLASS-VARIABLE: KERNEL_DIR
40# You can also check that an option doesn't exist by 45# You can also check that an option doesn't exist by
41# prepending it with an exclamation mark (!). 46# prepending it with an exclamation mark (!).
42# 47#
43# e.g.: CONFIG_CHECK="!MTRR" 48# e.g.: CONFIG_CHECK="!MTRR"
44# 49#
45# To simply warn about a missing option, prepend a '~'. 50# To simply warn about a missing option, prepend a '~'.
46# It may be combined with '!'. 51# It may be combined with '!'.
47# 52#
48# In general, most checks should be non-fatal. The only time fatal checks should 53# 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 54# be used is for building kernel modules or cases that a compile will fail
50# without the option. 55# without the option.
160# @DESCRIPTION: 165# @DESCRIPTION:
161# It detects the value of the variable defined in the file configfile. This is 166# It detects the value of the variable defined in the file configfile. This is
162# done by including the configfile, and printing the variable with Make. 167# done by including the configfile, and printing the variable with Make.
163# It WILL break if your makefile has missing dependencies! 168# It WILL break if your makefile has missing dependencies!
164getfilevar() { 169getfilevar() {
165local ERROR basefname basedname myARCH="${ARCH}" 170 local ERROR basefname basedname myARCH="${ARCH}"
166 ERROR=0 171 ERROR=0
167 172
168 [ -z "${1}" ] && ERROR=1 173 [ -z "${1}" ] && ERROR=1
169 [ ! -f "${2}" ] && ERROR=1 174 [ ! -f "${2}" ] && ERROR=1
170 175
191# @DESCRIPTION: 196# @DESCRIPTION:
192# It detects the value of the variable defined in the file configfile. 197# It detects the value of the variable defined in the file configfile.
193# This is done with sed matching an expression only. If the variable is defined, 198# This is done with sed matching an expression only. If the variable is defined,
194# you will run into problems. See getfilevar for those cases. 199# you will run into problems. See getfilevar for those cases.
195getfilevar_noexec() { 200getfilevar_noexec() {
196 local ERROR basefname basedname mycat myARCH="${ARCH}" 201 local ERROR basefname basedname mycat myARCH="${ARCH}"
197 ERROR=0 202 ERROR=0
198 mycat='cat' 203 mycat='cat'
199 204
200 [ -z "${1}" ] && ERROR=1 205 [ -z "${1}" ] && ERROR=1
201 [ ! -f "${2}" ] && ERROR=1 206 [ ! -f "${2}" ] && ERROR=1
207 eerror "getfilevar_noexec requires 2 variables, with the second a valid file." 212 eerror "getfilevar_noexec requires 2 variables, with the second a valid file."
208 eerror " getfilevar_noexec <VARIABLE> <CONFIGFILE>" 213 eerror " getfilevar_noexec <VARIABLE> <CONFIGFILE>"
209 else 214 else
210 ${mycat} "${2}" | \ 215 ${mycat} "${2}" | \
211 sed -n \ 216 sed -n \
212 -e "/^[[:space:]]*${1}[[:space:]]*:\\?=[[:space:]]*\(.*\)\$/{ 217 -e "/^[[:space:]]*${1}[[:space:]]*:\\?=[[:space:]]*\(.*\)\$/{
213 s,^[^=]*[[:space:]]*=[[:space:]]*,,g ; 218 s,^[^=]*[[:space:]]*=[[:space:]]*,,g ;
214 s,[[:space:]]*\$,,g ; 219 s,[[:space:]]*\$,,g ;
215 p 220 p
216 }" 221 }"
217 fi 222 fi
218} 223}
219 224
220# @PRIVATE-VARIABLE: _LINUX_CONFIG_EXISTS_DONE 225# @ECLASS-VARIABLE: _LINUX_CONFIG_EXISTS_DONE
226# @INTERNAL
221# @DESCRIPTION: 227# @DESCRIPTION:
222# This is only set if one of the linux_config_*exists functions has been called. 228# This is only set if one of the linux_config_*exists functions has been called.
223# We use it for a QA warning that the check for a config has not been performed, 229# We use it for a QA warning that the check for a config has not been performed,
224# as linux_chkconfig* in non-legacy mode WILL return an undefined value if no 230# as linux_chkconfig* in non-legacy mode WILL return an undefined value if no
225# config is available at all. 231# config is available at all.
227 233
228linux_config_qa_check() { 234linux_config_qa_check() {
229 local f="$1" 235 local f="$1"
230 if [ -z "${_LINUX_CONFIG_EXISTS_DONE}" ]; then 236 if [ -z "${_LINUX_CONFIG_EXISTS_DONE}" ]; then
231 ewarn "QA: You called $f before any linux_config_exists!" 237 ewarn "QA: You called $f before any linux_config_exists!"
232 ewarn "QA: The return value of $f will NOT gaurenteed later!" 238 ewarn "QA: The return value of $f will NOT guaranteed later!"
233 fi 239 fi
234} 240}
235 241
236# @FUNCTION: linux_config_src_exists 242# @FUNCTION: linux_config_src_exists
237# @RETURN: true or false 243# @RETURN: true or false
283# It checks that CONFIG_<option>=y or CONFIG_<option>=m is present in the current kernel .config 289# It checks that CONFIG_<option>=y or CONFIG_<option>=m is present in the current kernel .config
284# If linux_config_exists returns false, the results of this are UNDEFINED. You 290# If linux_config_exists returns false, the results of this are UNDEFINED. You
285# MUST call linux_config_exists first. 291# MUST call linux_config_exists first.
286linux_chkconfig_present() { 292linux_chkconfig_present() {
287 linux_config_qa_check linux_chkconfig_present 293 linux_config_qa_check linux_chkconfig_present
288 local RESULT
289 local config 294 local RESULT config
290 config="${KV_OUT_DIR}/.config" 295 config="${KV_OUT_DIR}/.config"
291 [ ! -f "${config}" ] && config="/proc/config.gz" 296 [ ! -f "${config}" ] && config="/proc/config.gz"
292 RESULT="$(getfilevar_noexec CONFIG_${1} "${config}")" 297 RESULT="$(getfilevar_noexec CONFIG_${1} "${config}")"
293 [ "${RESULT}" = "m" -o "${RESULT}" = "y" ] && return 0 || return 1 298 [ "${RESULT}" = "m" -o "${RESULT}" = "y" ] && return 0 || return 1
294} 299}
300# It checks that CONFIG_<option>=m is present in the current kernel .config 305# It checks that CONFIG_<option>=m is present in the current kernel .config
301# If linux_config_exists returns false, the results of this are UNDEFINED. You 306# If linux_config_exists returns false, the results of this are UNDEFINED. You
302# MUST call linux_config_exists first. 307# MUST call linux_config_exists first.
303linux_chkconfig_module() { 308linux_chkconfig_module() {
304 linux_config_qa_check linux_chkconfig_module 309 linux_config_qa_check linux_chkconfig_module
305 local RESULT
306 local config 310 local RESULT config
307 config="${KV_OUT_DIR}/.config" 311 config="${KV_OUT_DIR}/.config"
308 [ ! -f "${config}" ] && config="/proc/config.gz" 312 [ ! -f "${config}" ] && config="/proc/config.gz"
309 RESULT="$(getfilevar_noexec CONFIG_${1} "${config}")" 313 RESULT="$(getfilevar_noexec CONFIG_${1} "${config}")"
310 [ "${RESULT}" = "m" ] && return 0 || return 1 314 [ "${RESULT}" = "m" ] && return 0 || return 1
311} 315}
317# It checks that CONFIG_<option>=y is present in the current kernel .config 321# It checks that CONFIG_<option>=y is present in the current kernel .config
318# If linux_config_exists returns false, the results of this are UNDEFINED. You 322# If linux_config_exists returns false, the results of this are UNDEFINED. You
319# MUST call linux_config_exists first. 323# MUST call linux_config_exists first.
320linux_chkconfig_builtin() { 324linux_chkconfig_builtin() {
321 linux_config_qa_check linux_chkconfig_builtin 325 linux_config_qa_check linux_chkconfig_builtin
322 local RESULT
323 local config 326 local RESULT config
324 config="${KV_OUT_DIR}/.config" 327 config="${KV_OUT_DIR}/.config"
325 [ ! -f "${config}" ] && config="/proc/config.gz" 328 [ ! -f "${config}" ] && config="/proc/config.gz"
326 RESULT="$(getfilevar_noexec CONFIG_${1} "${config}")" 329 RESULT="$(getfilevar_noexec CONFIG_${1} "${config}")"
327 [ "${RESULT}" = "y" ] && return 0 || return 1 330 [ "${RESULT}" = "y" ] && return 0 || return 1
328} 331}
359# kernel_is 2 6 returns true 362# kernel_is 2 6 returns true
360# kernel_is 2 6 8 returns false 363# kernel_is 2 6 8 returns false
361# kernel_is 2 6 9 returns true 364# kernel_is 2 6 9 returns true
362# @CODE 365# @CODE
363 366
364# got the jist yet? 367# Note: duplicated in kernel-2.eclass
365
366kernel_is() { 368kernel_is() {
367 # if we haven't determined the version yet, we need to. 369 # if we haven't determined the version yet, we need to.
368 linux-info_get_any_version 370 linux-info_get_any_version
369 371
370 local operator testagainst value x=0 y=0 z=0 372 # Now we can continue
373 local operator test value
371 374
372 case ${1} in 375 case ${1#-} in
373 -lt|lt) operator="-lt"; shift;; 376 lt) operator="-lt"; shift;;
374 -gt|gt) operator="-gt"; shift;; 377 gt) operator="-gt"; shift;;
375 -le|le) operator="-le"; shift;; 378 le) operator="-le"; shift;;
376 -ge|ge) operator="-ge"; shift;; 379 ge) operator="-ge"; shift;;
377 -eq|eq) operator="-eq"; shift;; 380 eq) operator="-eq"; shift;;
378 *) operator="-eq";; 381 *) operator="-eq";;
379 esac 382 esac
380
381 for x in ${@}; do
382 for((y=0; y<$((3 - ${#x})); y++)); do value="${value}0"; done
383 value="${value}${x}"
384 z=$((${z} + 1))
385
386 case ${z} in
387 1) for((y=0; y<$((3 - ${#KV_MAJOR})); y++)); do testagainst="${testagainst}0"; done;
388 testagainst="${testagainst}${KV_MAJOR}";;
389 2) for((y=0; y<$((3 - ${#KV_MINOR})); y++)); do testagainst="${testagainst}0"; done;
390 testagainst="${testagainst}${KV_MINOR}";;
391 3) for((y=0; y<$((3 - ${#KV_PATCH})); y++)); do testagainst="${testagainst}0"; done;
392 testagainst="${testagainst}${KV_PATCH}";;
393 *) die "Error in kernel-2_kernel_is(): Too many parameters.";; 383 [[ $# -gt 3 ]] && die "Error in kernel-2_kernel_is(): too many parameters"
394 esac
395 done
396 384
397 [ "${testagainst}" ${operator} "${value}" ] && return 0 || return 1 385 : $(( test = (KV_MAJOR << 16) + (KV_MINOR << 8) + KV_PATCH ))
386 : $(( value = (${1:-${KV_MAJOR}} << 16) + (${2:-${KV_MINOR}} << 8) + ${3:-${KV_PATCH}} ))
387 [ ${test} ${operator} ${value} ]
398} 388}
399 389
400get_localversion() { 390get_localversion() {
401 local lv_list i x 391 local lv_list i x
402 392
439# 429#
440# The KV_DIR is set using the KERNEL_DIR env var, the KV_DIR_OUT is set using a valid 430# The KV_DIR is set using the KERNEL_DIR env var, the KV_DIR_OUT is set using a valid
441# KBUILD_OUTPUT (in a decreasing priority list, we look for the env var, makefile var or the 431# KBUILD_OUTPUT (in a decreasing priority list, we look for the env var, makefile var or the
442# symlink /lib/modules/${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}/build). 432# symlink /lib/modules/${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}/build).
443get_version() { 433get_version() {
444 local kbuild_output mkfunc 434 local kbuild_output mkfunc tmplocal
445 435
446 # no need to execute this twice assuming KV_FULL is populated. 436 # no need to execute this twice assuming KV_FULL is populated.
447 # we can force by unsetting KV_FULL 437 # we can force by unsetting KV_FULL
448 [ -n "${KV_FULL}" ] && return 0 438 [ -n "${KV_FULL}" ] && return 0
449 439
495 # do we pass KBUILD_OUTPUT on the CLI? 485 # do we pass KBUILD_OUTPUT on the CLI?
496 OUTPUT_DIR="${OUTPUT_DIR:-${KBUILD_OUTPUT}}" 486 OUTPUT_DIR="${OUTPUT_DIR:-${KBUILD_OUTPUT}}"
497 487
498 # keep track of it 488 # keep track of it
499 KERNEL_MAKEFILE="${KV_DIR}/Makefile" 489 KERNEL_MAKEFILE="${KV_DIR}/Makefile"
500 490
501 # Decide the function used to extract makefile variables. 491 # Decide the function used to extract makefile variables.
502 mkfunc="$(get_makefile_extract_function "${KERNEL_MAKEFILE}")" 492 mkfunc="$(get_makefile_extract_function "${KERNEL_MAKEFILE}")"
503 493
504 # And if we didn't pass it, we can take a nosey in the Makefile 494 # And if we didn't pass it, we can take a nosey in the Makefile
505 kbuild_output="$(${mkfunc} KBUILD_OUTPUT ${KERNEL_MAKEFILE})" 495 kbuild_output="$(${mkfunc} KBUILD_OUTPUT ${KERNEL_MAKEFILE})"
533 [ -d "${OUTPUT_DIR}" ] && KV_OUT_DIR="${OUTPUT_DIR}" 523 [ -d "${OUTPUT_DIR}" ] && KV_OUT_DIR="${OUTPUT_DIR}"
534 if [ -n "${KV_OUT_DIR}" ]; 524 if [ -n "${KV_OUT_DIR}" ];
535 then 525 then
536 qeinfo "Found kernel object directory:" 526 qeinfo "Found kernel object directory:"
537 qeinfo " ${KV_OUT_DIR}" 527 qeinfo " ${KV_OUT_DIR}"
538
539 KV_LOCAL="$(get_localversion ${KV_OUT_DIR})"
540 fi 528 fi
541 # and if we STILL have not got it, then we better just set it to KV_DIR 529 # and if we STILL have not got it, then we better just set it to KV_DIR
542 KV_OUT_DIR="${KV_OUT_DIR:-${KV_DIR}}" 530 KV_OUT_DIR="${KV_OUT_DIR:-${KV_DIR}}"
543 531
544 KV_LOCAL="${KV_LOCAL}$(get_localversion ${KV_DIR})" 532 # Grab the kernel release from the output directory.
545 if linux_config_src_exists; then 533 # TODO: we MUST detect kernel.release being out of date, and 'return 1' from
546 KV_LOCAL="${KV_LOCAL}$(linux_chkconfig_string LOCALVERSION)" 534 # this function.
547 KV_LOCAL="${KV_LOCAL//\"/}" 535 if [ -s "${KV_OUT_DIR}"/include/config/kernel.release ]; then
536 KV_LOCAL=$(<"${KV_OUT_DIR}"/include/config/kernel.release)
537 elif [ -s "${KV_OUT_DIR}"/.kernelrelease ]; then
538 KV_LOCAL=$(<"${KV_OUT_DIR}"/.kernelrelease)
539 else
540 KV_LOCAL=
541 fi
548 542
549 # For things like git that can append extra stuff: 543 # KV_LOCAL currently contains the full release; discard the first bits.
550 [ -e ${KV_DIR}/scripts/setlocalversion ] && 544 tmplocal=${KV_LOCAL#${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}}
551 linux_chkconfig_builtin LOCALVERSION_AUTO && 545
552 KV_LOCAL="${KV_LOCAL}$(sh ${KV_DIR}/scripts/setlocalversion ${KV_DIR})" 546 # If the updated local version was not changed, the tree is not prepared.
547 # Clear out KV_LOCAL in that case.
548 # TODO: this does not detect a change in the localversion part between
549 # kernel.release and the value that would be generated.
550 if [ "$KV_LOCAL" = "$tmplocal" ]; then
551 KV_LOCAL=
552 else
553 KV_LOCAL=$tmplocal
553 fi 554 fi
554 555
555 # And we should set KV_FULL to the full expanded version 556 # And we should set KV_FULL to the full expanded version
556 KV_FULL="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}${KV_LOCAL}" 557 KV_FULL="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}${KV_LOCAL}"
557 558
566# It gets the version of the current running kernel and the result is the same as get_version() if the 567# It gets the version of the current running kernel and the result is the same as get_version() if the
567# function can find the sources. 568# function can find the sources.
568get_running_version() { 569get_running_version() {
569 KV_FULL=$(uname -r) 570 KV_FULL=$(uname -r)
570 571
572 if [[ -f ${ROOT}/lib/modules/${KV_FULL}/source/Makefile && -f ${ROOT}/lib/modules/${KV_FULL}/build/Makefile ]]; then
573 KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/source)
574 KBUILD_OUTPUT=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/build)
575 unset KV_FULL
576 get_version
577 return $?
571 if [[ -f ${ROOT}/lib/modules/${KV_FULL}/source/Makefile ]]; then 578 elif [[ -f ${ROOT}/lib/modules/${KV_FULL}/source/Makefile ]]; then
572 KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/source) 579 KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/source)
573 unset KV_FULL 580 unset KV_FULL
574 get_version 581 get_version
575 return $? 582 return $?
576 elif [[ -f ${ROOT}/lib/modules/${KV_FULL}/build/Makefile ]]; then 583 elif [[ -f ${ROOT}/lib/modules/${KV_FULL}/build/Makefile ]]; then
577 KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/build) 584 KERNEL_DIR=$(readlink -f ${ROOT}/lib/modules/${KV_FULL}/build)
578 unset KV_FULL 585 unset KV_FULL
579 get_version 586 get_version
580 return $? 587 return $?
581 else 588 else
589 # This handles a variety of weird kernel versions. Make sure to update
590 # tests/linux-info:get_running_version.sh if you want to change this.
591 local kv_full=${KV_FULL//[-+_]*}
582 KV_MAJOR=$(get_version_component_range 1 ${KV_FULL}) 592 KV_MAJOR=$(get_version_component_range 1 ${kv_full})
583 KV_MINOR=$(get_version_component_range 2 ${KV_FULL}) 593 KV_MINOR=$(get_version_component_range 2 ${kv_full})
584 KV_PATCH=$(get_version_component_range 3- ${KV_FULL}) 594 KV_PATCH=$(get_version_component_range 3 ${kv_full})
585 KV_PATCH=${KV_PATCH//-*} 595 KV_EXTRA="${KV_FULL#${KV_MAJOR}.${KV_MINOR}${KV_PATCH:+.${KV_PATCH}}}"
586 [[ -n ${KV_FULL#*-} ]] && [[ -n ${KV_FULL//${KV_FULL#*-}} ]] \ 596 : ${KV_PATCH:=0}
587 && KV_EXTRA="-${KV_FULL#*-}"
588 fi 597 fi
589 return 0 598 return 0
590} 599}
591 600
592# This next function is named with the eclass prefix to avoid conflicts with 601# This next function is named with the eclass prefix to avoid conflicts with
614check_kernel_built() { 623check_kernel_built() {
615 # if we haven't determined the version yet, we need to 624 # if we haven't determined the version yet, we need to
616 require_configured_kernel 625 require_configured_kernel
617 get_version 626 get_version
618 627
628 local versionh_path
629 if kernel_is -ge 3 7; then
630 versionh_path="include/generated/uapi/linux/version.h"
631 else
632 versionh_path="include/linux/version.h"
633 fi
634
619 if [ ! -f "${KV_OUT_DIR}/include/linux/version.h" ] 635 if [ ! -f "${KV_OUT_DIR}/${versionh_path}" ]
620 then 636 then
621 eerror "These sources have not yet been prepared." 637 eerror "These sources have not yet been prepared."
622 eerror "We cannot build against an unprepared tree." 638 eerror "We cannot build against an unprepared tree."
623 eerror "To resolve this, please type the following:" 639 eerror "To resolve this, please type the following:"
624 eerror 640 eerror
637check_modules_supported() { 653check_modules_supported() {
638 # if we haven't determined the version yet, we need too. 654 # if we haven't determined the version yet, we need too.
639 require_configured_kernel 655 require_configured_kernel
640 get_version 656 get_version
641 657
642 if ! linux_chkconfig_builtin "MODULES" 658 if ! linux_chkconfig_builtin "MODULES"; then
643 then
644 eerror "These sources do not support loading external modules." 659 eerror "These sources do not support loading external modules."
645 eerror "to be able to use this module please enable \"Loadable modules support\"" 660 eerror "to be able to use this module please enable \"Loadable modules support\""
646 eerror "in your kernel, recompile and then try merging this module again." 661 eerror "in your kernel, recompile and then try merging this module again."
647 die "No support for external modules in ${KV_FULL} config" 662 die "No support for external modules in ${KV_FULL} config"
648 fi 663 fi
651# @FUNCTION: check_extra_config 666# @FUNCTION: check_extra_config
652# @DESCRIPTION: 667# @DESCRIPTION:
653# It checks the kernel config options specified by CONFIG_CHECK. It dies only when a required config option (i.e. 668# It checks the kernel config options specified by CONFIG_CHECK. It dies only when a required config option (i.e.
654# the prefix ~ is not used) doesn't satisfy the directive. 669# the prefix ~ is not used) doesn't satisfy the directive.
655check_extra_config() { 670check_extra_config() {
656 local config negate die error reworkmodulenames 671 local config negate die error reworkmodulenames
657 local soft_errors_count=0 hard_errors_count=0 config_required=0 672 local soft_errors_count=0 hard_errors_count=0 config_required=0
658 # store the value of the QA check, because otherwise we won't catch usages 673 # store the value of the QA check, because otherwise we won't catch usages
659 # after if check_extra_config is called AND other direct calls are done 674 # after if check_extra_config is called AND other direct calls are done
660 # later. 675 # later.
661 local old_LINUX_CONFIG_EXISTS_DONE="${_LINUX_CONFIG_EXISTS_DONE}" 676 local old_LINUX_CONFIG_EXISTS_DONE="${_LINUX_CONFIG_EXISTS_DONE}"
662 677
663 # if we haven't determined the version yet, we need to 678 # if we haven't determined the version yet, we need to
664 linux-info_get_any_version 679 linux-info_get_any_version
665 680
666 # Determine if we really need a .config. The only time when we don't need 681 # Determine if we really need a .config. The only time when we don't need
667 # one is when all of the CONFIG_CHECK options are prefixed with "~". 682 # one is when all of the CONFIG_CHECK options are prefixed with "~".
668 for config in ${CONFIG_CHECK} 683 for config in ${CONFIG_CHECK}; do
669 do
670 if [[ "${config:0:1}" != "~" ]]; then 684 if [[ "${config:0:1}" != "~" ]]; then
671 config_required=1 685 config_required=1
672 break 686 break
673 fi 687 fi
674 done 688 done

Legend:
Removed from v.1.83  
changed lines
  Added in v.1.96

  ViewVC Help
Powered by ViewVC 1.1.20