mirror of
https://git.yoctoproject.org/poky
synced 2026-05-04 22:39:49 +02:00
With the rpm package backend enabled, running: bitbake <image> bitbake virtual/kernel -c clean bitbake <image> -c rootfs -f results in an image with incorrect kernel module dependency information. The problem is that the System.map and kernel-abiversion files are needed for depmod and after the recent kernel changes, these are no longer in sstate. Its reasonable to require the kernel to unpack/build if you're about to build a module against it. It is not reasonable to require this just to build a rootfs. Therefore stash the needed files specifically for depmod. Also fix some STAGING_KERNEL_DIR references which were incorrect, found whilst sorting through his change. (From OE-Core rev: b851504dcf5e147c9efb1c7b6a4d22c1a1a87cd7) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
47 lines
1.7 KiB
BlitzBasic
47 lines
1.7 KiB
BlitzBasic
SUMMARY = "Wrapper script for the Linux kernel module dependency indexer"
|
|
LICENSE = "MIT"
|
|
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
|
|
|
|
INHIBIT_DEFAULT_DEPS = "1"
|
|
# The kernel and the staging dir for it is machine specific
|
|
PACKAGE_ARCH = "${MACHINE_ARCH}"
|
|
|
|
# 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_DIR_TARGET}${datadir}/kernel-depmod/kernel-abiversion ]; then
|
|
echo "Unable to read: ${STAGING_DIR_TARGET}${datadir}/kernel-depmod/kernel-abiversion" >&2
|
|
else
|
|
kernelabi=\$(cat ${STAGING_DIR_TARGET}${datadir}/kernel-depmod/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_DIR_TARHET}${datadir}/kernel-depmod/System.map-\$4 ]; then
|
|
echo "Unable to read: ${STAGING_DIR_TARGET}${datadir}/kernel-depmod/System.map-\$4" >&2
|
|
exec env depmod "\$1" "\$2" "\$3" "\$4"
|
|
else
|
|
exec env depmod "\$1" "\$2" "\$3" -F "${STAGING_DIR_TARGET}${datadir}/kernel-depmod/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}
|
|
}
|