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

Diff of /eclass/linux-mod.eclass

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

Revision 1.72 Revision 1.82
1# Copyright 1999-2004 Gentoo Foundation 1# Copyright 1999-2004 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-mod.eclass,v 1.72 2007/03/01 06:40:28 vapier Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/linux-mod.eclass,v 1.82 2008/09/30 05:27:42 vapier Exp $
4 4
5# Description: This eclass is used to interface with linux-info in such a way 5# Description: This eclass is used to interface with linux-info in such a way
6# to provide the functionality required and initial functions 6# to provide the functionality required and initial functions
7# required to install external modules against a kernel source 7# required to install external modules against a kernel source
8# tree. 8# tree.
9# 9#
10# Maintainer: John Mylchreest <johnm@gentoo.org>, Stefan Schweizer <genstef@gentoo.org> 10# Author(s): John Mylchreest <johnm@gentoo.org>,
11# Copyright 2004 Gentoo Linux 11# Stefan Schweizer <genstef@gentoo.org>
12# Maintainer: kernel-misc@gentoo.org
12# 13#
13# Please direct your bugs to the current eclass maintainer :) 14# Please direct your bugs to the current eclass maintainer :)
14 15
15# A Couple of env vars are available to effect usage of this eclass 16# A Couple of env vars are available to effect usage of this eclass
16# These are as follows: 17# These are as follows:
54# 55#
55# if the srcdir isnt specified, it assumes ${S} 56# if the srcdir isnt specified, it assumes ${S}
56# if the libdir isnt specified, it assumes misc. 57# if the libdir isnt specified, it assumes misc.
57# if the objdir isnt specified, it assumes srcdir 58# if the objdir isnt specified, it assumes srcdir
58 59
59# There is also support for automatyed modules.d file generation. 60# There is also support for automated modprobe.d/modules.d(2.4) file generation.
60# This can be explicitly enabled by setting any of the following variables. 61# This can be explicitly enabled by setting any of the following variables.
61# 62#
62# 63#
63# MODULESD_${modulename}_ENABLED This enables the modules.d file 64# MODULESD_${modulename}_ENABLED This enables the modules.d file
64# generation even if we dont 65# generation even if we dont
181} 182}
182 183
183update_modules() { 184update_modules() {
184 debug-print-function ${FUNCNAME} $* 185 debug-print-function ${FUNCNAME} $*
185 186
186 if [ -x /sbin/modules-update ] && \ 187 if [ -x /sbin/update-modules ] && \
187 grep -v -e "^#" -e "^$" ${D}/etc/modules.d/* >/dev/null 2>&1; then 188 grep -v -e "^#" -e "^$" ${D}/etc/modules.d/* >/dev/null 2>&1; then
188 ebegin "Updating modules.conf" 189 ebegin "Updating modules.conf"
189 /sbin/modules-update 190 /sbin/update-modules
191 eend $?
192 elif [ -x /sbin/update-modules ] && \
193 grep -v -e "^#" -e "^$" ${D}/etc/modules.d/* >/dev/null 2>&1; then
194 ebegin "Updating modules.conf"
195 /sbin/update-modules
190 eend $? 196 eend $?
191 fi 197 fi
192} 198}
193 199
194move_old_moduledb() { 200move_old_moduledb() {
249 # einfo "Using KV_OBJ=${KV_OBJ}" 255 # einfo "Using KV_OBJ=${KV_OBJ}"
250} 256}
251 257
252get-KERNEL_CC() { 258get-KERNEL_CC() {
253 debug-print-function ${FUNCNAME} $* 259 debug-print-function ${FUNCNAME} $*
260
261 if [[ -n ${KERNEL_CC} ]] ; then
262 echo "${KERNEL_CC}"
263 return
264 fi
254 265
255 local kernel_cc 266 local kernel_cc
256 if [ -n "${KERNEL_ABI}" ]; then 267 if [ -n "${KERNEL_ABI}" ]; then
257 # In future, an arch might want to define CC_$ABI 268 # In future, an arch might want to define CC_$ABI
258 #kernel_cc="$(get_abi_CC)" 269 #kernel_cc="$(get_abi_CC)"
396 fi 407 fi
397 408
398 #----------------------------------------------------------------------- 409 #-----------------------------------------------------------------------
399 410
400 # then we install it 411 # then we install it
412 if kernel_is ge 2 6; then
413 insinto /etc/modprobe.d
414 else
401 insinto /etc/modules.d 415 insinto /etc/modules.d
416 fi
402 newins ${module_config} ${currm_path//*\/} 417 newins ${module_config} ${currm_path//*\/}
403 418
404 # and install any documentation we might have. 419 # and install any documentation we might have.
405 [[ -n ${module_docs} ]] && dodoc ${module_docs} 420 [[ -n ${module_docs} ]] && dodoc ${module_docs}
406 done 421 done
455 470
456linux-mod_pkg_setup() { 471linux-mod_pkg_setup() {
457 debug-print-function ${FUNCNAME} $* 472 debug-print-function ${FUNCNAME} $*
458 473
459 linux-info_pkg_setup; 474 linux-info_pkg_setup;
475 require_configured_kernel
460 check_kernel_built; 476 check_kernel_built;
461 strip_modulenames; 477 strip_modulenames;
462 [[ -n ${MODULE_NAMES} ]] && check_modules_supported 478 [[ -n ${MODULE_NAMES} ]] && check_modules_supported
463 set_kvobj; 479 set_kvobj;
464 # Commented out with permission from johnm until a fixed version for arches 480 # Commented out with permission from johnm until a fixed version for arches
482 local modulename libdir srcdir objdir i n myARCH="${ARCH}" myABI="${ABI}" 498 local modulename libdir srcdir objdir i n myARCH="${ARCH}" myABI="${ABI}"
483 ARCH="$(tc-arch-kernel)" 499 ARCH="$(tc-arch-kernel)"
484 ABI="${KERNEL_ABI}" 500 ABI="${KERNEL_ABI}"
485 501
486 BUILD_TARGETS=${BUILD_TARGETS:-clean module} 502 BUILD_TARGETS=${BUILD_TARGETS:-clean module}
503 strip_modulenames;
504 cd "${S}"
505 for i in ${MODULE_NAMES}
506 do
507 unset libdir srcdir objdir
508 for n in $(find_module_params ${i})
509 do
510 eval ${n/:*}=${n/*:/}
511 done
512 libdir=${libdir:-misc}
513 srcdir=${srcdir:-${S}}
514 objdir=${objdir:-${srcdir}}
515
516 if [ ! -f "${srcdir}/.built" ];
517 then
518 cd ${srcdir}
519 einfo "Preparing ${modulename} module"
520 if [[ -n ${ECONF_PARAMS} ]]
521 then
522 econf ${ECONF_PARAMS} || \
523 die "Unable to run econf ${ECONF_PARAMS}"
524 fi
525
526 # This looks messy, but it is needed to handle multiple variables
527 # being passed in the BUILD_* stuff where the variables also have
528 # spaces that must be preserved. If don't do this, then the stuff
529 # inside the variables gets used as targets for Make, which then
530 # fails.
531 eval "emake HOSTCC=\"$(tc-getBUILD_CC)\" \
532 CC=\"$(get-KERNEL_CC)\" \
533 LDFLAGS=\"$(get_abi_LDFLAGS)\" \
534 ${BUILD_FIXES} \
535 ${BUILD_PARAMS} \
536 ${BUILD_TARGETS} " \
537 || die "Unable to emake HOSTCC="$(tc-getBUILD_CC)" CC="$(get-KERNEL_CC)" LDFLAGS="$(get_abi_LDFLAGS)" ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}"
538 touch ${srcdir}/.built
539 cd ${OLDPWD}
540 fi
541 done
542
543 ARCH="${myARCH}"
544 ABI="${myABI}"
545}
546
547linux-mod_src_install() {
548 debug-print-function ${FUNCNAME} $*
549
550 local modulename libdir srcdir objdir i n
551
487 strip_modulenames; 552 strip_modulenames;
488 for i in ${MODULE_NAMES} 553 for i in ${MODULE_NAMES}
489 do 554 do
490 unset libdir srcdir objdir 555 unset libdir srcdir objdir
491 for n in $(find_module_params ${i}) 556 for n in $(find_module_params ${i})
494 done 559 done
495 libdir=${libdir:-misc} 560 libdir=${libdir:-misc}
496 srcdir=${srcdir:-${S}} 561 srcdir=${srcdir:-${S}}
497 objdir=${objdir:-${srcdir}} 562 objdir=${objdir:-${srcdir}}
498 563
499 if [ ! -f "${srcdir}/.built" ];
500 then
501 cd ${srcdir}
502 einfo "Preparing ${modulename} module"
503 if [[ -n ${ECONF_PARAMS} ]]
504 then
505 econf ${ECONF_PARAMS} || \
506 die "Unable to run econf ${ECONF_PARAMS}"
507 fi
508
509 emake HOSTCC="$(tc-getBUILD_CC)" CC="$(get-KERNEL_CC)" LDFLAGS="$(get_abi_LDFLAGS)" \
510 ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} \
511 || die "Unable to make ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}."
512 touch ${srcdir}/.built
513 cd ${OLDPWD}
514 fi
515 done
516
517 ARCH="${myARCH}"
518 ABI="${myABI}"
519}
520
521linux-mod_src_install() {
522 debug-print-function ${FUNCNAME} $*
523
524 local modulename libdir srcdir objdir i n
525
526 strip_modulenames;
527 for i in ${MODULE_NAMES}
528 do
529 unset libdir srcdir objdir
530 for n in $(find_module_params ${i})
531 do
532 eval ${n/:*}=${n/*:/}
533 done
534 libdir=${libdir:-misc}
535 srcdir=${srcdir:-${S}}
536 objdir=${objdir:-${srcdir}}
537
538 einfo "Installing ${modulename} module" 564 einfo "Installing ${modulename} module"
539 cd ${objdir} || die "${objdir} does not exist" 565 cd ${objdir} || die "${objdir} does not exist"
540 insinto /lib/modules/${KV_FULL}/${libdir} 566 insinto /lib/modules/${KV_FULL}/${libdir}
541 doins ${modulename}.${KV_OBJ} || die "doins ${modulename}.${KV_OBJ} failed" 567 doins ${modulename}.${KV_OBJ} || die "doins ${modulename}.${KV_OBJ} failed"
542 cd ${OLDPWD} 568 cd ${OLDPWD}
546} 572}
547 573
548linux-mod_pkg_preinst() { 574linux-mod_pkg_preinst() {
549 debug-print-function ${FUNCNAME} $* 575 debug-print-function ${FUNCNAME} $*
550 576
551 [ -d ${IMAGE}/lib/modules ] && UPDATE_DEPMOD=true || UPDATE_DEPMOD=false 577 [ -d "${D}lib/modules" ] && UPDATE_DEPMOD=true || UPDATE_DEPMOD=false
552 [ -d ${IMAGE}/etc/modules.d ] && UPDATE_MODULES=true || UPDATE_MODULES=false 578 [ -d "${D}etc/modules.d" ] && UPDATE_MODULES=true || UPDATE_MODULES=false
553 [ -d ${IMAGE}/lib/modules ] && UPDATE_MODULEDB=true || UPDATE_MODULEDB=false 579 [ -d "${D}lib/modules" ] && UPDATE_MODULEDB=true || UPDATE_MODULEDB=false
554} 580}
555 581
556linux-mod_pkg_postinst() { 582linux-mod_pkg_postinst() {
557 debug-print-function ${FUNCNAME} $* 583 debug-print-function ${FUNCNAME} $*
558 584

Legend:
Removed from v.1.72  
changed lines
  Added in v.1.82

  ViewVC Help
Powered by ViewVC 1.1.20