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 ]

(From OE-Core rev: b18c61bae4d7161c087a004bba3c696006f7a2f6)

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>
This commit is contained in:
Mark Hatle
2013-02-28 15:51:51 -06:00
committed by Richard Purdie
parent be248b0222
commit 86d6ec51f0
4 changed files with 51 additions and 8 deletions

View File

@@ -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}
}