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

Contents of /eclass/linux-mod.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.72 - (hide annotations) (download)
Thu Mar 1 06:40:28 2007 UTC (7 years, 6 months ago) by vapier
Branch: MAIN
Changes since 1.71: +4 -3 lines
tweak grepping of moduledb to avoid errors when moduledb hasnt actually been installed

1 johnm 1.1 # Copyright 1999-2004 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 vapier 1.72 # $Header: /var/cvsroot/gentoo-x86/eclass/linux-mod.eclass,v 1.71 2007/02/05 14:51:07 dsd Exp $
4 johnm 1.1
5 johnm 1.10 # Description: This eclass is used to interface with linux-info in such a way
6     # to provide the functionality required and initial functions
7     # required to install external modules against a kernel source
8     # tree.
9     #
10 genstef 1.68 # Maintainer: John Mylchreest <johnm@gentoo.org>, Stefan Schweizer <genstef@gentoo.org>
11 johnm 1.10 # Copyright 2004 Gentoo Linux
12     #
13     # Please direct your bugs to the current eclass maintainer :)
14    
15     # A Couple of env vars are available to effect usage of this eclass
16     # These are as follows:
17 swegener 1.49 #
18 johnm 1.26 # Env Var Option Default Description
19     # KERNEL_DIR <string> /usr/src/linux The directory containing kernel
20     # the target kernel sources.
21     # ECONF_PARAMS <string> The parameters to pass to econf.
22     # If this is not set, then econf
23     # isn't run.
24     # BUILD_PARAMS <string> The parameters to pass to emake.
25     # BUILD_TARGETS <string> clean modules The build targets to pass to
26     # make.
27     # MODULE_NAMES <string> This is the modules which are
28 swegener 1.49 # to be built automatically using
29     # the default pkg_compile/install.
30     # They are explained properly
31     # below. It will only make
32 johnm 1.26 # BUILD_TARGETS once in any
33     # directory.
34 johnm 1.10
35     # MODULE_NAMES - Detailed Overview
36 swegener 1.49 #
37 johnm 1.10 # The structure of each MODULE_NAMES entry is as follows:
38 johnm 1.26 # modulename(libdir:srcdir:objdir)
39 johnm 1.10 # for example:
40 johnm 1.26 # MODULE_NAMES="module_pci(pci:${S}/pci:${S}) module_usb(usb:${S}/usb:${S})"
41 swegener 1.49 #
42 johnm 1.10 # what this would do is
43     # cd ${S}/pci
44     # make ${BUILD_PARAMS} ${BUILD_TARGETS}
45 johnm 1.26 # cd ${S}
46 johnm 1.10 # insinto /lib/modules/${KV_FULL}/pci
47     # doins module_pci.${KV_OBJ}
48     #
49     # cd ${S}/usb
50     # make ${BUILD_PARAMS} ${BUILD_TARGETS}
51 johnm 1.26 # cd ${S}
52 johnm 1.10 # insinto /lib/modules/${KV_FULL}/usb
53     # doins module_usb.${KV_OBJ}
54     #
55 johnm 1.26 # if the srcdir isnt specified, it assumes ${S}
56     # if the libdir isnt specified, it assumes misc.
57     # if the objdir isnt specified, it assumes srcdir
58    
59     # There is also support for automatyed modules.d file generation.
60     # This can be explicitly enabled by setting any of the following variables.
61     #
62     #
63     # MODULESD_${modulename}_ENABLED This enables the modules.d file
64     # generation even if we dont
65     # specify any additional info.
66     # MODULESD_${modulename}_EXAMPLES This is a bash array containing
67     # a list of examples which should
68     # be used. If you want us to try and
69     # take a guess. Set this to "guess"
70     # MODULESD_${modulename}_ALIASES This is a bash array containing
71     # a list of associated aliases.
72     # MODULESD_${modulename}_ADDITIONS This is a bash array containing
73     # A list of additional things to
74     # add to the bottom of the file.
75     # This can be absolutely anything.
76     # Each entry is a new line.
77     # MODULES_${modulename}_DOCS This is a string list which contains
78     # the full path to any associated
79     # documents for $modulename
80    
81 betelgeuse 1.61 # The order of these is important as both of linux-info and eutils contain
82     # set_arch_to_kernel and set_arch_to_portage functions and the ones in eutils
83     # are deprecated in favor of the ones in linux-info.
84     # See http://bugs.gentoo.org/show_bug.cgi?id=127506
85 johnm 1.1
86 blubb 1.62 inherit eutils linux-info multilib
87 genstef 1.65 EXPORT_FUNCTIONS pkg_setup pkg_preinst pkg_postinst src_install src_compile pkg_postrm
88 johnm 1.1
89 genstef 1.67 IUSE="kernel_linux"
90 johnm 1.26 SLOT="0"
91 johnm 1.1 DESCRIPTION="Based on the $ECLASS eclass"
92 genstef 1.67 RDEPEND="kernel_linux? ( virtual/modutils )"
93 genstef 1.65 DEPEND="${RDEPEND}
94 vapier 1.66 sys-apps/sed"
95 johnm 1.26
96 johnm 1.1 # eclass utilities
97     # ----------------------------------
98    
99 johnm 1.53 check_vermagic() {
100 genstef 1.69 debug-print-function ${FUNCNAME} $*
101    
102 johnm 1.53 local curr_gcc_ver=$(gcc -dumpversion)
103     local tmpfile old_chost old_gcc_ver result=0
104    
105 johnm 1.54 tmpfile=`find ${KV_DIR}/ -iname "*.o.cmd" -exec grep usr/lib/gcc {} \; -quit`
106 johnm 1.53 tmpfile=${tmpfile//*usr/lib}
107     tmpfile=${tmpfile//\/include*}
108     old_chost=${tmpfile//*gcc\/}
109     old_chost=${old_chost//\/*}
110     old_gcc_ver=${tmpfile//*\/}
111    
112 johnm 1.54 if [[ -z ${old_gcc_ver} || -z ${old_chost} ]]; then
113     ewarn ""
114     ewarn "Unable to detect what version of GCC was used to compile"
115     ewarn "the kernel. Build will continue, but you may experience problems."
116     elif [[ ${curr_gcc_ver} != ${old_gcc_ver} ]]; then
117 johnm 1.53 ewarn ""
118     ewarn "The version of GCC you are using (${curr_gcc_ver}) does"
119     ewarn "not match the version of GCC used to compile the"
120     ewarn "kernel (${old_gcc_ver})."
121     result=1
122     elif [[ ${CHOST} != ${old_chost} ]]; then
123     ewarn ""
124     ewarn "The current CHOST (${CHOST}) does not match the chost"
125     ewarn "used when compiling the kernel (${old_chost})."
126     result=1
127     fi
128    
129     if [[ ${result} -gt 0 ]]; then
130     ewarn ""
131     ewarn "Build will not continue, because you will experience problems."
132     ewarn "To fix this either change the version of GCC you wish to use"
133     ewarn "to match the kernel, or recompile the kernel first."
134     die "GCC Version Mismatch."
135     fi
136     }
137    
138 johnm 1.1 use_m() {
139 genstef 1.69 debug-print-function ${FUNCNAME} $*
140    
141 johnm 1.1 # if we haven't determined the version yet, we need too.
142     get_version;
143 swegener 1.49
144 johnm 1.1 # if the kernel version is greater than 2.6.6 then we should use
145 johnm 1.8 # M= instead of SUBDIRS=
146 johnm 1.1 [ ${KV_MAJOR} -eq 2 -a ${KV_MINOR} -gt 5 -a ${KV_PATCH} -gt 5 ] && \
147     return 0 || return 1
148     }
149    
150     convert_to_m() {
151 genstef 1.69 debug-print-function ${FUNCNAME} $*
152    
153 johnm 1.1 if use_m
154     then
155 johnm 1.32 [ ! -f "${1}" ] && \
156     die "convert_to_m() requires a filename as an argument"
157 johnm 1.8 ebegin "Converting ${1/${WORKDIR}\//} to use M= instead of SUBDIRS="
158 johnm 1.1 sed -i 's:SUBDIRS=:M=:g' ${1}
159     eend $?
160     fi
161     }
162    
163     update_depmod() {
164 genstef 1.69 debug-print-function ${FUNCNAME} $*
165    
166 johnm 1.1 # if we haven't determined the version yet, we need too.
167     get_version;
168 swegener 1.49
169 johnm 1.1 ebegin "Updating module dependencies for ${KV_FULL}"
170 johnm 1.5 if [ -r ${KV_OUT_DIR}/System.map ]
171 johnm 1.1 then
172 johnm 1.5 depmod -ae -F ${KV_OUT_DIR}/System.map -b ${ROOT} -r ${KV_FULL}
173 johnm 1.18 eend $?
174 johnm 1.1 else
175     ewarn
176 johnm 1.5 ewarn "${KV_OUT_DIR}/System.map not found."
177 johnm 1.1 ewarn "You must manually update the kernel module dependencies using depmod."
178 johnm 1.18 eend 1
179 johnm 1.1 ewarn
180     fi
181     }
182    
183 johnm 1.3 update_modules() {
184 genstef 1.69 debug-print-function ${FUNCNAME} $*
185    
186 kingtaco 1.31 if [ -x /sbin/modules-update ] && \
187     grep -v -e "^#" -e "^$" ${D}/etc/modules.d/* >/dev/null 2>&1; then
188 johnm 1.3 ebegin "Updating modules.conf"
189     /sbin/modules-update
190     eend $?
191     fi
192     }
193    
194 johnm 1.41 move_old_moduledb() {
195 genstef 1.69 debug-print-function ${FUNCNAME} $*
196    
197 johnm 1.41 local OLDDIR=${ROOT}/usr/share/module-rebuild/
198     local NEWDIR=${ROOT}/var/lib/module-rebuild/
199 swegener 1.49
200 johnm 1.41 if [[ -f ${OLDDIR}/moduledb ]]; then
201     [[ ! -d ${NEWDIR} ]] && mkdir -p ${NEWDIR}
202 johnm 1.42 [[ ! -f ${NEWDIR}/moduledb ]] && \
203     mv ${OLDDIR}/moduledb ${NEWDIR}/moduledb
204     rm -f ${OLDDIR}/*
205 johnm 1.41 rmdir ${OLDDIR}
206     fi
207     }
208    
209 johnm 1.37 update_moduledb() {
210 genstef 1.69 debug-print-function ${FUNCNAME} $*
211    
212 johnm 1.40 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/
213 johnm 1.41 move_old_moduledb
214 johnm 1.40
215     if [[ ! -f ${MODULEDB_DIR}/moduledb ]]; then
216     [[ ! -d ${MODULEDB_DIR} ]] && mkdir -p ${MODULEDB_DIR}
217     touch ${MODULEDB_DIR}/moduledb
218 johnm 1.37 fi
219 vapier 1.72
220     if ! grep -qs ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb ; then
221 johnm 1.37 einfo "Adding module to moduledb."
222 johnm 1.40 echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${MODULEDB_DIR}/moduledb
223 swegener 1.49 fi
224 johnm 1.37 }
225    
226     remove_moduledb() {
227 genstef 1.69 debug-print-function ${FUNCNAME} $*
228    
229 johnm 1.40 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/
230 johnm 1.41 move_old_moduledb
231 johnm 1.40
232 vapier 1.72 if grep -qs ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb ; then
233 johnm 1.37 einfo "Removing ${CATEGORY}/${PN}-${PVR} from moduledb."
234 dsd 1.71 sed -i -e "/.*${CATEGORY}\/${PN}-${PVR}.*/d" ${MODULEDB_DIR}/moduledb
235 johnm 1.37 fi
236     }
237    
238 johnm 1.1 set_kvobj() {
239 genstef 1.69 debug-print-function ${FUNCNAME} $*
240    
241 johnm 1.1 if kernel_is 2 6
242     then
243     KV_OBJ="ko"
244     else
245     KV_OBJ="o"
246     fi
247 johnm 1.26 # Do we really need to know this?
248     # Lets silence it.
249     # einfo "Using KV_OBJ=${KV_OBJ}"
250 johnm 1.1 }
251    
252 genstef 1.68 get-KERNEL_CC() {
253 genstef 1.69 debug-print-function ${FUNCNAME} $*
254    
255 genstef 1.68 local kernel_cc
256     if [ -n "${KERNEL_ABI}" ]; then
257     # In future, an arch might want to define CC_$ABI
258     #kernel_cc="$(get_abi_CC)"
259 swegener 1.70 #[ -z "${kernel_cc}" ] &&
260 genstef 1.68 kernel_cc="$(tc-getCC $(ABI=${KERNEL_ABI} get_abi_CHOST))"
261     else
262     kernel_cc=$(tc-getCC)
263     fi
264     echo "${kernel_cc}"
265     }
266    
267 johnm 1.11 generate_modulesd() {
268 genstef 1.69 debug-print-function ${FUNCNAME} $*
269    
270 johnm 1.11 # This function will generate the neccessary modules.d file from the
271     # information contained in the modules exported parms
272 johnm 1.26
273 johnm 1.54 local currm_path currm currm_t t myIFS myVAR
274 johnm 1.26 local module_docs module_enabled module_aliases \
275     module_additions module_examples module_modinfo module_opts
276    
277     for currm_path in ${@}
278 johnm 1.11 do
279 johnm 1.26 currm=${currm_path//*\/}
280     currm=$(echo ${currm} | tr '[:lower:]' '[:upper:]')
281 johnm 1.54 currm_t=${currm}
282     while [[ -z ${currm_t//*-*} ]]; do
283     currm_t=${currm_t/-/_}
284     done
285 johnm 1.26
286 johnm 1.54 module_docs="$(eval echo \${MODULESD_${currm_t}_DOCS})"
287     module_enabled="$(eval echo \${MODULESD_${currm_t}_ENABLED})"
288     module_aliases="$(eval echo \${#MODULESD_${currm_t}_ALIASES[*]})"
289     module_additions="$(eval echo \${#MODULESD_${currm_t}_ADDITIONS[*]})"
290     module_examples="$(eval echo \${#MODULESD_${currm_t}_EXAMPLES[*]})"
291 johnm 1.26
292 johnm 1.27 [[ ${module_aliases} -eq 0 ]] && unset module_aliases
293     [[ ${module_additions} -eq 0 ]] && unset module_additions
294     [[ ${module_examples} -eq 0 ]] && unset module_examples
295 johnm 1.26
296 swegener 1.49 # If we specify we dont want it, then lets exit, otherwise we assume
297 johnm 1.26 # that if its set, we do want it.
298     [[ ${module_enabled} == no ]] && return 0
299    
300     # unset any unwanted variables.
301     for t in ${!module_*}
302 johnm 1.11 do
303 johnm 1.26 [[ -z ${!t} ]] && unset ${t}
304 johnm 1.11 done
305    
306 johnm 1.26 [[ -z ${!module_*} ]] && return 0
307    
308     # OK so now if we have got this far, then we know we want to continue
309     # and generate the modules.d file.
310     module_modinfo="$(modinfo -p ${currm_path}.${KV_OBJ})"
311     module_config="${T}/modulesd-${currm}"
312    
313 johnm 1.11 ebegin "Preparing file for modules.d"
314 johnm 1.26 #-----------------------------------------------------------------------
315     echo "# modules.d configuration file for ${currm}" >> ${module_config}
316     #-----------------------------------------------------------------------
317     [[ -n ${module_docs} ]] && \
318     echo "# For more information please read:" >> ${module_config}
319     for t in ${module_docs}
320 johnm 1.11 do
321 johnm 1.26 echo "# ${t//*\/}" >> ${module_config}
322 johnm 1.11 done
323 johnm 1.26 echo >> ${module_config}
324 johnm 1.11
325 johnm 1.26 #-----------------------------------------------------------------------
326 johnm 1.27 if [[ ${module_aliases} -gt 0 ]]
327 johnm 1.11 then
328     echo "# Internal Aliases - Do not edit" >> ${module_config}
329     echo "# ------------------------------" >> ${module_config}
330 johnm 1.12
331 johnm 1.26 for((t=0; t<${module_aliases}; t++))
332 johnm 1.11 do
333 johnm 1.26 echo "alias $(eval echo \${MODULESD_${currm}_ALIASES[$t]})" \
334     >> ${module_config}
335 johnm 1.12 done
336 johnm 1.26 echo '' >> ${module_config}
337 johnm 1.11 fi
338    
339 johnm 1.26 #-----------------------------------------------------------------------
340     if [[ -n ${module_modinfo} ]]
341 johnm 1.11 then
342     echo >> ${module_config}
343     echo "# Configurable module parameters" >> ${module_config}
344     echo "# ------------------------------" >> ${module_config}
345 johnm 1.26 myIFS="${IFS}"
346 johnm 1.11 IFS="$(echo -en "\n\b")"
347 swegener 1.49
348 johnm 1.26 for t in ${module_modinfo}
349 johnm 1.11 do
350 johnm 1.26 myVAR="$(echo ${t#*:} | grep -e " [0-9][ =]" | sed "s:.*\([01][= ]\).*:\1:")"
351     if [[ -n ${myVAR} ]]
352 johnm 1.11 then
353 johnm 1.26 module_opts="${module_opts} ${t%%:*}:${myVAR}"
354 johnm 1.11 fi
355 johnm 1.26 echo -e "# ${t%%:*}:\t${t#*:}" >> ${module_config}
356 swegener 1.49 done
357 johnm 1.26 IFS="${myIFS}"
358     echo '' >> ${module_config}
359     fi
360    
361     #-----------------------------------------------------------------------
362     if [[ $(eval echo \${MODULESD_${currm}_ALIASES[0]}) == guess ]]
363     then
364     # So lets do some guesswork eh?
365     if [[ -n ${module_opts} ]]
366     then
367     echo "# For Example..." >> ${module_config}
368     echo "# --------------" >> ${module_config}
369     for t in ${module_opts}
370     do
371     echo "# options ${currm} ${t//:*}=${t//*:}" >> ${module_config}
372     done
373     echo '' >> ${module_config}
374     fi
375 johnm 1.27 elif [[ ${module_examples} -gt 0 ]]
376 johnm 1.26 then
377     echo "# For Example..." >> ${module_config}
378     echo "# --------------" >> ${module_config}
379     for((t=0; t<${module_examples}; t++))
380     do
381     echo "options $(eval echo \${MODULESD_${currm}_EXAMPLES[$t]})" \
382     >> ${module_config}
383 johnm 1.11 done
384 johnm 1.26 echo '' >> ${module_config}
385 johnm 1.11 fi
386 johnm 1.26
387     #-----------------------------------------------------------------------
388 johnm 1.27 if [[ ${module_additions} -gt 0 ]]
389 johnm 1.11 then
390 johnm 1.26 for((t=0; t<${module_additions}; t++))
391 johnm 1.11 do
392 johnm 1.26 echo "$(eval echo \${MODULESD_${currm}_ADDITIONS[$t]})" \
393     >> ${module_config}
394 johnm 1.11 done
395 johnm 1.26 echo '' >> ${module_config}
396 johnm 1.11 fi
397 swegener 1.49
398 johnm 1.26 #-----------------------------------------------------------------------
399    
400 johnm 1.12 # then we install it
401 johnm 1.11 insinto /etc/modules.d
402 johnm 1.27 newins ${module_config} ${currm_path//*\/}
403    
404 johnm 1.12 # and install any documentation we might have.
405 johnm 1.26 [[ -n ${module_docs} ]] && dodoc ${module_docs}
406 johnm 1.11 done
407     eend 0
408 johnm 1.26 return 0
409 johnm 1.11 }
410    
411 johnm 1.18 find_module_params() {
412 genstef 1.69 debug-print-function ${FUNCNAME} $*
413    
414 johnm 1.18 local matched_offset=0 matched_opts=0 test="${@}" temp_var result
415     local i=0 y=0 z=0
416 swegener 1.49
417 johnm 1.18 for((i=0; i<=${#test}; i++))
418     do
419     case ${test:${i}:1} in
420     \() matched_offset[0]=${i};;
421     \:) matched_opts=$((${matched_opts} + 1));
422     matched_offset[${matched_opts}]="${i}";;
423     \)) matched_opts=$((${matched_opts} + 1));
424     matched_offset[${matched_opts}]="${i}";;
425     esac
426     done
427 swegener 1.49
428 johnm 1.18 for((i=0; i<=${matched_opts}; i++))
429     do
430     # i = offset were working on
431     # y = last offset
432     # z = current offset - last offset
433     # temp_var = temporary name
434     case ${i} in
435     0) tempvar=${test:0:${matched_offset[0]}};;
436     *) y=$((${matched_offset[$((${i} - 1))]} + 1))
437     z=$((${matched_offset[${i}]} - ${matched_offset[$((${i} - 1))]}));
438     z=$((${z} - 1))
439     tempvar=${test:${y}:${z}};;
440     esac
441 swegener 1.49
442 johnm 1.18 case ${i} in
443     0) result="${result} modulename:${tempvar}";;
444     1) result="${result} libdir:${tempvar}";;
445     2) result="${result} srcdir:${tempvar}";;
446     3) result="${result} objdir:${tempvar}";;
447     esac
448     done
449 swegener 1.49
450 johnm 1.18 echo ${result}
451     }
452    
453 johnm 1.1 # default ebuild functions
454     # --------------------------------
455    
456     linux-mod_pkg_setup() {
457 genstef 1.69 debug-print-function ${FUNCNAME} $*
458    
459 johnm 1.6 linux-info_pkg_setup;
460     check_kernel_built;
461 johnm 1.63 strip_modulenames;
462     [[ -n ${MODULE_NAMES} ]] && check_modules_supported
463 johnm 1.1 set_kvobj;
464 weeve 1.55 # Commented out with permission from johnm until a fixed version for arches
465     # who intentionally use different kernel and userland compilers can be
466     # introduced - Jason Wever <weeve@gentoo.org>, 23 Oct 2005
467     #check_vermagic;
468 johnm 1.1 }
469    
470 johnm 1.63 strip_modulenames() {
471 genstef 1.69 debug-print-function ${FUNCNAME} $*
472    
473 johnm 1.63 local i
474     for i in ${MODULE_IGNORE}; do
475     MODULE_NAMES=${MODULE_NAMES//${i}(*}
476     done
477     }
478    
479 johnm 1.1 linux-mod_src_compile() {
480 genstef 1.69 debug-print-function ${FUNCNAME} $*
481    
482 blubb 1.62 local modulename libdir srcdir objdir i n myARCH="${ARCH}" myABI="${ABI}"
483 johnm 1.52 ARCH="$(tc-arch-kernel)"
484 blubb 1.62 ABI="${KERNEL_ABI}"
485 johnm 1.26
486 johnm 1.16 BUILD_TARGETS=${BUILD_TARGETS:-clean module}
487 johnm 1.63 strip_modulenames;
488 johnm 1.9 for i in ${MODULE_NAMES}
489 johnm 1.1 do
490 johnm 1.23 unset libdir srcdir objdir
491 johnm 1.18 for n in $(find_module_params ${i})
492     do
493     eval ${n/:*}=${n/*:/}
494     done
495     libdir=${libdir:-misc}
496     srcdir=${srcdir:-${S}}
497     objdir=${objdir:-${srcdir}}
498 swegener 1.49
499 johnm 1.18 if [ ! -f "${srcdir}/.built" ];
500 johnm 1.16 then
501 johnm 1.18 cd ${srcdir}
502 johnm 1.16 einfo "Preparing ${modulename} module"
503 johnm 1.22 if [[ -n ${ECONF_PARAMS} ]]
504     then
505     econf ${ECONF_PARAMS} || \
506     die "Unable to run econf ${ECONF_PARAMS}"
507     fi
508    
509 genstef 1.69 emake HOSTCC="$(tc-getBUILD_CC)" CC="$(get-KERNEL_CC)" LDFLAGS="$(get_abi_LDFLAGS)" \
510 johnm 1.64 ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} \
511 vapier 1.66 || die "Unable to make ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}."
512 johnm 1.18 touch ${srcdir}/.built
513 johnm 1.16 cd ${OLDPWD}
514     fi
515 johnm 1.1 done
516 johnm 1.26
517     ARCH="${myARCH}"
518 blubb 1.62 ABI="${myABI}"
519 johnm 1.1 }
520    
521     linux-mod_src_install() {
522 genstef 1.69 debug-print-function ${FUNCNAME} $*
523    
524 johnm 1.18 local modulename libdir srcdir objdir i n
525 swegener 1.49
526 johnm 1.63 strip_modulenames;
527 johnm 1.9 for i in ${MODULE_NAMES}
528 johnm 1.1 do
529 johnm 1.23 unset libdir srcdir objdir
530 johnm 1.18 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 johnm 1.1
538     einfo "Installing ${modulename} module"
539 vapier 1.56 cd ${objdir} || die "${objdir} does not exist"
540 brix 1.57 insinto /lib/modules/${KV_FULL}/${libdir}
541 vapier 1.56 doins ${modulename}.${KV_OBJ} || die "doins ${modulename}.${KV_OBJ} failed"
542 johnm 1.16 cd ${OLDPWD}
543 swegener 1.49
544 johnm 1.26 generate_modulesd ${objdir}/${modulename}
545 johnm 1.1 done
546     }
547    
548 genstef 1.65 linux-mod_pkg_preinst() {
549 genstef 1.69 debug-print-function ${FUNCNAME} $*
550    
551 genstef 1.65 [ -d ${IMAGE}/lib/modules ] && UPDATE_DEPMOD=true || UPDATE_DEPMOD=false
552     [ -d ${IMAGE}/etc/modules.d ] && UPDATE_MODULES=true || UPDATE_MODULES=false
553     [ -d ${IMAGE}/lib/modules ] && UPDATE_MODULEDB=true || UPDATE_MODULEDB=false
554     }
555    
556 johnm 1.1 linux-mod_pkg_postinst() {
557 genstef 1.69 debug-print-function ${FUNCNAME} $*
558    
559 genstef 1.65 ${UPDATE_DEPMOD} && update_depmod;
560     ${UPDATE_MODULES} && update_modules;
561     ${UPDATE_MODULEDB} && update_moduledb;
562 johnm 1.1 }
563 johnm 1.37
564     linux-mod_pkg_postrm() {
565 swegener 1.70 debug-print-function ${FUNCNAME} $*
566 johnm 1.37 remove_moduledb;
567     }

  ViewVC Help
Powered by ViewVC 1.1.20