/[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.67 Revision 1.70
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.67 2006/07/24 20:18:09 genstef Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/linux-mod.eclass,v 1.70 2007/01/01 22:27:01 swegener 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> 10# Maintainer: John Mylchreest <johnm@gentoo.org>, Stefan Schweizer <genstef@gentoo.org>
11# Copyright 2004 Gentoo Linux 11# Copyright 2004 Gentoo Linux
12# 12#
13# Please direct your bugs to the current eclass maintainer :) 13# Please direct your bugs to the current eclass maintainer :)
14 14
15# A Couple of env vars are available to effect usage of this eclass 15# A Couple of env vars are available to effect usage of this eclass
95 95
96# eclass utilities 96# eclass utilities
97# ---------------------------------- 97# ----------------------------------
98 98
99check_vermagic() { 99check_vermagic() {
100 debug-print-function ${FUNCNAME} $*
101
100 local curr_gcc_ver=$(gcc -dumpversion) 102 local curr_gcc_ver=$(gcc -dumpversion)
101 local tmpfile old_chost old_gcc_ver result=0 103 local tmpfile old_chost old_gcc_ver result=0
102 104
103 tmpfile=`find ${KV_DIR}/ -iname "*.o.cmd" -exec grep usr/lib/gcc {} \; -quit` 105 tmpfile=`find ${KV_DIR}/ -iname "*.o.cmd" -exec grep usr/lib/gcc {} \; -quit`
104 tmpfile=${tmpfile//*usr/lib} 106 tmpfile=${tmpfile//*usr/lib}
132 die "GCC Version Mismatch." 134 die "GCC Version Mismatch."
133 fi 135 fi
134} 136}
135 137
136use_m() { 138use_m() {
139 debug-print-function ${FUNCNAME} $*
140
137 # if we haven't determined the version yet, we need too. 141 # if we haven't determined the version yet, we need too.
138 get_version; 142 get_version;
139 143
140 # if the kernel version is greater than 2.6.6 then we should use 144 # if the kernel version is greater than 2.6.6 then we should use
141 # M= instead of SUBDIRS= 145 # M= instead of SUBDIRS=
142 [ ${KV_MAJOR} -eq 2 -a ${KV_MINOR} -gt 5 -a ${KV_PATCH} -gt 5 ] && \ 146 [ ${KV_MAJOR} -eq 2 -a ${KV_MINOR} -gt 5 -a ${KV_PATCH} -gt 5 ] && \
143 return 0 || return 1 147 return 0 || return 1
144} 148}
145 149
146convert_to_m() { 150convert_to_m() {
151 debug-print-function ${FUNCNAME} $*
152
147 if use_m 153 if use_m
148 then 154 then
149 [ ! -f "${1}" ] && \ 155 [ ! -f "${1}" ] && \
150 die "convert_to_m() requires a filename as an argument" 156 die "convert_to_m() requires a filename as an argument"
151 ebegin "Converting ${1/${WORKDIR}\//} to use M= instead of SUBDIRS=" 157 ebegin "Converting ${1/${WORKDIR}\//} to use M= instead of SUBDIRS="
153 eend $? 159 eend $?
154 fi 160 fi
155} 161}
156 162
157update_depmod() { 163update_depmod() {
164 debug-print-function ${FUNCNAME} $*
165
158 # if we haven't determined the version yet, we need too. 166 # if we haven't determined the version yet, we need too.
159 get_version; 167 get_version;
160 168
161 ebegin "Updating module dependencies for ${KV_FULL}" 169 ebegin "Updating module dependencies for ${KV_FULL}"
162 if [ -r ${KV_OUT_DIR}/System.map ] 170 if [ -r ${KV_OUT_DIR}/System.map ]
171 ewarn 179 ewarn
172 fi 180 fi
173} 181}
174 182
175update_modules() { 183update_modules() {
184 debug-print-function ${FUNCNAME} $*
185
176 if [ -x /sbin/modules-update ] && \ 186 if [ -x /sbin/modules-update ] && \
177 grep -v -e "^#" -e "^$" ${D}/etc/modules.d/* >/dev/null 2>&1; then 187 grep -v -e "^#" -e "^$" ${D}/etc/modules.d/* >/dev/null 2>&1; then
178 ebegin "Updating modules.conf" 188 ebegin "Updating modules.conf"
179 /sbin/modules-update 189 /sbin/modules-update
180 eend $? 190 eend $?
181 fi 191 fi
182} 192}
183 193
184move_old_moduledb() { 194move_old_moduledb() {
195 debug-print-function ${FUNCNAME} $*
196
185 local OLDDIR=${ROOT}/usr/share/module-rebuild/ 197 local OLDDIR=${ROOT}/usr/share/module-rebuild/
186 local NEWDIR=${ROOT}/var/lib/module-rebuild/ 198 local NEWDIR=${ROOT}/var/lib/module-rebuild/
187 199
188 if [[ -f ${OLDDIR}/moduledb ]]; then 200 if [[ -f ${OLDDIR}/moduledb ]]; then
189 [[ ! -d ${NEWDIR} ]] && mkdir -p ${NEWDIR} 201 [[ ! -d ${NEWDIR} ]] && mkdir -p ${NEWDIR}
193 rmdir ${OLDDIR} 205 rmdir ${OLDDIR}
194 fi 206 fi
195} 207}
196 208
197update_moduledb() { 209update_moduledb() {
210 debug-print-function ${FUNCNAME} $*
211
198 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/ 212 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/
199 move_old_moduledb 213 move_old_moduledb
200 214
201 if [[ ! -f ${MODULEDB_DIR}/moduledb ]]; then 215 if [[ ! -f ${MODULEDB_DIR}/moduledb ]]; then
202 [[ ! -d ${MODULEDB_DIR} ]] && mkdir -p ${MODULEDB_DIR} 216 [[ ! -d ${MODULEDB_DIR} ]] && mkdir -p ${MODULEDB_DIR}
207 echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${MODULEDB_DIR}/moduledb 221 echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${MODULEDB_DIR}/moduledb
208 fi 222 fi
209} 223}
210 224
211remove_moduledb() { 225remove_moduledb() {
226 debug-print-function ${FUNCNAME} $*
227
212 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/ 228 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/
213 move_old_moduledb 229 move_old_moduledb
214 230
215 if [[ -n $(grep ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb) ]]; then 231 if [[ -n $(grep ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb) ]]; then
216 einfo "Removing ${CATEGORY}/${PN}-${PVR} from moduledb." 232 einfo "Removing ${CATEGORY}/${PN}-${PVR} from moduledb."
217 sed -ie "/.*${CATEGORY}\/${PN}-${PVR}.*/d" ${MODULEDB_DIR}/moduledb 233 sed -ie "/.*${CATEGORY}\/${PN}-${PVR}.*/d" ${MODULEDB_DIR}/moduledb
218 fi 234 fi
219} 235}
220 236
221set_kvobj() { 237set_kvobj() {
238 debug-print-function ${FUNCNAME} $*
239
222 if kernel_is 2 6 240 if kernel_is 2 6
223 then 241 then
224 KV_OBJ="ko" 242 KV_OBJ="ko"
225 else 243 else
226 KV_OBJ="o" 244 KV_OBJ="o"
228 # Do we really need to know this? 246 # Do we really need to know this?
229 # Lets silence it. 247 # Lets silence it.
230 # einfo "Using KV_OBJ=${KV_OBJ}" 248 # einfo "Using KV_OBJ=${KV_OBJ}"
231} 249}
232 250
251get-KERNEL_CC() {
252 debug-print-function ${FUNCNAME} $*
253
254 local kernel_cc
255 if [ -n "${KERNEL_ABI}" ]; then
256 # In future, an arch might want to define CC_$ABI
257 #kernel_cc="$(get_abi_CC)"
258 #[ -z "${kernel_cc}" ] &&
259 kernel_cc="$(tc-getCC $(ABI=${KERNEL_ABI} get_abi_CHOST))"
260 else
261 kernel_cc=$(tc-getCC)
262 fi
263 echo "${kernel_cc}"
264}
265
233generate_modulesd() { 266generate_modulesd() {
267 debug-print-function ${FUNCNAME} $*
268
234 # This function will generate the neccessary modules.d file from the 269 # This function will generate the neccessary modules.d file from the
235 # information contained in the modules exported parms 270 # information contained in the modules exported parms
236 271
237 local currm_path currm currm_t t myIFS myVAR 272 local currm_path currm currm_t t myIFS myVAR
238 local module_docs module_enabled module_aliases \ 273 local module_docs module_enabled module_aliases \
371 eend 0 406 eend 0
372 return 0 407 return 0
373} 408}
374 409
375find_module_params() { 410find_module_params() {
411 debug-print-function ${FUNCNAME} $*
412
376 local matched_offset=0 matched_opts=0 test="${@}" temp_var result 413 local matched_offset=0 matched_opts=0 test="${@}" temp_var result
377 local i=0 y=0 z=0 414 local i=0 y=0 z=0
378 415
379 for((i=0; i<=${#test}; i++)) 416 for((i=0; i<=${#test}; i++))
380 do 417 do
414 451
415# default ebuild functions 452# default ebuild functions
416# -------------------------------- 453# --------------------------------
417 454
418linux-mod_pkg_setup() { 455linux-mod_pkg_setup() {
456 debug-print-function ${FUNCNAME} $*
457
419 linux-info_pkg_setup; 458 linux-info_pkg_setup;
420 check_kernel_built; 459 check_kernel_built;
421 strip_modulenames; 460 strip_modulenames;
422 [[ -n ${MODULE_NAMES} ]] && check_modules_supported 461 [[ -n ${MODULE_NAMES} ]] && check_modules_supported
423 set_kvobj; 462 set_kvobj;
426 # introduced - Jason Wever <weeve@gentoo.org>, 23 Oct 2005 465 # introduced - Jason Wever <weeve@gentoo.org>, 23 Oct 2005
427 #check_vermagic; 466 #check_vermagic;
428} 467}
429 468
430strip_modulenames() { 469strip_modulenames() {
470 debug-print-function ${FUNCNAME} $*
471
431 local i 472 local i
432 for i in ${MODULE_IGNORE}; do 473 for i in ${MODULE_IGNORE}; do
433 MODULE_NAMES=${MODULE_NAMES//${i}(*} 474 MODULE_NAMES=${MODULE_NAMES//${i}(*}
434 done 475 done
435} 476}
436 477
437linux-mod_src_compile() { 478linux-mod_src_compile() {
479 debug-print-function ${FUNCNAME} $*
480
438 local modulename libdir srcdir objdir i n myARCH="${ARCH}" myABI="${ABI}" 481 local modulename libdir srcdir objdir i n myARCH="${ARCH}" myABI="${ABI}"
439 ARCH="$(tc-arch-kernel)" 482 ARCH="$(tc-arch-kernel)"
440 ABI="${KERNEL_ABI}" 483 ABI="${KERNEL_ABI}"
441 CC_HOSTCC=$(tc-getBUILD_CC)
442 CC_CC=$(tc-getCC)
443 484
444 BUILD_TARGETS=${BUILD_TARGETS:-clean module} 485 BUILD_TARGETS=${BUILD_TARGETS:-clean module}
445 strip_modulenames; 486 strip_modulenames;
446 for i in ${MODULE_NAMES} 487 for i in ${MODULE_NAMES}
447 do 488 do
462 then 503 then
463 econf ${ECONF_PARAMS} || \ 504 econf ${ECONF_PARAMS} || \
464 die "Unable to run econf ${ECONF_PARAMS}" 505 die "Unable to run econf ${ECONF_PARAMS}"
465 fi 506 fi
466 507
467 emake HOSTCC=${CC_HOSTCC} CC=${CC_CC}\ 508 emake HOSTCC="$(tc-getBUILD_CC)" CC="$(get-KERNEL_CC)" LDFLAGS="$(get_abi_LDFLAGS)" \
468 ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} \ 509 ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} \
469 || die "Unable to make ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}." 510 || die "Unable to make ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}."
470 touch ${srcdir}/.built 511 touch ${srcdir}/.built
471 cd ${OLDPWD} 512 cd ${OLDPWD}
472 fi 513 fi
475 ARCH="${myARCH}" 516 ARCH="${myARCH}"
476 ABI="${myABI}" 517 ABI="${myABI}"
477} 518}
478 519
479linux-mod_src_install() { 520linux-mod_src_install() {
521 debug-print-function ${FUNCNAME} $*
522
480 local modulename libdir srcdir objdir i n 523 local modulename libdir srcdir objdir i n
481 524
482 strip_modulenames; 525 strip_modulenames;
483 for i in ${MODULE_NAMES} 526 for i in ${MODULE_NAMES}
484 do 527 do
500 generate_modulesd ${objdir}/${modulename} 543 generate_modulesd ${objdir}/${modulename}
501 done 544 done
502} 545}
503 546
504linux-mod_pkg_preinst() { 547linux-mod_pkg_preinst() {
548 debug-print-function ${FUNCNAME} $*
549
505 [ -d ${IMAGE}/lib/modules ] && UPDATE_DEPMOD=true || UPDATE_DEPMOD=false 550 [ -d ${IMAGE}/lib/modules ] && UPDATE_DEPMOD=true || UPDATE_DEPMOD=false
506 [ -d ${IMAGE}/etc/modules.d ] && UPDATE_MODULES=true || UPDATE_MODULES=false 551 [ -d ${IMAGE}/etc/modules.d ] && UPDATE_MODULES=true || UPDATE_MODULES=false
507 [ -d ${IMAGE}/lib/modules ] && UPDATE_MODULEDB=true || UPDATE_MODULEDB=false 552 [ -d ${IMAGE}/lib/modules ] && UPDATE_MODULEDB=true || UPDATE_MODULEDB=false
508} 553}
509 554
510linux-mod_pkg_postinst() { 555linux-mod_pkg_postinst() {
556 debug-print-function ${FUNCNAME} $*
557
511 ${UPDATE_DEPMOD} && update_depmod; 558 ${UPDATE_DEPMOD} && update_depmod;
512 ${UPDATE_MODULES} && update_modules; 559 ${UPDATE_MODULES} && update_modules;
513 ${UPDATE_MODULEDB} && update_moduledb; 560 ${UPDATE_MODULEDB} && update_moduledb;
514} 561}
515 562
516linux-mod_pkg_postrm() { 563linux-mod_pkg_postrm() {
564 debug-print-function ${FUNCNAME} $*
517 remove_moduledb; 565 remove_moduledb;
518} 566}

Legend:
Removed from v.1.67  
changed lines
  Added in v.1.70

  ViewVC Help
Powered by ViewVC 1.1.20