/[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.68 Revision 1.73
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.68 2006/10/16 14:10:46 genstef Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/linux-mod.eclass,v 1.73 2007/04/16 08:13:40 genstef 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.
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
186 if [ -x /sbin/update-modules ] && \
187 grep -v -e "^#" -e "^$" ${D}/etc/modules.d/* >/dev/null 2>&1; then
188 ebegin "Updating modules.conf"
189 /sbin/update-modules
190 eend $?
176 if [ -x /sbin/modules-update ] && \ 191 elif [ -x /sbin/modules-update ] && \
177 grep -v -e "^#" -e "^$" ${D}/etc/modules.d/* >/dev/null 2>&1; then 192 grep -v -e "^#" -e "^$" ${D}/etc/modules.d/* >/dev/null 2>&1; then
178 ebegin "Updating modules.conf" 193 ebegin "Updating modules.conf"
179 /sbin/modules-update 194 /sbin/modules-update
180 eend $? 195 eend $?
181 fi 196 fi
182} 197}
183 198
184move_old_moduledb() { 199move_old_moduledb() {
200 debug-print-function ${FUNCNAME} $*
201
185 local OLDDIR=${ROOT}/usr/share/module-rebuild/ 202 local OLDDIR=${ROOT}/usr/share/module-rebuild/
186 local NEWDIR=${ROOT}/var/lib/module-rebuild/ 203 local NEWDIR=${ROOT}/var/lib/module-rebuild/
187 204
188 if [[ -f ${OLDDIR}/moduledb ]]; then 205 if [[ -f ${OLDDIR}/moduledb ]]; then
189 [[ ! -d ${NEWDIR} ]] && mkdir -p ${NEWDIR} 206 [[ ! -d ${NEWDIR} ]] && mkdir -p ${NEWDIR}
193 rmdir ${OLDDIR} 210 rmdir ${OLDDIR}
194 fi 211 fi
195} 212}
196 213
197update_moduledb() { 214update_moduledb() {
215 debug-print-function ${FUNCNAME} $*
216
198 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/ 217 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/
199 move_old_moduledb 218 move_old_moduledb
200 219
201 if [[ ! -f ${MODULEDB_DIR}/moduledb ]]; then 220 if [[ ! -f ${MODULEDB_DIR}/moduledb ]]; then
202 [[ ! -d ${MODULEDB_DIR} ]] && mkdir -p ${MODULEDB_DIR} 221 [[ ! -d ${MODULEDB_DIR} ]] && mkdir -p ${MODULEDB_DIR}
203 touch ${MODULEDB_DIR}/moduledb 222 touch ${MODULEDB_DIR}/moduledb
204 fi 223 fi
224
205 if [[ -z $(grep ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb) ]]; then 225 if ! grep -qs ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb ; then
206 einfo "Adding module to moduledb." 226 einfo "Adding module to moduledb."
207 echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${MODULEDB_DIR}/moduledb 227 echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${MODULEDB_DIR}/moduledb
208 fi 228 fi
209} 229}
210 230
211remove_moduledb() { 231remove_moduledb() {
232 debug-print-function ${FUNCNAME} $*
233
212 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/ 234 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/
213 move_old_moduledb 235 move_old_moduledb
214 236
215 if [[ -n $(grep ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb) ]]; then 237 if grep -qs ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb ; then
216 einfo "Removing ${CATEGORY}/${PN}-${PVR} from moduledb." 238 einfo "Removing ${CATEGORY}/${PN}-${PVR} from moduledb."
217 sed -ie "/.*${CATEGORY}\/${PN}-${PVR}.*/d" ${MODULEDB_DIR}/moduledb 239 sed -i -e "/.*${CATEGORY}\/${PN}-${PVR}.*/d" ${MODULEDB_DIR}/moduledb
218 fi 240 fi
219} 241}
220 242
221set_kvobj() { 243set_kvobj() {
244 debug-print-function ${FUNCNAME} $*
245
222 if kernel_is 2 6 246 if kernel_is 2 6
223 then 247 then
224 KV_OBJ="ko" 248 KV_OBJ="ko"
225 else 249 else
226 KV_OBJ="o" 250 KV_OBJ="o"
229 # Lets silence it. 253 # Lets silence it.
230 # einfo "Using KV_OBJ=${KV_OBJ}" 254 # einfo "Using KV_OBJ=${KV_OBJ}"
231} 255}
232 256
233get-KERNEL_CC() { 257get-KERNEL_CC() {
258 debug-print-function ${FUNCNAME} $*
259
234 local kernel_cc 260 local kernel_cc
235 if [ -n "${KERNEL_ABI}" ]; then 261 if [ -n "${KERNEL_ABI}" ]; then
236 # In future, an arch might want to define CC_$ABI 262 # In future, an arch might want to define CC_$ABI
237 #kernel_cc="$(get_abi_CC)" 263 #kernel_cc="$(get_abi_CC)"
238 #[ -z "${kernel_cc}" ] && 264 #[ -z "${kernel_cc}" ] &&
239 kernel_cc="$(tc-getCC $(ABI=${KERNEL_ABI} get_abi_CHOST))" 265 kernel_cc="$(tc-getCC $(ABI=${KERNEL_ABI} get_abi_CHOST))"
240 else 266 else
241 kernel_cc=$(tc-getCC) 267 kernel_cc=$(tc-getCC)
242 fi 268 fi
243 echo "${kernel_cc}" 269 echo "${kernel_cc}"
244} 270}
245 271
246generate_modulesd() { 272generate_modulesd() {
273 debug-print-function ${FUNCNAME} $*
274
247 # This function will generate the neccessary modules.d file from the 275 # This function will generate the neccessary modules.d file from the
248 # information contained in the modules exported parms 276 # information contained in the modules exported parms
249 277
250 local currm_path currm currm_t t myIFS myVAR 278 local currm_path currm currm_t t myIFS myVAR
251 local module_docs module_enabled module_aliases \ 279 local module_docs module_enabled module_aliases \
384 eend 0 412 eend 0
385 return 0 413 return 0
386} 414}
387 415
388find_module_params() { 416find_module_params() {
417 debug-print-function ${FUNCNAME} $*
418
389 local matched_offset=0 matched_opts=0 test="${@}" temp_var result 419 local matched_offset=0 matched_opts=0 test="${@}" temp_var result
390 local i=0 y=0 z=0 420 local i=0 y=0 z=0
391 421
392 for((i=0; i<=${#test}; i++)) 422 for((i=0; i<=${#test}; i++))
393 do 423 do
427 457
428# default ebuild functions 458# default ebuild functions
429# -------------------------------- 459# --------------------------------
430 460
431linux-mod_pkg_setup() { 461linux-mod_pkg_setup() {
462 debug-print-function ${FUNCNAME} $*
463
432 linux-info_pkg_setup; 464 linux-info_pkg_setup;
433 check_kernel_built; 465 check_kernel_built;
434 strip_modulenames; 466 strip_modulenames;
435 [[ -n ${MODULE_NAMES} ]] && check_modules_supported 467 [[ -n ${MODULE_NAMES} ]] && check_modules_supported
436 set_kvobj; 468 set_kvobj;
439 # introduced - Jason Wever <weeve@gentoo.org>, 23 Oct 2005 471 # introduced - Jason Wever <weeve@gentoo.org>, 23 Oct 2005
440 #check_vermagic; 472 #check_vermagic;
441} 473}
442 474
443strip_modulenames() { 475strip_modulenames() {
476 debug-print-function ${FUNCNAME} $*
477
444 local i 478 local i
445 for i in ${MODULE_IGNORE}; do 479 for i in ${MODULE_IGNORE}; do
446 MODULE_NAMES=${MODULE_NAMES//${i}(*} 480 MODULE_NAMES=${MODULE_NAMES//${i}(*}
447 done 481 done
448} 482}
449 483
450linux-mod_src_compile() { 484linux-mod_src_compile() {
485 debug-print-function ${FUNCNAME} $*
486
451 local modulename libdir srcdir objdir i n myARCH="${ARCH}" myABI="${ABI}" 487 local modulename libdir srcdir objdir i n myARCH="${ARCH}" myABI="${ABI}"
452 ARCH="$(tc-arch-kernel)" 488 ARCH="$(tc-arch-kernel)"
453 ABI="${KERNEL_ABI}" 489 ABI="${KERNEL_ABI}"
454 CC_HOSTCC=$(tc-getBUILD_CC)
455 CC_CC=$(get-KERNEL_CC)
456 490
457 BUILD_TARGETS=${BUILD_TARGETS:-clean module} 491 BUILD_TARGETS=${BUILD_TARGETS:-clean module}
458 strip_modulenames; 492 strip_modulenames;
459 for i in ${MODULE_NAMES} 493 for i in ${MODULE_NAMES}
460 do 494 do
475 then 509 then
476 econf ${ECONF_PARAMS} || \ 510 econf ${ECONF_PARAMS} || \
477 die "Unable to run econf ${ECONF_PARAMS}" 511 die "Unable to run econf ${ECONF_PARAMS}"
478 fi 512 fi
479 513
480 emake HOSTCC=${CC_HOSTCC} CC=${CC_CC} LDFLAGS="$(get_abi_LDFLAGS)" \ 514 emake HOSTCC="$(tc-getBUILD_CC)" CC="$(get-KERNEL_CC)" LDFLAGS="$(get_abi_LDFLAGS)" \
481 ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} \ 515 ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} \
482 || die "Unable to make ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}." 516 || die "Unable to make ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}."
483 touch ${srcdir}/.built 517 touch ${srcdir}/.built
484 cd ${OLDPWD} 518 cd ${OLDPWD}
485 fi 519 fi
488 ARCH="${myARCH}" 522 ARCH="${myARCH}"
489 ABI="${myABI}" 523 ABI="${myABI}"
490} 524}
491 525
492linux-mod_src_install() { 526linux-mod_src_install() {
527 debug-print-function ${FUNCNAME} $*
528
493 local modulename libdir srcdir objdir i n 529 local modulename libdir srcdir objdir i n
494 530
495 strip_modulenames; 531 strip_modulenames;
496 for i in ${MODULE_NAMES} 532 for i in ${MODULE_NAMES}
497 do 533 do
513 generate_modulesd ${objdir}/${modulename} 549 generate_modulesd ${objdir}/${modulename}
514 done 550 done
515} 551}
516 552
517linux-mod_pkg_preinst() { 553linux-mod_pkg_preinst() {
554 debug-print-function ${FUNCNAME} $*
555
518 [ -d ${IMAGE}/lib/modules ] && UPDATE_DEPMOD=true || UPDATE_DEPMOD=false 556 [ -d ${IMAGE}/lib/modules ] && UPDATE_DEPMOD=true || UPDATE_DEPMOD=false
519 [ -d ${IMAGE}/etc/modules.d ] && UPDATE_MODULES=true || UPDATE_MODULES=false 557 [ -d ${IMAGE}/etc/modules.d ] && UPDATE_MODULES=true || UPDATE_MODULES=false
520 [ -d ${IMAGE}/lib/modules ] && UPDATE_MODULEDB=true || UPDATE_MODULEDB=false 558 [ -d ${IMAGE}/lib/modules ] && UPDATE_MODULEDB=true || UPDATE_MODULEDB=false
521} 559}
522 560
523linux-mod_pkg_postinst() { 561linux-mod_pkg_postinst() {
562 debug-print-function ${FUNCNAME} $*
563
524 ${UPDATE_DEPMOD} && update_depmod; 564 ${UPDATE_DEPMOD} && update_depmod;
525 ${UPDATE_MODULES} && update_modules; 565 ${UPDATE_MODULES} && update_modules;
526 ${UPDATE_MODULEDB} && update_moduledb; 566 ${UPDATE_MODULEDB} && update_moduledb;
527} 567}
528 568
529linux-mod_pkg_postrm() { 569linux-mod_pkg_postrm() {
570 debug-print-function ${FUNCNAME} $*
530 remove_moduledb; 571 remove_moduledb;
531} 572}

Legend:
Removed from v.1.68  
changed lines
  Added in v.1.73

  ViewVC Help
Powered by ViewVC 1.1.20