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

Contents of /eclass/linux-mod.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.83 - (hide annotations) (download)
Mon Oct 27 05:20:30 2008 UTC (5 years, 8 months ago) by vapier
Branch: MAIN
Changes since 1.82: +4 -4 lines
pass CROSS_COMPILE=${CHOST}- to build process #194380

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

  ViewVC Help
Powered by ViewVC 1.1.20