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:
parent
be248b0222
commit
86d6ec51f0
|
@ -10,7 +10,7 @@ inherit gzipnative
|
|||
|
||||
LICENSE = "MIT"
|
||||
PACKAGES = ""
|
||||
DEPENDS += "${MLPREFIX}qemuwrapper-cross"
|
||||
DEPENDS += "${MLPREFIX}qemuwrapper-cross ${MLPREFIX}depmodwrapper-cross"
|
||||
RDEPENDS += "${IMAGE_INSTALL} ${LINGUAS_INSTALL} ${NORMAL_FEATURE_INSTALL} ${ROOTFS_BOOTSTRAP_INSTALL}"
|
||||
RRECOMMENDS += "${NORMAL_FEATURE_INSTALL_OPTIONAL}"
|
||||
|
||||
|
@ -283,7 +283,7 @@ fakeroot do_rootfs () {
|
|||
KERNEL_VERSION=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion`
|
||||
|
||||
mkdir -p ${IMAGE_ROOTFS}/lib/modules/$KERNEL_VERSION
|
||||
depmod -a -b ${IMAGE_ROOTFS} -F ${STAGING_KERNEL_DIR}/System.map-$KERNEL_VERSION $KERNEL_VERSION
|
||||
depmodwrapper -a -b ${IMAGE_ROOTFS} $KERNEL_VERSION
|
||||
fi
|
||||
|
||||
${IMAGE_PREPROCESS_COMMAND}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
inherit linux-kernel-base module_strip
|
||||
|
||||
PROVIDES += "virtual/kernel"
|
||||
DEPENDS += "virtual/${TARGET_PREFIX}gcc kmod-native"
|
||||
DEPENDS += "virtual/${TARGET_PREFIX}gcc kmod-native depmodwrapper-cross"
|
||||
|
||||
# we include gcc above, we dont need virtual/libc
|
||||
INHIBIT_DEFAULT_DEPS = "1"
|
||||
|
@ -272,7 +272,7 @@ if [ ! -e "$D/lib/modules/${KERNEL_VERSION}" ]; then
|
|||
mkdir -p $D/lib/modules/${KERNEL_VERSION}
|
||||
fi
|
||||
if [ -n "$D" ]; then
|
||||
depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION}
|
||||
depmodwrapper -a -b $D ${KERNEL_VERSION}
|
||||
else
|
||||
depmod -a ${KERNEL_VERSION}
|
||||
fi
|
||||
|
@ -282,7 +282,7 @@ pkg_postinst_modules () {
|
|||
if [ -z "$D" ]; then
|
||||
depmod -a ${KERNEL_VERSION}
|
||||
else
|
||||
depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION}
|
||||
depmodwrapper -a -b $D ${KERNEL_VERSION}
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -290,7 +290,7 @@ pkg_postrm_modules () {
|
|||
if [ -z "$D" ]; then
|
||||
depmod -a ${KERNEL_VERSION}
|
||||
else
|
||||
depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION}
|
||||
depmodwrapper -a -b $D ${KERNEL_VERSION}
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ module_pkg_postinst () {
|
|||
if [ -z "$D" ]; then
|
||||
depmod -a ${KERNEL_VERSION}
|
||||
else
|
||||
depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION}
|
||||
depmodwrapper -a -b $D ${KERNEL_VERSION}
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ module_pkg_postrm () {
|
|||
if [ -z "$D" ]; then
|
||||
depmod -a ${KERNEL_VERSION}
|
||||
else
|
||||
depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION}
|
||||
depmodwrapper -a -b $D ${KERNEL_VERSION}
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
|
@ -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}
|
||||
}
|
Loading…
Reference in New Issue