[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openembedded-core
Subject:    [OE-core] [PATCH 2/2 v2] module.bbclass: Create a new depmodwrapper to assist cross-installs
From:       mark.hatle () windriver ! com (Mark Hatle)
Date:       2013-02-28 21:10:31
Message-ID: 512FC7C7.10303 () windriver ! com
[Download RAW message or body]

On 2/28/13 3:04 PM, Otavio Salvador wrote:
> On Thu, Feb 28, 2013 at 5:48 PM, Mark Hatle <mark.hatle at windriver.com> 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 at windriver.com>
> > Signed-off-by: Bruce Ashfield <bruce.ashfield at 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 |   44 ++++++++++++++++++++
> 
> Why you don't put the script in a file and get it in SRC_URI? It is
> bad to read the script content in the recipe.

Two reasons, the qemuwrapper doesn't do that and that is what I started with for 
an example... and with the ${STAGING_KERNEL_DIR} needing to be changed for each 
build, it seemed easier to avoid a sed operation on a src file, when I could 
just write it out inline.

(I don't see much of an advantage of having this code separately either...)


> > 4 files changed, 52 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..fd7d67d
> > --- /dev/null
> > +++ b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb
> > @@ -0,0 +1,44 @@
> > +DESCRIPTION = "Depmod wrapper script"
> > +LICENSE = "MIT"
> > +PR = "r0"
> > +LIC_FILES_CHKSUM = \
> > "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +
> > +# We need to evaluate it to the final path for vardeps to
> > +# work properly.
> > +STAGING_KERNEL_DIR := "${STAGING_KERNEL_DIR}"
> > +
> > +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" -a "\$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
> > 
> > 
> > _______________________________________________
> > Openembedded-core mailing list
> > Openembedded-core at lists.openembedded.org
> > http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core
> 
> 
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic