/[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.48 Revision 1.49
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.48 2005/07/07 12:36:19 agriffis Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/linux-mod.eclass,v 1.49 2005/07/11 15:08:06 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.
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
16# These are as follows: 16# These are as follows:
17# 17#
18# Env Var Option Default Description 18# Env Var Option Default Description
19# KERNEL_DIR <string> /usr/src/linux The directory containing kernel 19# KERNEL_DIR <string> /usr/src/linux The directory containing kernel
20# the target kernel sources. 20# the target kernel sources.
21# ECONF_PARAMS <string> The parameters to pass to econf. 21# ECONF_PARAMS <string> The parameters to pass to econf.
22# If this is not set, then econf 22# If this is not set, then econf
23# isn't run. 23# isn't run.
24# BUILD_PARAMS <string> The parameters to pass to emake. 24# BUILD_PARAMS <string> The parameters to pass to emake.
25# BUILD_TARGETS <string> clean modules The build targets to pass to 25# BUILD_TARGETS <string> clean modules The build targets to pass to
26# make. 26# make.
27# MODULE_NAMES <string> This is the modules which are 27# MODULE_NAMES <string> This is the modules which are
28# to be built automatically using 28# to be built automatically using
29# the default pkg_compile/install. 29# the default pkg_compile/install.
30# They are explained properly 30# They are explained properly
31# below. It will only make 31# below. It will only make
32# BUILD_TARGETS once in any 32# BUILD_TARGETS once in any
33# directory. 33# directory.
34 34
35# MODULE_NAMES - Detailed Overview 35# MODULE_NAMES - Detailed Overview
36# 36#
37# The structure of each MODULE_NAMES entry is as follows: 37# The structure of each MODULE_NAMES entry is as follows:
38# modulename(libdir:srcdir:objdir) 38# modulename(libdir:srcdir:objdir)
39# for example: 39# for example:
40# MODULE_NAMES="module_pci(pci:${S}/pci:${S}) module_usb(usb:${S}/usb:${S})" 40# MODULE_NAMES="module_pci(pci:${S}/pci:${S}) module_usb(usb:${S}/usb:${S})"
41# 41#
42# what this would do is 42# what this would do is
43# cd ${S}/pci 43# cd ${S}/pci
44# make ${BUILD_PARAMS} ${BUILD_TARGETS} 44# make ${BUILD_PARAMS} ${BUILD_TARGETS}
45# cd ${S} 45# cd ${S}
46# insinto /lib/modules/${KV_FULL}/pci 46# insinto /lib/modules/${KV_FULL}/pci
100 # bail out and assume pcmcia.eclass is working on it. 100 # bail out and assume pcmcia.eclass is working on it.
101 [[ -n ${PCMCIA_SOURCE_DIR} ]] && return 1 101 [[ -n ${PCMCIA_SOURCE_DIR} ]] && return 1
102 102
103 if [[ -f "${1}" ]]; then 103 if [[ -f "${1}" ]]; then
104 PCMCIA_SOURCE_DIR="${WORKDIR}/pcmcia-cs/" 104 PCMCIA_SOURCE_DIR="${WORKDIR}/pcmcia-cs/"
105 105
106 ebegin "Decompressing pcmcia-cs sources" 106 ebegin "Decompressing pcmcia-cs sources"
107 mkdir -p ${PCMCIA_SOURCE_DIR} 107 mkdir -p ${PCMCIA_SOURCE_DIR}
108 tar -xjf ${1} -C ${PCMCIA_SOURCE_DIR} 108 tar -xjf ${1} -C ${PCMCIA_SOURCE_DIR}
109 eend $? 109 eend $?
110 110
140} 140}
141 141
142use_m() { 142use_m() {
143 # if we haven't determined the version yet, we need too. 143 # if we haven't determined the version yet, we need too.
144 get_version; 144 get_version;
145 145
146 # if the kernel version is greater than 2.6.6 then we should use 146 # if the kernel version is greater than 2.6.6 then we should use
147 # M= instead of SUBDIRS= 147 # M= instead of SUBDIRS=
148 [ ${KV_MAJOR} -eq 2 -a ${KV_MINOR} -gt 5 -a ${KV_PATCH} -gt 5 ] && \ 148 [ ${KV_MAJOR} -eq 2 -a ${KV_MINOR} -gt 5 -a ${KV_PATCH} -gt 5 ] && \
149 return 0 || return 1 149 return 0 || return 1
150} 150}
161} 161}
162 162
163update_depmod() { 163update_depmod() {
164 # if we haven't determined the version yet, we need too. 164 # if we haven't determined the version yet, we need too.
165 get_version; 165 get_version;
166 166
167 ebegin "Updating module dependencies for ${KV_FULL}" 167 ebegin "Updating module dependencies for ${KV_FULL}"
168 if [ -r ${KV_OUT_DIR}/System.map ] 168 if [ -r ${KV_OUT_DIR}/System.map ]
169 then 169 then
170 depmod -ae -F ${KV_OUT_DIR}/System.map -b ${ROOT} -r ${KV_FULL} 170 depmod -ae -F ${KV_OUT_DIR}/System.map -b ${ROOT} -r ${KV_FULL}
171 eend $? 171 eend $?
188} 188}
189 189
190move_old_moduledb() { 190move_old_moduledb() {
191 local OLDDIR=${ROOT}/usr/share/module-rebuild/ 191 local OLDDIR=${ROOT}/usr/share/module-rebuild/
192 local NEWDIR=${ROOT}/var/lib/module-rebuild/ 192 local NEWDIR=${ROOT}/var/lib/module-rebuild/
193 193
194 if [[ -f ${OLDDIR}/moduledb ]]; then 194 if [[ -f ${OLDDIR}/moduledb ]]; then
195 [[ ! -d ${NEWDIR} ]] && mkdir -p ${NEWDIR} 195 [[ ! -d ${NEWDIR} ]] && mkdir -p ${NEWDIR}
196 [[ ! -f ${NEWDIR}/moduledb ]] && \ 196 [[ ! -f ${NEWDIR}/moduledb ]] && \
197 mv ${OLDDIR}/moduledb ${NEWDIR}/moduledb 197 mv ${OLDDIR}/moduledb ${NEWDIR}/moduledb
198 rm -f ${OLDDIR}/* 198 rm -f ${OLDDIR}/*
209 touch ${MODULEDB_DIR}/moduledb 209 touch ${MODULEDB_DIR}/moduledb
210 fi 210 fi
211 if [[ -z $(grep ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb) ]]; then 211 if [[ -z $(grep ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb) ]]; then
212 einfo "Adding module to moduledb." 212 einfo "Adding module to moduledb."
213 echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${MODULEDB_DIR}/moduledb 213 echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${MODULEDB_DIR}/moduledb
214 fi 214 fi
215} 215}
216 216
217remove_moduledb() { 217remove_moduledb() {
218 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/ 218 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/
219 move_old_moduledb 219 move_old_moduledb
257 257
258 [[ ${module_aliases} -eq 0 ]] && unset module_aliases 258 [[ ${module_aliases} -eq 0 ]] && unset module_aliases
259 [[ ${module_additions} -eq 0 ]] && unset module_additions 259 [[ ${module_additions} -eq 0 ]] && unset module_additions
260 [[ ${module_examples} -eq 0 ]] && unset module_examples 260 [[ ${module_examples} -eq 0 ]] && unset module_examples
261 261
262 # If we specify we dont want it, then lets exit, otherwise we assume 262 # If we specify we dont want it, then lets exit, otherwise we assume
263 # that if its set, we do want it. 263 # that if its set, we do want it.
264 [[ ${module_enabled} == no ]] && return 0 264 [[ ${module_enabled} == no ]] && return 0
265 265
266 # unset any unwanted variables. 266 # unset any unwanted variables.
267 for t in ${!module_*} 267 for t in ${!module_*}
308 echo >> ${module_config} 308 echo >> ${module_config}
309 echo "# Configurable module parameters" >> ${module_config} 309 echo "# Configurable module parameters" >> ${module_config}
310 echo "# ------------------------------" >> ${module_config} 310 echo "# ------------------------------" >> ${module_config}
311 myIFS="${IFS}" 311 myIFS="${IFS}"
312 IFS="$(echo -en "\n\b")" 312 IFS="$(echo -en "\n\b")"
313 313
314 for t in ${module_modinfo} 314 for t in ${module_modinfo}
315 do 315 do
316 myVAR="$(echo ${t#*:} | grep -e " [0-9][ =]" | sed "s:.*\([01][= ]\).*:\1:")" 316 myVAR="$(echo ${t#*:} | grep -e " [0-9][ =]" | sed "s:.*\([01][= ]\).*:\1:")"
317 if [[ -n ${myVAR} ]] 317 if [[ -n ${myVAR} ]]
318 then 318 then
319 module_opts="${module_opts} ${t%%:*}:${myVAR}" 319 module_opts="${module_opts} ${t%%:*}:${myVAR}"
320 fi 320 fi
321 echo -e "# ${t%%:*}:\t${t#*:}" >> ${module_config} 321 echo -e "# ${t%%:*}:\t${t#*:}" >> ${module_config}
322 done 322 done
323 IFS="${myIFS}" 323 IFS="${myIFS}"
324 echo '' >> ${module_config} 324 echo '' >> ${module_config}
325 fi 325 fi
326 326
327 #----------------------------------------------------------------------- 327 #-----------------------------------------------------------------------
358 echo "$(eval echo \${MODULESD_${currm}_ADDITIONS[$t]})" \ 358 echo "$(eval echo \${MODULESD_${currm}_ADDITIONS[$t]})" \
359 >> ${module_config} 359 >> ${module_config}
360 done 360 done
361 echo '' >> ${module_config} 361 echo '' >> ${module_config}
362 fi 362 fi
363 363
364 #----------------------------------------------------------------------- 364 #-----------------------------------------------------------------------
365 365
366 # then we install it 366 # then we install it
367 insinto /etc/modules.d 367 insinto /etc/modules.d
368 newins ${module_config} ${currm_path//*\/} 368 newins ${module_config} ${currm_path//*\/}
375} 375}
376 376
377display_postinst() { 377display_postinst() {
378 # if we haven't determined the version yet, we need too. 378 # if we haven't determined the version yet, we need too.
379 get_version; 379 get_version;
380 380
381 local modulename moduledir sourcedir moduletemp file i 381 local modulename moduledir sourcedir moduletemp file i
382 382
383 file=${ROOT}/etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR} 383 file=${ROOT}/etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR}
384 file=${file/\/\///} 384 file=${file/\/\///}
385 385
386 for i in ${MODULE_IGNORE} 386 for i in ${MODULE_IGNORE}
387 do 387 do
406} 406}
407 407
408find_module_params() { 408find_module_params() {
409 local matched_offset=0 matched_opts=0 test="${@}" temp_var result 409 local matched_offset=0 matched_opts=0 test="${@}" temp_var result
410 local i=0 y=0 z=0 410 local i=0 y=0 z=0
411 411
412 for((i=0; i<=${#test}; i++)) 412 for((i=0; i<=${#test}; i++))
413 do 413 do
414 case ${test:${i}:1} in 414 case ${test:${i}:1} in
415 \() matched_offset[0]=${i};; 415 \() matched_offset[0]=${i};;
416 \:) matched_opts=$((${matched_opts} + 1)); 416 \:) matched_opts=$((${matched_opts} + 1));
417 matched_offset[${matched_opts}]="${i}";; 417 matched_offset[${matched_opts}]="${i}";;
418 \)) matched_opts=$((${matched_opts} + 1)); 418 \)) matched_opts=$((${matched_opts} + 1));
419 matched_offset[${matched_opts}]="${i}";; 419 matched_offset[${matched_opts}]="${i}";;
420 esac 420 esac
421 done 421 done
422 422
423 for((i=0; i<=${matched_opts}; i++)) 423 for((i=0; i<=${matched_opts}; i++))
424 do 424 do
425 # i = offset were working on 425 # i = offset were working on
426 # y = last offset 426 # y = last offset
427 # z = current offset - last offset 427 # z = current offset - last offset
431 *) y=$((${matched_offset[$((${i} - 1))]} + 1)) 431 *) y=$((${matched_offset[$((${i} - 1))]} + 1))
432 z=$((${matched_offset[${i}]} - ${matched_offset[$((${i} - 1))]})); 432 z=$((${matched_offset[${i}]} - ${matched_offset[$((${i} - 1))]}));
433 z=$((${z} - 1)) 433 z=$((${z} - 1))
434 tempvar=${test:${y}:${z}};; 434 tempvar=${test:${y}:${z}};;
435 esac 435 esac
436 436
437 case ${i} in 437 case ${i} in
438 0) result="${result} modulename:${tempvar}";; 438 0) result="${result} modulename:${tempvar}";;
439 1) result="${result} libdir:${tempvar}";; 439 1) result="${result} libdir:${tempvar}";;
440 2) result="${result} srcdir:${tempvar}";; 440 2) result="${result} srcdir:${tempvar}";;
441 3) result="${result} objdir:${tempvar}";; 441 3) result="${result} objdir:${tempvar}";;
442 esac 442 esac
443 done 443 done
444 444
445 echo ${result} 445 echo ${result}
446} 446}
447 447
448# default ebuild functions 448# default ebuild functions
449# -------------------------------- 449# --------------------------------
458linux-mod_src_compile() { 458linux-mod_src_compile() {
459 local modulename libdir srcdir objdir i n myARCH="${ARCH}" 459 local modulename libdir srcdir objdir i n myARCH="${ARCH}"
460 unset ARCH 460 unset ARCH
461 461
462 BUILD_TARGETS=${BUILD_TARGETS:-clean module} 462 BUILD_TARGETS=${BUILD_TARGETS:-clean module}
463 463
464 for i in ${MODULE_IGNORE} 464 for i in ${MODULE_IGNORE}
465 do 465 do
466 MODULE_NAMES=${MODULE_NAMES//${i}(*} 466 MODULE_NAMES=${MODULE_NAMES//${i}(*}
467 done 467 done
468 468
474 eval ${n/:*}=${n/*:/} 474 eval ${n/:*}=${n/*:/}
475 done 475 done
476 libdir=${libdir:-misc} 476 libdir=${libdir:-misc}
477 srcdir=${srcdir:-${S}} 477 srcdir=${srcdir:-${S}}
478 objdir=${objdir:-${srcdir}} 478 objdir=${objdir:-${srcdir}}
479 479
480 if [ ! -f "${srcdir}/.built" ]; 480 if [ ! -f "${srcdir}/.built" ];
481 then 481 then
482 cd ${srcdir} 482 cd ${srcdir}
483 einfo "Preparing ${modulename} module" 483 einfo "Preparing ${modulename} module"
484 if [[ -n ${ECONF_PARAMS} ]] 484 if [[ -n ${ECONF_PARAMS} ]]
498 ARCH="${myARCH}" 498 ARCH="${myARCH}"
499} 499}
500 500
501linux-mod_src_install() { 501linux-mod_src_install() {
502 local modulename libdir srcdir objdir i n 502 local modulename libdir srcdir objdir i n
503 503
504 for i in ${MODULE_IGNORE} 504 for i in ${MODULE_IGNORE}
505 do 505 do
506 MODULE_NAMES=${MODULE_NAMES//${i}(*} 506 MODULE_NAMES=${MODULE_NAMES//${i}(*}
507 done 507 done
508 508
520 einfo "Installing ${modulename} module" 520 einfo "Installing ${modulename} module"
521 cd ${objdir} 521 cd ${objdir}
522 insinto ${ROOT}lib/modules/${KV_FULL}/${libdir} 522 insinto ${ROOT}lib/modules/${KV_FULL}/${libdir}
523 doins ${modulename}.${KV_OBJ} 523 doins ${modulename}.${KV_OBJ}
524 cd ${OLDPWD} 524 cd ${OLDPWD}
525 525
526 generate_modulesd ${objdir}/${modulename} 526 generate_modulesd ${objdir}/${modulename}
527 done 527 done
528} 528}
529 529
530linux-mod_pkg_postinst() { 530linux-mod_pkg_postinst() {

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

  ViewVC Help
Powered by ViewVC 1.1.20