/[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.46 Revision 1.68
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.46 2005/07/07 12:05:40 brix Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/linux-mod.eclass,v 1.68 2006/10/16 14:10:46 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.
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
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
76# Each entry is a new line. 76# Each entry is a new line.
77# MODULES_${modulename}_DOCS This is a string list which contains 77# MODULES_${modulename}_DOCS This is a string list which contains
78# the full path to any associated 78# the full path to any associated
79# documents for $modulename 79# documents for $modulename
80 80
81# 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
81 85
82inherit linux-info 86inherit eutils linux-info multilib
83EXPORT_FUNCTIONS pkg_setup pkg_postinst src_install src_compile pkg_postrm 87EXPORT_FUNCTIONS pkg_setup pkg_preinst pkg_postinst src_install src_compile pkg_postrm
84 88
85IUSE="${IUSE} pcmcia" 89IUSE="kernel_linux"
86SLOT="0" 90SLOT="0"
87DESCRIPTION="Based on the $ECLASS eclass" 91DESCRIPTION="Based on the $ECLASS eclass"
88RDEPEND="virtual/modutils 92RDEPEND="kernel_linux? ( virtual/modutils )"
89 pcmcia? ( virtual/pcmcia )"
90DEPEND="${RDEPEND} 93DEPEND="${RDEPEND}
91 virtual/linux-sources
92 sys-apps/sed" 94 sys-apps/sed"
93 95
94# eclass utilities 96# eclass utilities
95# ---------------------------------- 97# ----------------------------------
96 98
97unpack_pcmcia_sources() { 99check_vermagic() {
98 # So while the two eclasses exist side-by-side and also the ebuilds inherit 100 local curr_gcc_ver=$(gcc -dumpversion)
99 # both we need to check for PCMCIA_SOURCE_DIR, and if we find it, then we 101 local tmpfile old_chost old_gcc_ver result=0
100 # bail out and assume pcmcia.eclass is working on it.
101 [[ -n ${PCMCIA_SOURCE_DIR} ]] && return 1
102 102
103 if [[ -f "${1}" ]]; then 103 tmpfile=`find ${KV_DIR}/ -iname "*.o.cmd" -exec grep usr/lib/gcc {} \; -quit`
104 PCMCIA_SOURCE_DIR="${WORKDIR}/pcmcia-cs/" 104 tmpfile=${tmpfile//*usr/lib}
105 105 tmpfile=${tmpfile//\/include*}
106 ebegin "Decompressing pcmcia-cs sources" 106 old_chost=${tmpfile//*gcc\/}
107 mkdir -p ${PCMCIA_SOURCE_DIR} 107 old_chost=${old_chost//\/*}
108 tar -xjf ${1} -C ${PCMCIA_SOURCE_DIR} 108 old_gcc_ver=${tmpfile//*\/}
109 eend $?
110 109
111 if [[ -f ${PCMCIA_SOURCE_DIR}/pcmcia-cs-version ]]; then 110 if [[ -z ${old_gcc_ver} || -z ${old_chost} ]]; then
112 PCMCIA_VERSION=$(cat ${PCMCIA_SOURCE_DIR}/pcmcia-cs-version) 111 ewarn ""
113 einfo "Found pcmcia-cs-${PCMCIA_VERSION}" 112 ewarn "Unable to detect what version of GCC was used to compile"
113 ewarn "the kernel. Build will continue, but you may experience problems."
114 elif [[ ${curr_gcc_ver} != ${old_gcc_ver} ]]; then
115 ewarn ""
116 ewarn "The version of GCC you are using (${curr_gcc_ver}) does"
117 ewarn "not match the version of GCC used to compile the"
118 ewarn "kernel (${old_gcc_ver})."
119 result=1
120 elif [[ ${CHOST} != ${old_chost} ]]; then
121 ewarn ""
122 ewarn "The current CHOST (${CHOST}) does not match the chost"
123 ewarn "used when compiling the kernel (${old_chost})."
124 result=1
114 fi 125 fi
115 fi
116}
117 126
118# Dummy function for compatibility. 127 if [[ ${result} -gt 0 ]]; then
119pcmcia_configure() { return 0; } 128 ewarn ""
120 129 ewarn "Build will not continue, because you will experience problems."
121pcmcia_src_unpack() { 130 ewarn "To fix this either change the version of GCC you wish to use"
122 local pcmcia_tbz="${ROOT}/usr/src/pcmcia-cs/pcmcia-cs-build-env.tbz2" 131 ewarn "to match the kernel, or recompile the kernel first."
123 132 die "GCC Version Mismatch."
124 # if the kernel has pcmcia support built in, then we just ignore all this.
125 if linux_chkconfig_present PCMCIA; then
126 einfo "Kernel based PCMCIA support has been detected."
127 else
128 if kernel_is 2 4; then
129 unpack_pcmcia_sources ${pcmcia_tbz};
130 else
131 einfo "We have detected that you are running a 2.6 kernel"
132 einfo "but you are not using the built-in PCMCIA support."
133 einfo "We will assume you know what you are doing, but please"
134 einfo "consider using the built in PCMCIA support instead."
135 sleep 10
136
137 unpack_pcmcia_sources ${pcmcia_tbz};
138 fi
139 fi 133 fi
140} 134}
141 135
142use_m() { 136use_m() {
143 # if we haven't determined the version yet, we need too. 137 # if we haven't determined the version yet, we need too.
144 get_version; 138 get_version;
145 139
146 # if the kernel version is greater than 2.6.6 then we should use 140 # if the kernel version is greater than 2.6.6 then we should use
147 # M= instead of SUBDIRS= 141 # M= instead of SUBDIRS=
148 [ ${KV_MAJOR} -eq 2 -a ${KV_MINOR} -gt 5 -a ${KV_PATCH} -gt 5 ] && \ 142 [ ${KV_MAJOR} -eq 2 -a ${KV_MINOR} -gt 5 -a ${KV_PATCH} -gt 5 ] && \
149 return 0 || return 1 143 return 0 || return 1
150} 144}
161} 155}
162 156
163update_depmod() { 157update_depmod() {
164 # if we haven't determined the version yet, we need too. 158 # if we haven't determined the version yet, we need too.
165 get_version; 159 get_version;
166 160
167 ebegin "Updating module dependencies for ${KV_FULL}" 161 ebegin "Updating module dependencies for ${KV_FULL}"
168 if [ -r ${KV_OUT_DIR}/System.map ] 162 if [ -r ${KV_OUT_DIR}/System.map ]
169 then 163 then
170 depmod -ae -F ${KV_OUT_DIR}/System.map -b ${ROOT} -r ${KV_FULL} 164 depmod -ae -F ${KV_OUT_DIR}/System.map -b ${ROOT} -r ${KV_FULL}
171 eend $? 165 eend $?
188} 182}
189 183
190move_old_moduledb() { 184move_old_moduledb() {
191 local OLDDIR=${ROOT}/usr/share/module-rebuild/ 185 local OLDDIR=${ROOT}/usr/share/module-rebuild/
192 local NEWDIR=${ROOT}/var/lib/module-rebuild/ 186 local NEWDIR=${ROOT}/var/lib/module-rebuild/
193 187
194 if [[ -f ${OLDDIR}/moduledb ]]; then 188 if [[ -f ${OLDDIR}/moduledb ]]; then
195 [[ ! -d ${NEWDIR} ]] && mkdir -p ${NEWDIR} 189 [[ ! -d ${NEWDIR} ]] && mkdir -p ${NEWDIR}
196 [[ ! -f ${NEWDIR}/moduledb ]] && \ 190 [[ ! -f ${NEWDIR}/moduledb ]] && \
197 mv ${OLDDIR}/moduledb ${NEWDIR}/moduledb 191 mv ${OLDDIR}/moduledb ${NEWDIR}/moduledb
198 rm -f ${OLDDIR}/* 192 rm -f ${OLDDIR}/*
209 touch ${MODULEDB_DIR}/moduledb 203 touch ${MODULEDB_DIR}/moduledb
210 fi 204 fi
211 if [[ -z $(grep ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb) ]]; then 205 if [[ -z $(grep ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb) ]]; then
212 einfo "Adding module to moduledb." 206 einfo "Adding module to moduledb."
213 echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${MODULEDB_DIR}/moduledb 207 echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${MODULEDB_DIR}/moduledb
214 fi 208 fi
215} 209}
216 210
217remove_moduledb() { 211remove_moduledb() {
218 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/ 212 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/
219 move_old_moduledb 213 move_old_moduledb
220 214
221 if [[ -n $(grep ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb) ]]; then 215 if [[ -n $(grep ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb) ]]; then
222 einfo "Removing ${CATEGORY}/${PN}-${PVR} from moduledb." 216 einfo "Removing ${CATEGORY}/${PN}-${PVR} from moduledb."
223 sed -ie "/.*${CATEGORY}\/${P}.*/d" ${MODULEDB_DIR}/moduledb 217 sed -ie "/.*${CATEGORY}\/${PN}-${PVR}.*/d" ${MODULEDB_DIR}/moduledb
224 fi 218 fi
225} 219}
226 220
227set_kvobj() { 221set_kvobj() {
228 if kernel_is 2 6 222 if kernel_is 2 6
234 # Do we really need to know this? 228 # Do we really need to know this?
235 # Lets silence it. 229 # Lets silence it.
236 # einfo "Using KV_OBJ=${KV_OBJ}" 230 # einfo "Using KV_OBJ=${KV_OBJ}"
237} 231}
238 232
233get-KERNEL_CC() {
234 local kernel_cc
235 if [ -n "${KERNEL_ABI}" ]; then
236 # In future, an arch might want to define CC_$ABI
237 #kernel_cc="$(get_abi_CC)"
238 #[ -z "${kernel_cc}" ] &&
239 kernel_cc="$(tc-getCC $(ABI=${KERNEL_ABI} get_abi_CHOST))"
240 else
241 kernel_cc=$(tc-getCC)
242 fi
243 echo "${kernel_cc}"
244}
245
239generate_modulesd() { 246generate_modulesd() {
240 # This function will generate the neccessary modules.d file from the 247 # This function will generate the neccessary modules.d file from the
241 # information contained in the modules exported parms 248 # information contained in the modules exported parms
242 249
243 local currm_path currm t myIFS myVAR 250 local currm_path currm currm_t t myIFS myVAR
244 local module_docs module_enabled module_aliases \ 251 local module_docs module_enabled module_aliases \
245 module_additions module_examples module_modinfo module_opts 252 module_additions module_examples module_modinfo module_opts
246 253
247 for currm_path in ${@} 254 for currm_path in ${@}
248 do 255 do
249 currm=${currm_path//*\/} 256 currm=${currm_path//*\/}
250 currm=$(echo ${currm} | tr '[:lower:]' '[:upper:]') 257 currm=$(echo ${currm} | tr '[:lower:]' '[:upper:]')
258 currm_t=${currm}
259 while [[ -z ${currm_t//*-*} ]]; do
260 currm_t=${currm_t/-/_}
261 done
251 262
252 module_docs="$(eval echo \${MODULESD_${currm}_DOCS})" 263 module_docs="$(eval echo \${MODULESD_${currm_t}_DOCS})"
253 module_enabled="$(eval echo \${MODULESD_${currm}_ENABLED})" 264 module_enabled="$(eval echo \${MODULESD_${currm_t}_ENABLED})"
254 module_aliases="$(eval echo \${#MODULESD_${currm/-/_}_ALIASES[*]})" 265 module_aliases="$(eval echo \${#MODULESD_${currm_t}_ALIASES[*]})"
255 module_additions="$(eval echo \${#MODULESD_${currm/-/_}_ADDITIONS[*]})" 266 module_additions="$(eval echo \${#MODULESD_${currm_t}_ADDITIONS[*]})"
256 module_examples="$(eval echo \${#MODULESD_${currm/-/_}_EXAMPLES[*]})" 267 module_examples="$(eval echo \${#MODULESD_${currm_t}_EXAMPLES[*]})"
257 268
258 [[ ${module_aliases} -eq 0 ]] && unset module_aliases 269 [[ ${module_aliases} -eq 0 ]] && unset module_aliases
259 [[ ${module_additions} -eq 0 ]] && unset module_additions 270 [[ ${module_additions} -eq 0 ]] && unset module_additions
260 [[ ${module_examples} -eq 0 ]] && unset module_examples 271 [[ ${module_examples} -eq 0 ]] && unset module_examples
261 272
262 # If we specify we dont want it, then lets exit, otherwise we assume 273 # If we specify we dont want it, then lets exit, otherwise we assume
263 # that if its set, we do want it. 274 # that if its set, we do want it.
264 [[ ${module_enabled} == no ]] && return 0 275 [[ ${module_enabled} == no ]] && return 0
265 276
266 # unset any unwanted variables. 277 # unset any unwanted variables.
267 for t in ${!module_*} 278 for t in ${!module_*}
308 echo >> ${module_config} 319 echo >> ${module_config}
309 echo "# Configurable module parameters" >> ${module_config} 320 echo "# Configurable module parameters" >> ${module_config}
310 echo "# ------------------------------" >> ${module_config} 321 echo "# ------------------------------" >> ${module_config}
311 myIFS="${IFS}" 322 myIFS="${IFS}"
312 IFS="$(echo -en "\n\b")" 323 IFS="$(echo -en "\n\b")"
313 324
314 for t in ${module_modinfo} 325 for t in ${module_modinfo}
315 do 326 do
316 myVAR="$(echo ${t#*:} | grep -e " [0-9][ =]" | sed "s:.*\([01][= ]\).*:\1:")" 327 myVAR="$(echo ${t#*:} | grep -e " [0-9][ =]" | sed "s:.*\([01][= ]\).*:\1:")"
317 if [[ -n ${myVAR} ]] 328 if [[ -n ${myVAR} ]]
318 then 329 then
319 module_opts="${module_opts} ${t%%:*}:${myVAR}" 330 module_opts="${module_opts} ${t%%:*}:${myVAR}"
320 fi 331 fi
321 echo -e "# ${t%%:*}:\t${t#*:}" >> ${module_config} 332 echo -e "# ${t%%:*}:\t${t#*:}" >> ${module_config}
322 done 333 done
323 IFS="${myIFS}" 334 IFS="${myIFS}"
324 echo '' >> ${module_config} 335 echo '' >> ${module_config}
325 fi 336 fi
326 337
327 #----------------------------------------------------------------------- 338 #-----------------------------------------------------------------------
358 echo "$(eval echo \${MODULESD_${currm}_ADDITIONS[$t]})" \ 369 echo "$(eval echo \${MODULESD_${currm}_ADDITIONS[$t]})" \
359 >> ${module_config} 370 >> ${module_config}
360 done 371 done
361 echo '' >> ${module_config} 372 echo '' >> ${module_config}
362 fi 373 fi
363 374
364 #----------------------------------------------------------------------- 375 #-----------------------------------------------------------------------
365 376
366 # then we install it 377 # then we install it
367 insinto /etc/modules.d 378 insinto /etc/modules.d
368 newins ${module_config} ${currm_path//*\/} 379 newins ${module_config} ${currm_path//*\/}
372 done 383 done
373 eend 0 384 eend 0
374 return 0 385 return 0
375} 386}
376 387
377display_postinst() {
378 # if we haven't determined the version yet, we need too.
379 get_version;
380
381 local modulename moduledir sourcedir moduletemp file i
382
383 file=${ROOT}/etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR}
384 file=${file/\/\///}
385
386 for i in ${MODULE_IGNORE}
387 do
388 MODULE_NAMES=${MODULE_NAMES//${i}(*}
389 done
390
391 if [[ -n ${MODULE_NAMES} ]]
392 then
393 einfo "If you would like to load this module automatically upon boot"
394 einfo "please type the following as root:"
395 for i in ${MODULE_NAMES}
396 do
397 unset libdir srcdir objdir
398 for n in $(find_module_params ${i})
399 do
400 eval ${n/:*}=${n/*:/}
401 done
402 einfo " # echo \"${modulename}\" >> ${file}"
403 done
404 einfo
405 fi
406}
407
408find_module_params() { 388find_module_params() {
409 local matched_offset=0 matched_opts=0 test="${@}" temp_var result 389 local matched_offset=0 matched_opts=0 test="${@}" temp_var result
410 local i=0 y=0 z=0 390 local i=0 y=0 z=0
411 391
412 for((i=0; i<=${#test}; i++)) 392 for((i=0; i<=${#test}; i++))
413 do 393 do
414 case ${test:${i}:1} in 394 case ${test:${i}:1} in
415 \() matched_offset[0]=${i};; 395 \() matched_offset[0]=${i};;
416 \:) matched_opts=$((${matched_opts} + 1)); 396 \:) matched_opts=$((${matched_opts} + 1));
417 matched_offset[${matched_opts}]="${i}";; 397 matched_offset[${matched_opts}]="${i}";;
418 \)) matched_opts=$((${matched_opts} + 1)); 398 \)) matched_opts=$((${matched_opts} + 1));
419 matched_offset[${matched_opts}]="${i}";; 399 matched_offset[${matched_opts}]="${i}";;
420 esac 400 esac
421 done 401 done
422 402
423 for((i=0; i<=${matched_opts}; i++)) 403 for((i=0; i<=${matched_opts}; i++))
424 do 404 do
425 # i = offset were working on 405 # i = offset were working on
426 # y = last offset 406 # y = last offset
427 # z = current offset - last offset 407 # z = current offset - last offset
431 *) y=$((${matched_offset[$((${i} - 1))]} + 1)) 411 *) y=$((${matched_offset[$((${i} - 1))]} + 1))
432 z=$((${matched_offset[${i}]} - ${matched_offset[$((${i} - 1))]})); 412 z=$((${matched_offset[${i}]} - ${matched_offset[$((${i} - 1))]}));
433 z=$((${z} - 1)) 413 z=$((${z} - 1))
434 tempvar=${test:${y}:${z}};; 414 tempvar=${test:${y}:${z}};;
435 esac 415 esac
436 416
437 case ${i} in 417 case ${i} in
438 0) result="${result} modulename:${tempvar}";; 418 0) result="${result} modulename:${tempvar}";;
439 1) result="${result} libdir:${tempvar}";; 419 1) result="${result} libdir:${tempvar}";;
440 2) result="${result} srcdir:${tempvar}";; 420 2) result="${result} srcdir:${tempvar}";;
441 3) result="${result} objdir:${tempvar}";; 421 3) result="${result} objdir:${tempvar}";;
442 esac 422 esac
443 done 423 done
444 424
445 echo ${result} 425 echo ${result}
446} 426}
447 427
448# default ebuild functions 428# default ebuild functions
449# -------------------------------- 429# --------------------------------
450 430
451linux-mod_pkg_setup() { 431linux-mod_pkg_setup() {
452 linux-info_pkg_setup; 432 linux-info_pkg_setup;
453 check_kernel_built; 433 check_kernel_built;
454 check_modules_supported; 434 strip_modulenames;
435 [[ -n ${MODULE_NAMES} ]] && check_modules_supported
455 set_kvobj; 436 set_kvobj;
437 # Commented out with permission from johnm until a fixed version for arches
438 # who intentionally use different kernel and userland compilers can be
439 # introduced - Jason Wever <weeve@gentoo.org>, 23 Oct 2005
440 #check_vermagic;
456} 441}
457 442
458linux-mod_src_compile() { 443strip_modulenames() {
459 local modulename libdir srcdir objdir i n myARCH="${ARCH}" 444 local i
460 unset ARCH
461
462 BUILD_TARGETS=${BUILD_TARGETS:-clean module}
463
464 for i in ${MODULE_IGNORE} 445 for i in ${MODULE_IGNORE}; do
465 do
466 MODULE_NAMES=${MODULE_NAMES//${i}(*} 446 MODULE_NAMES=${MODULE_NAMES//${i}(*}
467 done 447 done
448}
468 449
450linux-mod_src_compile() {
451 local modulename libdir srcdir objdir i n myARCH="${ARCH}" myABI="${ABI}"
452 ARCH="$(tc-arch-kernel)"
453 ABI="${KERNEL_ABI}"
454 CC_HOSTCC=$(tc-getBUILD_CC)
455 CC_CC=$(get-KERNEL_CC)
456
457 BUILD_TARGETS=${BUILD_TARGETS:-clean module}
458 strip_modulenames;
469 for i in ${MODULE_NAMES} 459 for i in ${MODULE_NAMES}
470 do 460 do
471 unset libdir srcdir objdir 461 unset libdir srcdir objdir
472 for n in $(find_module_params ${i}) 462 for n in $(find_module_params ${i})
473 do 463 do
474 eval ${n/:*}=${n/*:/} 464 eval ${n/:*}=${n/*:/}
475 done 465 done
476 libdir=${libdir:-misc} 466 libdir=${libdir:-misc}
477 srcdir=${srcdir:-${S}} 467 srcdir=${srcdir:-${S}}
478 objdir=${objdir:-${srcdir}} 468 objdir=${objdir:-${srcdir}}
479 469
480 if [ ! -f "${srcdir}/.built" ]; 470 if [ ! -f "${srcdir}/.built" ];
481 then 471 then
482 cd ${srcdir} 472 cd ${srcdir}
483 einfo "Preparing ${modulename} module" 473 einfo "Preparing ${modulename} module"
484 if [[ -n ${ECONF_PARAMS} ]] 474 if [[ -n ${ECONF_PARAMS} ]]
485 then 475 then
486 econf ${ECONF_PARAMS} || \ 476 econf ${ECONF_PARAMS} || \
487 die "Unable to run econf ${ECONF_PARAMS}" 477 die "Unable to run econf ${ECONF_PARAMS}"
488 fi 478 fi
489 479
490 emake ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} \ 480 emake HOSTCC=${CC_HOSTCC} CC=${CC_CC} LDFLAGS="$(get_abi_LDFLAGS)" \
491 || die "Unable to make \
492 ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}." 481 ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} \
482 || die "Unable to make ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}."
493 touch ${srcdir}/.built 483 touch ${srcdir}/.built
494 cd ${OLDPWD} 484 cd ${OLDPWD}
495 fi 485 fi
496 done 486 done
497 487
498 ARCH="${myARCH}" 488 ARCH="${myARCH}"
489 ABI="${myABI}"
499} 490}
500 491
501linux-mod_src_install() { 492linux-mod_src_install() {
502 local modulename libdir srcdir objdir i n 493 local modulename libdir srcdir objdir i n
503
504 for i in ${MODULE_IGNORE}
505 do
506 MODULE_NAMES=${MODULE_NAMES//${i}(*}
507 done
508 494
495 strip_modulenames;
509 for i in ${MODULE_NAMES} 496 for i in ${MODULE_NAMES}
510 do 497 do
511 unset libdir srcdir objdir 498 unset libdir srcdir objdir
512 for n in $(find_module_params ${i}) 499 for n in $(find_module_params ${i})
513 do 500 do
516 libdir=${libdir:-misc} 503 libdir=${libdir:-misc}
517 srcdir=${srcdir:-${S}} 504 srcdir=${srcdir:-${S}}
518 objdir=${objdir:-${srcdir}} 505 objdir=${objdir:-${srcdir}}
519 506
520 einfo "Installing ${modulename} module" 507 einfo "Installing ${modulename} module"
521 cd ${objdir} 508 cd ${objdir} || die "${objdir} does not exist"
522 insinto ${ROOT}lib/modules/${KV_FULL}/${libdir} 509 insinto /lib/modules/${KV_FULL}/${libdir}
523 doins ${modulename}.${KV_OBJ} 510 doins ${modulename}.${KV_OBJ} || die "doins ${modulename}.${KV_OBJ} failed"
524 cd ${OLDPWD} 511 cd ${OLDPWD}
525 512
526 generate_modulesd ${objdir}/${modulename} 513 generate_modulesd ${objdir}/${modulename}
527 done 514 done
528} 515}
529 516
517linux-mod_pkg_preinst() {
518 [ -d ${IMAGE}/lib/modules ] && UPDATE_DEPMOD=true || UPDATE_DEPMOD=false
519 [ -d ${IMAGE}/etc/modules.d ] && UPDATE_MODULES=true || UPDATE_MODULES=false
520 [ -d ${IMAGE}/lib/modules ] && UPDATE_MODULEDB=true || UPDATE_MODULEDB=false
521}
522
530linux-mod_pkg_postinst() { 523linux-mod_pkg_postinst() {
531 update_depmod; 524 ${UPDATE_DEPMOD} && update_depmod;
532 update_modules; 525 ${UPDATE_MODULES} && update_modules;
533 update_moduledb; 526 ${UPDATE_MODULEDB} && update_moduledb;
534 display_postinst;
535} 527}
536 528
537linux-mod_pkg_postrm() { 529linux-mod_pkg_postrm() {
538 remove_moduledb; 530 remove_moduledb;
539} 531}

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

  ViewVC Help
Powered by ViewVC 1.1.20