summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Hatle <mark.hatle@windriver.com>2013-02-28 15:51:51 -0600
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-03-01 14:44:40 +0000
commit86d6ec51f0e1a4f5335d72928ef14ea1335d49b0 (patch)
tree0da20526e2d0583ddee24cd38d5717d30032530f
parentbe248b0222bda151ae5f94be6bb8a53e192ecded (diff)
downloadpoky-86d6ec51f0e1a4f5335d72928ef14ea1335d49b0.tar.gz
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>
-rw-r--r--meta/classes/image.bbclass4
-rw-r--r--meta/classes/kernel.bbclass8
-rw-r--r--meta/classes/module.bbclass4
-rw-r--r--meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb43
4 files changed, 51 insertions, 8 deletions
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index dd78acb7be..19564d81b6 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -10,7 +10,7 @@ inherit gzipnative
10 10
11LICENSE = "MIT" 11LICENSE = "MIT"
12PACKAGES = "" 12PACKAGES = ""
13DEPENDS += "${MLPREFIX}qemuwrapper-cross" 13DEPENDS += "${MLPREFIX}qemuwrapper-cross ${MLPREFIX}depmodwrapper-cross"
14RDEPENDS += "${IMAGE_INSTALL} ${LINGUAS_INSTALL} ${NORMAL_FEATURE_INSTALL} ${ROOTFS_BOOTSTRAP_INSTALL}" 14RDEPENDS += "${IMAGE_INSTALL} ${LINGUAS_INSTALL} ${NORMAL_FEATURE_INSTALL} ${ROOTFS_BOOTSTRAP_INSTALL}"
15RRECOMMENDS += "${NORMAL_FEATURE_INSTALL_OPTIONAL}" 15RRECOMMENDS += "${NORMAL_FEATURE_INSTALL_OPTIONAL}"
16 16
@@ -283,7 +283,7 @@ fakeroot do_rootfs () {
283 KERNEL_VERSION=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion` 283 KERNEL_VERSION=`cat ${STAGING_KERNEL_DIR}/kernel-abiversion`
284 284
285 mkdir -p ${IMAGE_ROOTFS}/lib/modules/$KERNEL_VERSION 285 mkdir -p ${IMAGE_ROOTFS}/lib/modules/$KERNEL_VERSION
286 depmod -a -b ${IMAGE_ROOTFS} -F ${STAGING_KERNEL_DIR}/System.map-$KERNEL_VERSION $KERNEL_VERSION 286 depmodwrapper -a -b ${IMAGE_ROOTFS} $KERNEL_VERSION
287 fi 287 fi
288 288
289 ${IMAGE_PREPROCESS_COMMAND} 289 ${IMAGE_PREPROCESS_COMMAND}
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index e8c585bb94..2bdc2fcdc5 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -1,7 +1,7 @@
1inherit linux-kernel-base module_strip 1inherit linux-kernel-base module_strip
2 2
3PROVIDES += "virtual/kernel" 3PROVIDES += "virtual/kernel"
4DEPENDS += "virtual/${TARGET_PREFIX}gcc kmod-native" 4DEPENDS += "virtual/${TARGET_PREFIX}gcc kmod-native depmodwrapper-cross"
5 5
6# we include gcc above, we dont need virtual/libc 6# we include gcc above, we dont need virtual/libc
7INHIBIT_DEFAULT_DEPS = "1" 7INHIBIT_DEFAULT_DEPS = "1"
@@ -272,7 +272,7 @@ if [ ! -e "$D/lib/modules/${KERNEL_VERSION}" ]; then
272 mkdir -p $D/lib/modules/${KERNEL_VERSION} 272 mkdir -p $D/lib/modules/${KERNEL_VERSION}
273fi 273fi
274if [ -n "$D" ]; then 274if [ -n "$D" ]; then
275 depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION} 275 depmodwrapper -a -b $D ${KERNEL_VERSION}
276else 276else
277 depmod -a ${KERNEL_VERSION} 277 depmod -a ${KERNEL_VERSION}
278fi 278fi
@@ -282,7 +282,7 @@ pkg_postinst_modules () {
282if [ -z "$D" ]; then 282if [ -z "$D" ]; then
283 depmod -a ${KERNEL_VERSION} 283 depmod -a ${KERNEL_VERSION}
284else 284else
285 depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION} 285 depmodwrapper -a -b $D ${KERNEL_VERSION}
286fi 286fi
287} 287}
288 288
@@ -290,7 +290,7 @@ pkg_postrm_modules () {
290if [ -z "$D" ]; then 290if [ -z "$D" ]; then
291 depmod -a ${KERNEL_VERSION} 291 depmod -a ${KERNEL_VERSION}
292else 292else
293 depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION} 293 depmodwrapper -a -b $D ${KERNEL_VERSION}
294fi 294fi
295} 295}
296 296
diff --git a/meta/classes/module.bbclass b/meta/classes/module.bbclass
index e2174a16fd..2c1888c8d2 100644
--- a/meta/classes/module.bbclass
+++ b/meta/classes/module.bbclass
@@ -28,7 +28,7 @@ module_pkg_postinst () {
28if [ -z "$D" ]; then 28if [ -z "$D" ]; then
29 depmod -a ${KERNEL_VERSION} 29 depmod -a ${KERNEL_VERSION}
30else 30else
31 depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION} 31 depmodwrapper -a -b $D ${KERNEL_VERSION}
32fi 32fi
33} 33}
34 34
@@ -36,7 +36,7 @@ module_pkg_postrm () {
36if [ -z "$D" ]; then 36if [ -z "$D" ]; then
37 depmod -a ${KERNEL_VERSION} 37 depmod -a ${KERNEL_VERSION}
38else 38else
39 depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION} 39 depmodwrapper -a -b $D ${KERNEL_VERSION}
40fi 40fi
41} 41}
42 42
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 @@
1DESCRIPTION = "Depmod wrapper script"
2LICENSE = "MIT"
3PR = "r0"
4LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
5
6# We need the following for the sstate code to process the wrapper
7SSTATE_SCAN_FILES += "depmodwrapper"
8
9do_install() {
10 install -d ${D}${bindir_crossscripts}/
11
12 cat > ${D}${bindir_crossscripts}/depmodwrapper << EOF
13#!/bin/sh
14# Expected to be called as: depmodwrapper -a KERNEL_VERSION
15if [ "\$1" != "-a" -o "\$2" != "-b" ]; then
16 echo "Usage: depmodwrapper -a -b rootfs KERNEL_VERSION" >&2
17 exit 1
18fi
19if [ ! -r ${STAGING_KERNEL_DIR}/kernel-abiversion ]; then
20 echo "Unable to read: ${STAGING_KERNEL_DIR}/kernel-abiversion" >&2
21else
22 kernelabi=\$(cat ${STAGING_KERNEL_DIR}/kernel-abiversion)
23 if [ "\$kernelabi" != "\$4" ]; then
24 echo "Error: Kernel version \$4 does not match kernel-abiversion (\$kernelabi)" >&2
25 exit 1
26 fi
27fi
28
29if [ ! -r ${STAGING_KERNEL_DIR}/System.map-\$4 ]; then
30 echo "Unable to read: ${STAGING_KERNEL_DIR}/System.map-\$4" >&2
31 exec env depmod "\$1" "\$2" "\$3" "\$4"
32else
33 exec env depmod "\$1" "\$2" "\$3" -F "${STAGING_KERNEL_DIR}/System.map-\$4" "\$4"
34fi
35EOF
36 chmod +x ${D}${bindir_crossscripts}/depmodwrapper
37}
38
39SYSROOT_PREPROCESS_FUNCS += "depmodwrapper_sysroot_preprocess"
40
41depmodwrapper_sysroot_preprocess () {
42 sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts}
43}