* [PATCH 2/2 v4] module.bbclass: Create a new depmodwrapper to assist cross-installs
@ 2013-02-28 21:51 Mark Hatle
2013-02-28 22:00 ` Mark Hatle
0 siblings, 1 reply; 2+ messages in thread
From: Mark Hatle @ 2013-02-28 21:51 UTC (permalink / raw)
To: openembedded-core
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 ]
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
---
meta/classes/image.bbclass | 4 +-
meta/classes/kernel.bbclass | 8 ++--
meta/classes/module.bbclass | 4 +-
.../recipes-kernel/kmod/depmodwrapper-cross_1.0.bb | 43 ++++++++++++++++++++
4 files changed, 51 insertions(+), 8 deletions(-)
create mode 100644 meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index dd78acb..af17331 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -10,7 +10,7 @@ inherit gzipnative
LICENSE = "MIT"
PACKAGES = ""
-DEPENDS += "${MLPREFIX}qemuwrapper-cross"
+DEPENDS += "${MLPREFIX}qemuwrapper-cross 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}
diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
index e8c585b..2bdc2fc 100644
--- a/meta/classes/kernel.bbclass
+++ b/meta/classes/kernel.bbclass
@@ -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
}
diff --git a/meta/classes/module.bbclass b/meta/classes/module.bbclass
index e2174a1..2c1888c 100644
--- a/meta/classes/module.bbclass
+++ b/meta/classes/module.bbclass
@@ -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
}
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 0000000..efb1cac
--- /dev/null
+++ b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
@@ -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}
+}
--
1.7.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH 2/2 v4] module.bbclass: Create a new depmodwrapper to assist cross-installs
2013-02-28 21:51 [PATCH 2/2 v4] module.bbclass: Create a new depmodwrapper to assist cross-installs Mark Hatle
@ 2013-02-28 22:00 ` Mark Hatle
0 siblings, 0 replies; 2+ messages in thread
From: Mark Hatle @ 2013-02-28 22:00 UTC (permalink / raw)
To: openembedded-core
V4 - fix the usage check
V3 - change to SSTATE_SCAN_FILES
V2 - add additional kernel-abiversion check
Sorry for so many versions. This should be the final one.
--Mark
On 2/28/13 3:51 PM, Mark Hatle wrote:
> 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 ]
>
> Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
> ---
> meta/classes/image.bbclass | 4 +-
> meta/classes/kernel.bbclass | 8 ++--
> meta/classes/module.bbclass | 4 +-
> .../recipes-kernel/kmod/depmodwrapper-cross_1.0.bb | 43 ++++++++++++++++++++
> 4 files changed, 51 insertions(+), 8 deletions(-)
> create mode 100644 meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
>
> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> index dd78acb..af17331 100644
> --- a/meta/classes/image.bbclass
> +++ b/meta/classes/image.bbclass
> @@ -10,7 +10,7 @@ inherit gzipnative
>
> LICENSE = "MIT"
> PACKAGES = ""
> -DEPENDS += "${MLPREFIX}qemuwrapper-cross"
> +DEPENDS += "${MLPREFIX}qemuwrapper-cross 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}
> diff --git a/meta/classes/kernel.bbclass b/meta/classes/kernel.bbclass
> index e8c585b..2bdc2fc 100644
> --- a/meta/classes/kernel.bbclass
> +++ b/meta/classes/kernel.bbclass
> @@ -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
> }
>
> diff --git a/meta/classes/module.bbclass b/meta/classes/module.bbclass
> index e2174a1..2c1888c 100644
> --- a/meta/classes/module.bbclass
> +++ b/meta/classes/module.bbclass
> @@ -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
> }
>
> 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 0000000..efb1cac
> --- /dev/null
> +++ b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
> @@ -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}
> +}
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-02-28 22:17 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-28 21:51 [PATCH 2/2 v4] module.bbclass: Create a new depmodwrapper to assist cross-installs Mark Hatle
2013-02-28 22:00 ` Mark Hatle
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox