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:40 +0000 |
commit | 86d6ec51f0e1a4f5335d72928ef14ea1335d49b0 (patch) | |
tree | 0da20526e2d0583ddee24cd38d5717d30032530f | |
parent | be248b0222bda151ae5f94be6bb8a53e192ecded (diff) | |
download | poky-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.bbclass | 4 | ||||
-rw-r--r-- | meta/classes/kernel.bbclass | 8 | ||||
-rw-r--r-- | meta/classes/module.bbclass | 4 | ||||
-rw-r--r-- | meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb | 43 |
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 | ||
11 | LICENSE = "MIT" | 11 | LICENSE = "MIT" |
12 | PACKAGES = "" | 12 | PACKAGES = "" |
13 | DEPENDS += "${MLPREFIX}qemuwrapper-cross" | 13 | DEPENDS += "${MLPREFIX}qemuwrapper-cross ${MLPREFIX}depmodwrapper-cross" |
14 | RDEPENDS += "${IMAGE_INSTALL} ${LINGUAS_INSTALL} ${NORMAL_FEATURE_INSTALL} ${ROOTFS_BOOTSTRAP_INSTALL}" | 14 | RDEPENDS += "${IMAGE_INSTALL} ${LINGUAS_INSTALL} ${NORMAL_FEATURE_INSTALL} ${ROOTFS_BOOTSTRAP_INSTALL}" |
15 | RRECOMMENDS += "${NORMAL_FEATURE_INSTALL_OPTIONAL}" | 15 | RRECOMMENDS += "${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 @@ | |||
1 | inherit linux-kernel-base module_strip | 1 | inherit linux-kernel-base module_strip |
2 | 2 | ||
3 | PROVIDES += "virtual/kernel" | 3 | PROVIDES += "virtual/kernel" |
4 | DEPENDS += "virtual/${TARGET_PREFIX}gcc kmod-native" | 4 | DEPENDS += "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 |
7 | INHIBIT_DEFAULT_DEPS = "1" | 7 | INHIBIT_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} |
273 | fi | 273 | fi |
274 | if [ -n "$D" ]; then | 274 | if [ -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} |
276 | else | 276 | else |
277 | depmod -a ${KERNEL_VERSION} | 277 | depmod -a ${KERNEL_VERSION} |
278 | fi | 278 | fi |
@@ -282,7 +282,7 @@ pkg_postinst_modules () { | |||
282 | if [ -z "$D" ]; then | 282 | if [ -z "$D" ]; then |
283 | depmod -a ${KERNEL_VERSION} | 283 | depmod -a ${KERNEL_VERSION} |
284 | else | 284 | else |
285 | depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION} | 285 | depmodwrapper -a -b $D ${KERNEL_VERSION} |
286 | fi | 286 | fi |
287 | } | 287 | } |
288 | 288 | ||
@@ -290,7 +290,7 @@ pkg_postrm_modules () { | |||
290 | if [ -z "$D" ]; then | 290 | if [ -z "$D" ]; then |
291 | depmod -a ${KERNEL_VERSION} | 291 | depmod -a ${KERNEL_VERSION} |
292 | else | 292 | else |
293 | depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION} | 293 | depmodwrapper -a -b $D ${KERNEL_VERSION} |
294 | fi | 294 | fi |
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 () { | |||
28 | if [ -z "$D" ]; then | 28 | if [ -z "$D" ]; then |
29 | depmod -a ${KERNEL_VERSION} | 29 | depmod -a ${KERNEL_VERSION} |
30 | else | 30 | else |
31 | depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION} | 31 | depmodwrapper -a -b $D ${KERNEL_VERSION} |
32 | fi | 32 | fi |
33 | } | 33 | } |
34 | 34 | ||
@@ -36,7 +36,7 @@ module_pkg_postrm () { | |||
36 | if [ -z "$D" ]; then | 36 | if [ -z "$D" ]; then |
37 | depmod -a ${KERNEL_VERSION} | 37 | depmod -a ${KERNEL_VERSION} |
38 | else | 38 | else |
39 | depmod -a -b $D -F ${STAGING_KERNEL_DIR}/System.map-${KERNEL_VERSION} ${KERNEL_VERSION} | 39 | depmodwrapper -a -b $D ${KERNEL_VERSION} |
40 | fi | 40 | fi |
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 @@ | |||
1 | DESCRIPTION = "Depmod wrapper script" | ||
2 | LICENSE = "MIT" | ||
3 | PR = "r0" | ||
4 | LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" | ||
5 | |||
6 | # We need the following for the sstate code to process the wrapper | ||
7 | SSTATE_SCAN_FILES += "depmodwrapper" | ||
8 | |||
9 | do_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 | ||
15 | if [ "\$1" != "-a" -o "\$2" != "-b" ]; then | ||
16 | echo "Usage: depmodwrapper -a -b rootfs KERNEL_VERSION" >&2 | ||
17 | exit 1 | ||
18 | fi | ||
19 | if [ ! -r ${STAGING_KERNEL_DIR}/kernel-abiversion ]; then | ||
20 | echo "Unable to read: ${STAGING_KERNEL_DIR}/kernel-abiversion" >&2 | ||
21 | else | ||
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 | ||
27 | fi | ||
28 | |||
29 | if [ ! -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" | ||
32 | else | ||
33 | exec env depmod "\$1" "\$2" "\$3" -F "${STAGING_KERNEL_DIR}/System.map-\$4" "\$4" | ||
34 | fi | ||
35 | EOF | ||
36 | chmod +x ${D}${bindir_crossscripts}/depmodwrapper | ||
37 | } | ||
38 | |||
39 | SYSROOT_PREPROCESS_FUNCS += "depmodwrapper_sysroot_preprocess" | ||
40 | |||
41 | depmodwrapper_sysroot_preprocess () { | ||
42 | sysroot_stage_dir ${D}${bindir_crossscripts} ${SYSROOT_DESTDIR}${bindir_crossscripts} | ||
43 | } | ||