/[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.36 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.36 2005/04/25 18:47:12 johnm 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
83ECLASS=linux-mod
84INHERITED="$INHERITED $ECLASS"
85EXPORT_FUNCTIONS pkg_setup pkg_postinst src_install src_compile 87EXPORT_FUNCTIONS pkg_setup pkg_preinst pkg_postinst src_install src_compile pkg_postrm
86 88
89IUSE="kernel_linux"
87SLOT="0" 90SLOT="0"
88DESCRIPTION="Based on the $ECLASS eclass" 91DESCRIPTION="Based on the $ECLASS eclass"
89DEPEND="virtual/linux-sources 92RDEPEND="kernel_linux? ( virtual/modutils )"
93DEPEND="${RDEPEND}
90 sys-apps/sed 94 sys-apps/sed"
91 virtual/modutils
92 pcmcia? ( sys-apps/pcmcia-cs )"
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 $?
185 /sbin/modules-update 179 /sbin/modules-update
186 eend $? 180 eend $?
187 fi 181 fi
188} 182}
189 183
184move_old_moduledb() {
185 local OLDDIR=${ROOT}/usr/share/module-rebuild/
186 local NEWDIR=${ROOT}/var/lib/module-rebuild/
187
188 if [[ -f ${OLDDIR}/moduledb ]]; then
189 [[ ! -d ${NEWDIR} ]] && mkdir -p ${NEWDIR}
190 [[ ! -f ${NEWDIR}/moduledb ]] && \
191 mv ${OLDDIR}/moduledb ${NEWDIR}/moduledb
192 rm -f ${OLDDIR}/*
193 rmdir ${OLDDIR}
194 fi
195}
196
197update_moduledb() {
198 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/
199 move_old_moduledb
200
201 if [[ ! -f ${MODULEDB_DIR}/moduledb ]]; then
202 [[ ! -d ${MODULEDB_DIR} ]] && mkdir -p ${MODULEDB_DIR}
203 touch ${MODULEDB_DIR}/moduledb
204 fi
205 if [[ -z $(grep ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb) ]]; then
206 einfo "Adding module to moduledb."
207 echo "a:1:${CATEGORY}/${PN}-${PVR}" >> ${MODULEDB_DIR}/moduledb
208 fi
209}
210
211remove_moduledb() {
212 local MODULEDB_DIR=${ROOT}/var/lib/module-rebuild/
213 move_old_moduledb
214
215 if [[ -n $(grep ${CATEGORY}/${PN}-${PVR} ${MODULEDB_DIR}/moduledb) ]]; then
216 einfo "Removing ${CATEGORY}/${PN}-${PVR} from moduledb."
217 sed -ie "/.*${CATEGORY}\/${PN}-${PVR}.*/d" ${MODULEDB_DIR}/moduledb
218 fi
219}
220
190set_kvobj() { 221set_kvobj() {
191 if kernel_is 2 6 222 if kernel_is 2 6
192 then 223 then
193 KV_OBJ="ko" 224 KV_OBJ="ko"
194 else 225 else
197 # Do we really need to know this? 228 # Do we really need to know this?
198 # Lets silence it. 229 # Lets silence it.
199 # einfo "Using KV_OBJ=${KV_OBJ}" 230 # einfo "Using KV_OBJ=${KV_OBJ}"
200} 231}
201 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
202generate_modulesd() { 246generate_modulesd() {
203 # This function will generate the neccessary modules.d file from the 247 # This function will generate the neccessary modules.d file from the
204 # information contained in the modules exported parms 248 # information contained in the modules exported parms
205 249
206 local currm_path currm t myIFS myVAR 250 local currm_path currm currm_t t myIFS myVAR
207 local module_docs module_enabled module_aliases \ 251 local module_docs module_enabled module_aliases \
208 module_additions module_examples module_modinfo module_opts 252 module_additions module_examples module_modinfo module_opts
209 253
210 for currm_path in ${@} 254 for currm_path in ${@}
211 do 255 do
212 currm=${currm_path//*\/} 256 currm=${currm_path//*\/}
213 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
214 262
215 module_docs="$(eval echo \${MODULESD_${currm}_DOCS})" 263 module_docs="$(eval echo \${MODULESD_${currm_t}_DOCS})"
216 module_enabled="$(eval echo \${MODULESD_${currm}_ENABLED})" 264 module_enabled="$(eval echo \${MODULESD_${currm_t}_ENABLED})"
217 module_aliases="$(eval echo \${#MODULESD_${currm/-/_}_ALIASES[*]})" 265 module_aliases="$(eval echo \${#MODULESD_${currm_t}_ALIASES[*]})"
218 module_additions="$(eval echo \${#MODULESD_${currm/-/_}_ADDITIONS[*]})" 266 module_additions="$(eval echo \${#MODULESD_${currm_t}_ADDITIONS[*]})"
219 module_examples="$(eval echo \${#MODULESD_${currm/-/_}_EXAMPLES[*]})" 267 module_examples="$(eval echo \${#MODULESD_${currm_t}_EXAMPLES[*]})"
220 268
221 [[ ${module_aliases} -eq 0 ]] && unset module_aliases 269 [[ ${module_aliases} -eq 0 ]] && unset module_aliases
222 [[ ${module_additions} -eq 0 ]] && unset module_additions 270 [[ ${module_additions} -eq 0 ]] && unset module_additions
223 [[ ${module_examples} -eq 0 ]] && unset module_examples 271 [[ ${module_examples} -eq 0 ]] && unset module_examples
224 272
225 # 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
226 # that if its set, we do want it. 274 # that if its set, we do want it.
227 [[ ${module_enabled} == no ]] && return 0 275 [[ ${module_enabled} == no ]] && return 0
228 276
229 # unset any unwanted variables. 277 # unset any unwanted variables.
230 for t in ${!module_*} 278 for t in ${!module_*}
271 echo >> ${module_config} 319 echo >> ${module_config}
272 echo "# Configurable module parameters" >> ${module_config} 320 echo "# Configurable module parameters" >> ${module_config}
273 echo "# ------------------------------" >> ${module_config} 321 echo "# ------------------------------" >> ${module_config}
274 myIFS="${IFS}" 322 myIFS="${IFS}"
275 IFS="$(echo -en "\n\b")" 323 IFS="$(echo -en "\n\b")"
276 324
277 for t in ${module_modinfo} 325 for t in ${module_modinfo}
278 do 326 do
279 myVAR="$(echo ${t#*:} | grep -e " [0-9][ =]" | sed "s:.*\([01][= ]\).*:\1:")" 327 myVAR="$(echo ${t#*:} | grep -e " [0-9][ =]" | sed "s:.*\([01][= ]\).*:\1:")"
280 if [[ -n ${myVAR} ]] 328 if [[ -n ${myVAR} ]]
281 then 329 then
282 module_opts="${module_opts} ${t%%:*}:${myVAR}" 330 module_opts="${module_opts} ${t%%:*}:${myVAR}"
283 fi 331 fi
284 echo -e "# ${t%%:*}:\t${t#*:}" >> ${module_config} 332 echo -e "# ${t%%:*}:\t${t#*:}" >> ${module_config}
285 done 333 done
286 IFS="${myIFS}" 334 IFS="${myIFS}"
287 echo '' >> ${module_config} 335 echo '' >> ${module_config}
288 fi 336 fi
289 337
290 #----------------------------------------------------------------------- 338 #-----------------------------------------------------------------------
321 echo "$(eval echo \${MODULESD_${currm}_ADDITIONS[$t]})" \ 369 echo "$(eval echo \${MODULESD_${currm}_ADDITIONS[$t]})" \
322 >> ${module_config} 370 >> ${module_config}
323 done 371 done
324 echo '' >> ${module_config} 372 echo '' >> ${module_config}
325 fi 373 fi
326 374
327 #----------------------------------------------------------------------- 375 #-----------------------------------------------------------------------
328 376
329 # then we install it 377 # then we install it
330 insinto /etc/modules.d 378 insinto /etc/modules.d
331 newins ${module_config} ${currm_path//*\/} 379 newins ${module_config} ${currm_path//*\/}
335 done 383 done
336 eend 0 384 eend 0
337 return 0 385 return 0
338} 386}
339 387
340display_postinst() {
341 # if we haven't determined the version yet, we need too.
342 get_version;
343
344 local modulename moduledir sourcedir moduletemp file i
345
346 file=${ROOT}/etc/modules.autoload.d/kernel-${KV_MAJOR}.${KV_MINOR}
347 file=${file/\/\///}
348
349 for i in ${MODULE_IGNORE}
350 do
351 MODULE_NAMES=${MODULE_NAMES//${i}(*}
352 done
353
354 if [[ -n ${MODULE_NAMES} ]]
355 then
356 einfo "If you would like to load this module automatically upon boot"
357 einfo "please type the following as root:"
358 for i in ${MODULE_NAMES}
359 do
360 unset libdir srcdir objdir
361 for n in $(find_module_params ${i})
362 do
363 eval ${n/:*}=${n/*:/}
364 done
365 einfo " # echo \"${modulename}\" >> ${file}"
366 done
367 einfo
368 fi
369}
370
371find_module_params() { 388find_module_params() {
372 local matched_offset=0 matched_opts=0 test="${@}" temp_var result 389 local matched_offset=0 matched_opts=0 test="${@}" temp_var result
373 local i=0 y=0 z=0 390 local i=0 y=0 z=0
374 391
375 for((i=0; i<=${#test}; i++)) 392 for((i=0; i<=${#test}; i++))
376 do 393 do
377 case ${test:${i}:1} in 394 case ${test:${i}:1} in
378 \() matched_offset[0]=${i};; 395 \() matched_offset[0]=${i};;
379 \:) matched_opts=$((${matched_opts} + 1)); 396 \:) matched_opts=$((${matched_opts} + 1));
380 matched_offset[${matched_opts}]="${i}";; 397 matched_offset[${matched_opts}]="${i}";;
381 \)) matched_opts=$((${matched_opts} + 1)); 398 \)) matched_opts=$((${matched_opts} + 1));
382 matched_offset[${matched_opts}]="${i}";; 399 matched_offset[${matched_opts}]="${i}";;
383 esac 400 esac
384 done 401 done
385 402
386 for((i=0; i<=${matched_opts}; i++)) 403 for((i=0; i<=${matched_opts}; i++))
387 do 404 do
388 # i = offset were working on 405 # i = offset were working on
389 # y = last offset 406 # y = last offset
390 # z = current offset - last offset 407 # z = current offset - last offset
394 *) y=$((${matched_offset[$((${i} - 1))]} + 1)) 411 *) y=$((${matched_offset[$((${i} - 1))]} + 1))
395 z=$((${matched_offset[${i}]} - ${matched_offset[$((${i} - 1))]})); 412 z=$((${matched_offset[${i}]} - ${matched_offset[$((${i} - 1))]}));
396 z=$((${z} - 1)) 413 z=$((${z} - 1))
397 tempvar=${test:${y}:${z}};; 414 tempvar=${test:${y}:${z}};;
398 esac 415 esac
399 416
400 case ${i} in 417 case ${i} in
401 0) result="${result} modulename:${tempvar}";; 418 0) result="${result} modulename:${tempvar}";;
402 1) result="${result} libdir:${tempvar}";; 419 1) result="${result} libdir:${tempvar}";;
403 2) result="${result} srcdir:${tempvar}";; 420 2) result="${result} srcdir:${tempvar}";;
404 3) result="${result} objdir:${tempvar}";; 421 3) result="${result} objdir:${tempvar}";;
405 esac 422 esac
406 done 423 done
407 424
408 echo ${result} 425 echo ${result}
409} 426}
410 427
411# default ebuild functions 428# default ebuild functions
412# -------------------------------- 429# --------------------------------
413 430
414linux-mod_pkg_setup() { 431linux-mod_pkg_setup() {
415 linux-info_pkg_setup; 432 linux-info_pkg_setup;
416 check_kernel_built; 433 check_kernel_built;
417 check_modules_supported; 434 strip_modulenames;
435 [[ -n ${MODULE_NAMES} ]] && check_modules_supported
418 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;
419} 441}
420 442
421linux-mod_src_compile() { 443strip_modulenames() {
422 local modulename libdir srcdir objdir i n myARCH="${ARCH}" 444 local i
423 unset ARCH
424
425 BUILD_TARGETS=${BUILD_TARGETS:-clean module}
426
427 for i in ${MODULE_IGNORE} 445 for i in ${MODULE_IGNORE}; do
428 do
429 MODULE_NAMES=${MODULE_NAMES//${i}(*} 446 MODULE_NAMES=${MODULE_NAMES//${i}(*}
430 done 447 done
448}
431 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;
432 for i in ${MODULE_NAMES} 459 for i in ${MODULE_NAMES}
433 do 460 do
434 unset libdir srcdir objdir 461 unset libdir srcdir objdir
435 for n in $(find_module_params ${i}) 462 for n in $(find_module_params ${i})
436 do 463 do
437 eval ${n/:*}=${n/*:/} 464 eval ${n/:*}=${n/*:/}
438 done 465 done
439 libdir=${libdir:-misc} 466 libdir=${libdir:-misc}
440 srcdir=${srcdir:-${S}} 467 srcdir=${srcdir:-${S}}
441 objdir=${objdir:-${srcdir}} 468 objdir=${objdir:-${srcdir}}
442 469
443 if [ ! -f "${srcdir}/.built" ]; 470 if [ ! -f "${srcdir}/.built" ];
444 then 471 then
445 cd ${srcdir} 472 cd ${srcdir}
446 einfo "Preparing ${modulename} module" 473 einfo "Preparing ${modulename} module"
447 if [[ -n ${ECONF_PARAMS} ]] 474 if [[ -n ${ECONF_PARAMS} ]]
448 then 475 then
449 econf ${ECONF_PARAMS} || \ 476 econf ${ECONF_PARAMS} || \
450 die "Unable to run econf ${ECONF_PARAMS}" 477 die "Unable to run econf ${ECONF_PARAMS}"
451 fi 478 fi
452 479
453 emake ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} \ 480 emake HOSTCC=${CC_HOSTCC} CC=${CC_CC} LDFLAGS="$(get_abi_LDFLAGS)" \
454 || die "Unable to make \
455 ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}." 481 ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS} \
482 || die "Unable to make ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}."
456 touch ${srcdir}/.built 483 touch ${srcdir}/.built
457 cd ${OLDPWD} 484 cd ${OLDPWD}
458 fi 485 fi
459 done 486 done
460 487
461 ARCH="${myARCH}" 488 ARCH="${myARCH}"
489 ABI="${myABI}"
462} 490}
463 491
464linux-mod_src_install() { 492linux-mod_src_install() {
465 local modulename libdir srcdir objdir i n 493 local modulename libdir srcdir objdir i n
466
467 for i in ${MODULE_IGNORE}
468 do
469 MODULE_NAMES=${MODULE_NAMES//${i}(*}
470 done
471 494
495 strip_modulenames;
472 for i in ${MODULE_NAMES} 496 for i in ${MODULE_NAMES}
473 do 497 do
474 unset libdir srcdir objdir 498 unset libdir srcdir objdir
475 for n in $(find_module_params ${i}) 499 for n in $(find_module_params ${i})
476 do 500 do
479 libdir=${libdir:-misc} 503 libdir=${libdir:-misc}
480 srcdir=${srcdir:-${S}} 504 srcdir=${srcdir:-${S}}
481 objdir=${objdir:-${srcdir}} 505 objdir=${objdir:-${srcdir}}
482 506
483 einfo "Installing ${modulename} module" 507 einfo "Installing ${modulename} module"
484 cd ${objdir} 508 cd ${objdir} || die "${objdir} does not exist"
485 insinto ${ROOT}lib/modules/${KV_FULL}/${libdir} 509 insinto /lib/modules/${KV_FULL}/${libdir}
486 doins ${modulename}.${KV_OBJ} 510 doins ${modulename}.${KV_OBJ} || die "doins ${modulename}.${KV_OBJ} failed"
487 cd ${OLDPWD} 511 cd ${OLDPWD}
488 512
489 generate_modulesd ${objdir}/${modulename} 513 generate_modulesd ${objdir}/${modulename}
490 done 514 done
491} 515}
492 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
493linux-mod_pkg_postinst() { 523linux-mod_pkg_postinst() {
494 update_depmod; 524 ${UPDATE_DEPMOD} && update_depmod;
495 update_modules; 525 ${UPDATE_MODULES} && update_modules;
496 display_postinst; 526 ${UPDATE_MODULEDB} && update_moduledb;
497} 527}
528
529linux-mod_pkg_postrm() {
530 remove_moduledb;
531}

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

  ViewVC Help
Powered by ViewVC 1.1.20