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