diff options
author | Mark Hatle <mark.hatle@windriver.com> | 2013-02-28 15:51:51 -0600 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-03-01 14:44:33 +0000 |
commit | b18c61bae4d7161c087a004bba3c696006f7a2f6 (patch) | |
tree | c619bc591a5efb4f8f0ce9ffa4354ad96a0c32c8 /meta/recipes-kernel | |
parent | a32ea459ca168792161af2d521a14fe00cffb4b3 (diff) | |
download | openembedded-core-b18c61bae4d7161c087a004bba3c696006f7a2f6.tar.gz openembedded-core-b18c61bae4d7161c087a004bba3c696006f7a2f6.tar.bz2 openembedded-core-b18c61bae4d7161c087a004bba3c696006f7a2f6.zip |
module.bbclass: Create a new depmodwrapper to assist cross-installs
Previously the build path to STAGING_KERNEL_DIR was being embedded into the
package post install scripts. We avoid this behavior by generating a special
depmodwrapper script. This script contains that hard-coded path, ensuring
that re-use of the sstate-cache (and/or packages) will always run through the
wrapper generated by the current build with a checksum that includes
STAGING_KERNEL_DIR.
[ YOCTO #3962 ]
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-kernel')
-rw-r--r-- | meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb new file mode 100644 index 0000000000..efb1cac4c6 --- /dev/null +++ b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb @@ -0,0 +1,43 @@ +DESCRIPTION = "Depmod wrapper script" +LICENSE = "MIT" +PR = "r0" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" + +# We need the following for the sstate code to process the wrapper +SSTATE_SCAN_FILES += "depmodwrapper" + +do_install() { + install -d ${D}${bindir_crossscripts}/ + + cat > ${D}${bindir_crossscripts}/depmodwrapper << EOF +#!/bin/sh +# Expected to be called as: depmodwrapper -a KERNEL_VERSION +if [ "\$1" != "-a" -o "\$2" != "-b" ]; then + echo "Usage: depmodwrapper -a -b rootfs KERNEL_VERSION" >&2 + exit 1 +fi +if [ ! -r ${STAGING_KERNEL_DIR}/kernel-abiversion ]; then + echo "Unable to read: ${STAGING_KERNEL_DIR}/kernel-abiversion" >&2 +else + kernelabi=\$(cat ${STAGING_KERNEL_DIR}/kernel-abiversion) + if [ "\$kernelabi" != "\$4" ]; then + echo "Error: Kernel version \$4 does not match kernel-abiversion (\$kernelabi)" >&2 + exit 1 + fi +fi + +if [ ! -r ${STAGING_KERNEL_DIR}/System.map-\$4 ]; then + echo "Unable to read: ${STAGING_KERNEL_DIR}/System.map-\$4" >&2 + exec env depmod "\$1" "\$2" "\$3" "\$4" +else + exec env depmod "\$1" "\$2" "\$3" -F "${STAGING_KERNEL_DIR}/System.map-\$4" "\$4" +fi +EOF + chmod +x ${D}${bindir_crossscripts}/depmodwrapper +} + +SYSROOT_PREPROCESS_FUNCS += "depmodwrapper_sysroot_preprocess" + +depmodwrapper_sysroot_preprocess () { + sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts} +} |