Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 170474 Details for
Bug 195128
linux-mod.eclass: support building modules for all installed kernels
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Updated version
linux-mod.eclass.diff (text/plain), 5.91 KB, created by
Isakov Alexandr
on 2008-11-01 18:31:21 UTC
(
hide
)
Description:
Updated version
Filename:
MIME Type:
Creator:
Isakov Alexandr
Created:
2008-11-01 18:31:21 UTC
Size:
5.91 KB
patch
obsolete
>--- linux-mod.eclass.orig 2008-11-01 19:07:24.000000000 +0300 >+++ linux-mod.eclass 2008-11-01 21:19:08.000000000 +0300 >@@ -610,51 +610,129 @@ > linux-mod_src_compile() { > debug-print-function ${FUNCNAME} $* > >- local modulename libdir srcdir objdir i n myABI="${ABI}" >- set_arch_to_kernel >- ABI="${KERNEL_ABI}" >- >- BUILD_TARGETS=${BUILD_TARGETS:-clean module} >- strip_modulenames; >- cd "${S}" >- for i in ${MODULE_NAMES} >- do >- unset libdir srcdir objdir >- for n in $(find_module_params ${i}) >+ if has modules-rebuild ${FEATURES}; >+ then >+ find /lib/modules/ -iname build | xargs -n 1 dirname | while read k; > do >- eval ${n/:*}=${n/*:/} >- done >- libdir=${libdir:-misc} >- srcdir=${srcdir:-${S}} >- objdir=${objdir:-${srcdir}} >- >- if [ ! -f "${srcdir}/.built" ]; >- then >- cd ${srcdir} >- einfo "Preparing ${modulename} module" >- if [[ -n ${ECONF_PARAMS} ]] >- then >- econf ${ECONF_PARAMS} || \ >- die "Unable to run econf ${ECONF_PARAMS}" >+ if [ ! -e "$k/build/Makefile" ]; then >+ ewarn "Skipping ${k:13} because of missing it\`s sourcedir(Makefile)" >+ continue > fi >+ local modulename libdir srcdir objdir i n myABI="${ABI}" >+ set_arch_to_kernel >+ ABI="${KERNEL_ABI}" >+ >+ BUILD_TARGETS=${BUILD_TARGETS:-module} >+ strip_modulenames; >+ for i in ${MODULE_NAMES} >+ do >+ cd "${S}" >+ unset libdir srcdir objdir >+ for n in $(find_module_params ${i}) >+ do >+ eval ${n/:*}=${n/*:/} >+ done >+ libdir=${libdir:-misc} >+ srcdir=${srcdir:-${S}} >+ objdir=${objdir:-${srcdir}} >+ >+ cd ${srcdir} >+ einfo "Preparing ${modulename} module for ${k:13}" >+ if [[ -n ${ECONF_PARAMS} ]]; >+ then >+ if ! econf ${ECONF_PARAMS}; >+ then >+ eerror "Unable to run econf ${ECONF_PARAMS}" >+ break >+ fi >+ fi > > # This looks messy, but it is needed to handle multiple variables > # being passed in the BUILD_* stuff where the variables also have > # spaces that must be preserved. If don't do this, then the stuff > # inside the variables gets used as targets for Make, which then > # fails. >- eval "emake HOSTCC=\"$(tc-getBUILD_CC)\" \ >+ einfo `pwd` >+ if ! eval "emake HOSTCC=\"$(tc-getBUILD_CC)\" \ >+ CROSS_COMPILE=${CHOST}- \ >+ LDFLAGS=\"$(get_abi_LDFLAGS)\" \ >+ ${BUILD_FIXES} \ >+ ${BUILD_PARAMS} \ >+ ${BUILD_TARGETS} SYSOUT=\"${k}/build\" >+ SYSSRC=\"${k}/build\""; >+ then >+ eerror "Unable to emake HOSTCC="$(tc-getBUILD_CC)" >+ CROSS_COMPILE=${CHOST}- LDFLAGS="$(get_abi_LDFLAGS)" >+ ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}" >+ break >+ fi >+ einfo "Installing ${modulename} module for ${k:13}" >+ cd ${objdir} >+ insinto ${k}/${libdir} >+ if doins ${modulename}.${KV_OBJ} >+ then >+ touch ${T}/.built_one >+ else >+ eerror "doins ${modulename}.${KV_OBJ} failed" >+ break >+ fi >+ done >+ done >+ #Check if we built at least one module: >+ if [ ! -f ${T}/.built_one ]; >+ then >+ die "Fail to build any kernel module! :-(" >+ fi >+ mv ${D}/lib/modules ${T}/kernel-modules >+ else >+ local modulename libdir srcdir objdir i n myABI="${ABI}" >+ set_arch_to_kernel >+ ABI="${KERNEL_ABI}" >+ >+ BUILD_TARGETS=${BUILD_TARGETS:-clean module} >+ strip_modulenames; >+ cd "${S}" >+ for i in ${MODULE_NAMES} >+ do >+ unset libdir srcdir objdir >+ for n in $(find_module_params ${i}) >+ do >+ eval ${n/:*}=${n/*:/} >+ done >+ libdir=${libdir:-misc} >+ srcdir=${srcdir:-${S}} >+ objdir=${objdir:-${srcdir}} >+ >+ if [ ! -f "${srcdir}/.built" ]; >+ then >+ cd ${srcdir} >+ einfo "Preparing ${modulename} module" >+ if [[ -n ${ECONF_PARAMS} ]] >+ then >+ econf ${ECONF_PARAMS} || \ >+ die "Unable to run econf ${ECONF_PARAMS}" >+ fi >+ >+ # This looks messy, but it is needed to handle multiple variables >+ # being passed in the BUILD_* stuff where the variables also have >+ # spaces that must be preserved. If don't do this, then the stuff >+ # inside the variables gets used as targets for Make, which then >+ # fails. >+ eval "emake HOSTCC=\"$(tc-getBUILD_CC)\" \ > CROSS_COMPILE=${CHOST}- \ > LDFLAGS=\"$(get_abi_LDFLAGS)\" \ > ${BUILD_FIXES} \ > ${BUILD_PARAMS} \ > ${BUILD_TARGETS} " \ >- || die "Unable to emake HOSTCC="$(tc-getBUILD_CC)" CROSS_COMPILE=${CHOST}- LDFLAGS="$(get_abi_LDFLAGS)" ${BUILD_FIXES} ${BUILD_PARAMS} ${BUILD_TARGETS}" >- cd ${OLDPWD} >- touch ${srcdir}/.built >- fi >- done >- >+ || die "Unable to emake HOSTCC="$(tc-getBUILD_CC)" >+CROSS_COMPILE=${CHOST}- LDFLAGS="$(get_abi_LDFLAGS)" ${BUILD_FIXES} >+${BUILD_PARAMS} ${BUILD_TARGETS}" >+ cd ${OLDPWD} >+ touch ${srcdir}/.built >+ fi >+ done >+ fi >+ cd ${OLDPWD} > set_arch_to_portage > ABI="${myABI}" > } >@@ -676,25 +754,31 @@ > local modulename libdir srcdir objdir i n > > strip_modulenames; >- for i in ${MODULE_NAMES} >- do >- unset libdir srcdir objdir >- for n in $(find_module_params ${i}) >+ if has modules-rebuild ${FEATURES}; >+ then >+ mkdir -p ${D}/lib >+ cp -a ${T}/kernel-modules ${D}/lib/modules || die "Kernel module installation failed" >+ else >+ for i in ${MODULE_NAMES} > do >- eval ${n/:*}=${n/*:/} >- done >- libdir=${libdir:-misc} >- srcdir=${srcdir:-${S}} >- objdir=${objdir:-${srcdir}} >- >- einfo "Installing ${modulename} module" >- cd ${objdir} || die "${objdir} does not exist" >- insinto /lib/modules/${KV_FULL}/${libdir} >- doins ${modulename}.${KV_OBJ} || die "doins ${modulename}.${KV_OBJ} failed" >- cd ${OLDPWD} >+ unset libdir srcdir objdir >+ for n in $(find_module_params ${i}) >+ do >+ eval ${n/:*}=${n/*:/} >+ done >+ libdir=${libdir:-misc} >+ srcdir=${srcdir:-${S}} >+ objdir=${objdir:-${srcdir}} >+ >+ einfo "Installing ${modulename} module" >+ cd ${objdir} || die "${objdir} does not exist" >+ insinto /lib/modules/${KV_FULL}/${libdir} >+ doins ${modulename}.${KV_OBJ} || die "doins ${modulename}.${KV_OBJ} failed" >+ cd ${OLDPWD} > >- generate_modulesd ${objdir}/${modulename} >- done >+ generate_modulesd ${objdir}/${modulename} >+ done >+ fi > } > > # @FUNCTION: linux-mod_pkg_preinst
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 195128
:
132934
| 170474