/[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.40 Revision 1.48
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.40 2006/02/16 21:46:50 exg Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/linux-info.eclass,v 1.48 2006/09/07 11:37:41 phreak Exp $
4# 4#
5# Description: This eclass is used as a central eclass for accessing kernel 5# Description: This eclass is used as a central eclass for accessing kernel
6# related information for sources already installed. 6# related information for sources already installed.
7# It is vital for linux-mod to function correctly, and is split 7# It is vital for linux-mod to function correctly, and is split
8# out so that any ebuild behaviour "templates" are abstracted out 8# out so that any ebuild behaviour "templates" are abstracted out
117 basefname="$(basename ${2})" 117 basefname="$(basename ${2})"
118 basedname="$(dirname ${2})" 118 basedname="$(dirname ${2})"
119 unset ARCH 119 unset ARCH
120 120
121 cd "${basedname}" 121 cd "${basedname}"
122 echo -e "include ${basefname}\ne:\n\t@echo \$(${1})" | \ 122 echo -e "e:\\n\\t@echo \$(${1})\\ninclude ${basefname}" | \
123 make ${BUILD_FIXES} -s -f - e 2>/dev/null 123 make ${BUILD_FIXES} -s -f - 2>/dev/null
124 cd "${workingdir}" 124 cd "${workingdir}"
125 125
126 ARCH=${myARCH} 126 ARCH=${myARCH}
127 fi 127 fi
128} 128}
290 qeinfo "Found kernel object directory:" 290 qeinfo "Found kernel object directory:"
291 qeinfo " ${KV_OUT_DIR}" 291 qeinfo " ${KV_OUT_DIR}"
292 292
293 KV_LOCAL="$(get_localversion ${KV_OUT_DIR})" 293 KV_LOCAL="$(get_localversion ${KV_OUT_DIR})"
294 fi 294 fi
295 # and if we STILL haven't got it, then we better just set it to KV_DIR 295 # and if we STILL have not got it, then we better just set it to KV_DIR
296 KV_OUT_DIR="${KV_OUT_DIR:-${KV_DIR}}" 296 KV_OUT_DIR="${KV_OUT_DIR:-${KV_DIR}}"
297
298 KV_LOCAL="${KV_LOCAL}$(get_localversion ${KV_DIR})"
299 KV_LOCAL="${KV_LOCAL}$(linux_chkconfig_string LOCALVERSION)"
300 KV_LOCAL="${KV_LOCAL//\"/}"
301
302 # And we should set KV_FULL to the full expanded version
303 KV_FULL="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}${KV_LOCAL}"
304
305 qeinfo "Found sources for kernel version:"
306 qeinfo " ${KV_FULL}"
307 297
308 if [ ! -s "${KV_OUT_DIR}/.config" ] 298 if [ ! -s "${KV_OUT_DIR}/.config" ]
309 then 299 then
310 qeerror "Could not find a usable .config in the kernel source directory." 300 qeerror "Could not find a usable .config in the kernel source directory."
311 qeerror "Please ensure that ${KERNEL_DIR} points to a configured set of Linux sources." 301 qeerror "Please ensure that ${KERNEL_DIR} points to a configured set of Linux sources."
312 qeerror "If you are using KBUILD_OUTPUT, please set the environment var so that" 302 qeerror "If you are using KBUILD_OUTPUT, please set the environment var so that"
313 qeerror "it points to the necessary object directory so that it might find .config." 303 qeerror "it points to the necessary object directory so that it might find .config."
314 return 1 304 return 1
315 fi 305 fi
306
307 KV_LOCAL="${KV_LOCAL}$(get_localversion ${KV_DIR})"
308 KV_LOCAL="${KV_LOCAL}$(linux_chkconfig_string LOCALVERSION)"
309 KV_LOCAL="${KV_LOCAL//\"/}"
310
311 # For things like git that can append extra stuff:
312 [ -e ${KV_DIR}/scripts/setlocalversion ] &&
313 linux_chkconfig_builtin LOCALVERSION_AUTO &&
314 KV_LOCAL="${KV_LOCAL}$(sh ${KV_DIR}/scripts/setlocalversion ${KV_DIR})"
315
316 # And we should set KV_FULL to the full expanded version
317 KV_FULL="${KV_MAJOR}.${KV_MINOR}.${KV_PATCH}${KV_EXTRA}${KV_LOCAL}"
318
319 qeinfo "Found sources for kernel version:"
320 qeinfo " ${KV_FULL}"
316 321
317 return 0 322 return 0
318} 323}
319 324
320get_running_version() { 325get_running_version() {
376 die "No support for external modules in ${KV_FULL} config" 381 die "No support for external modules in ${KV_FULL} config"
377 fi 382 fi
378} 383}
379 384
380check_extra_config() { 385check_extra_config() {
381 local config negate error local_error i n
382 local temp_config die reworkmodulenames 386 local config negate die error reworkmodulenames
387 local soft_errors_count=0 hard_errors_count=0
383 388
384 # if we haven't determined the version yet, we need too. 389 # if we haven't determined the version yet, we need too.
385 get_version; 390 get_version;
386 391
387 einfo "Checking for suitable kernel configuration options:" 392 einfo "Checking for suitable kernel configuration options..."
388 for config in ${CONFIG_CHECK} 393 for config in ${CONFIG_CHECK}
389 do 394 do
390 # if we specify any fatal, ensure we honor them 395 # if we specify any fatal, ensure we honor them
391 die=1 396 die=1
392 error=0 397 error=0
393 negate=0 398 negate=0
394 reworkmodulenames=0 399 reworkmodulenames=0
395 400
401 if [[ -z ${config/\~*} ]]; then
402 die=0
403 config=${config:1}
404 elif [[ -z ${config/\@*} ]]; then
405 die=0
406 reworkmodulenames=1
407 config=${config:1}
408 fi
396 if [[ -z ${config//\!*} ]]; then 409 if [[ -z ${config//\!*} ]]; then
397 negate=1 410 negate=1
398 config=${config:1} 411 config=${config:1}
399 fi 412 fi
400 if [[ -z ${config/\@*} ]]; then
401 die=2
402 reworkmodulenames=1
403 config=${config:1}
404 fi
405 if [[ -z ${config/\~*} ]]; then
406 die=0
407 config=${config:1}
408 fi
409 413
410 if [[ ${negate} == 1 ]]; then 414 if [[ ${negate} == 1 ]]; then
411 linux_chkconfig_present ${config} && error=2 415 linux_chkconfig_present ${config} && error=2
412 elif [[ ${reworkmodulenames} == 1 ]]; then 416 elif [[ ${reworkmodulenames} == 1 ]]; then
413 temp_config="${config//*:}" 417 local temp_config="${config//*:}" i n
414 config="${config//:*}" 418 config="${config//:*}"
415 if linux_chkconfig_present ${config}; then 419 if linux_chkconfig_present ${config}; then
416 for i in ${MODULE_NAMES}; do 420 for i in ${MODULE_NAMES}; do
417 n="${i//${temp_config}}" 421 n="${i//${temp_config}}"
418 [[ -z ${n//\(*} ]] && \ 422 [[ -z ${n//\(*} ]] && \
422 fi 426 fi
423 else 427 else
424 linux_chkconfig_present ${config} || error=1 428 linux_chkconfig_present ${config} || error=1
425 fi 429 fi
426 430
427 if [[ ${die} == 0 ]]; then
428 ebegin "CONFIG_${config}"
429 eend ${error}
430 else
431 if [[ ${error} > 0 ]]; then 431 if [[ ${error} > 0 ]]; then
432 local report_func="eerror" local_error
432 local_error="ERROR_${config}" 433 local_error="ERROR_${config}"
434 local_error="${!local_error}"
435
436 if [[ -z "${local_error}" ]]; then
437 # using old, deprecated format.
438 local_error="${config}_ERROR"
433 local_error="${!local_error}" 439 local_error="${!local_error}"
434 440 fi
435 if [[ -z "${local_error}" ]]; then 441 if [[ ${die} == 0 && -z "${local_error}" ]]; then
436 # using old, deprecated format. 442 #soft errors can be warnings
437 local_error="${config}_ERROR" 443 local_error="WARNING_${config}"
438 local_error="${!local_error}" 444 local_error="${!local_error}"
445 if [[ -n "${local_error}" ]] ; then
446 report_func="ewarn"
439 fi 447 fi
440
441 if [[ -z "${local_error}" ]]; then
442 [[ ${error} == 1 ]] \
443 && local_error="is not set when it should be." \
444 || local_error="should not be set. But it is."
445 local_error="CONFIG_${config}:\t ${local_error}"
446 fi
447 eerror " ${local_error}"
448 fi 448 fi
449
450 if [[ -z "${local_error}" ]]; then
451 [[ ${error} == 1 ]] \
452 && local_error="is not set when it should be." \
453 || local_error="should not be set. But it is."
454 local_error="CONFIG_${config}:\t ${local_error}"
455 fi
456 if [[ ${die} == 0 ]]; then
457 ${report_func} " ${local_error}"
458 soft_errors_count=$[soft_errors_count + 1]
459 else
460 ${report_func} " ${local_error}"
461 hard_errors_count=$[hard_errors_count + 1]
462 fi
449 fi 463 fi
450 done 464 done
451 465
452 if [[ ${error} > 0 ]]; then 466 if [[ ${hard_errors_count} > 0 ]]; then
453 eerror "Please check to make sure these options are set correctly." 467 eerror "Please check to make sure these options are set correctly."
454 eerror "Failure to do so may cause unexpected problems." 468 eerror "Failure to do so may cause unexpected problems."
455 if [[ ${die} == 1 ]]; then
456 eerror "Once you have satisfied these options, please try merging" 469 eerror "Once you have satisfied these options, please try merging"
457 eerror "this package again." 470 eerror "this package again."
458 die "Incorrect kernel configuration options" 471 die "Incorrect kernel configuration options"
459 fi 472 elif [[ ${soft_errors_count} > 0 ]]; then
473 ewarn "Please check to make sure these options are set correctly."
474 ewarn "Failure to do so may cause unexpected problems."
475 else
476 eend 0
460 fi 477 fi
461} 478}
462 479
463check_zlibinflate() { 480check_zlibinflate() {
464 # if we haven't determined the version yet, we need too. 481 # if we haven't determined the version yet, we need too.
533# Default pkg_setup 550# Default pkg_setup
534# Also used when inheriting linux-mod to force a get_version call 551# Also used when inheriting linux-mod to force a get_version call
535 552
536linux-info_pkg_setup() { 553linux-info_pkg_setup() {
537 get_version || die "Unable to calculate Linux Kernel version" 554 get_version || die "Unable to calculate Linux Kernel version"
555
556 if kernel_is 2 4; then
557 if [ "$( gcc-major-version )" -eq "4" ] ; then
558 echo
559 ewarn "Be warned !! >=sys-devel/gcc-4.0.0 isn't supported with"
560 ewarn "linux-2.4 (or modules building against a linux-2.4 kernel)!"
561 echo
562 ewarn "Either switch to another gcc-version (via gcc-config) or use a"
563 ewarn "newer kernel that supports gcc-4."
564 echo
565 ewarn "Also be aware that bugreports about gcc-4 not working"
566 ewarn "with linux-2.4 based ebuilds will be closed as INVALID!"
567 echo
568 epause 10
569 fi
570 fi
571
538 [ -n "${CONFIG_CHECK}" ] && check_extra_config; 572 [ -n "${CONFIG_CHECK}" ] && check_extra_config;
539} 573}

Legend:
Removed from v.1.40  
changed lines
  Added in v.1.48

  ViewVC Help
Powered by ViewVC 1.1.20