[OE-core] [oe-commits] Mark Hatle : module.bbclass: Create a new depmodwrapper to assist cross-installs

Martin Jansa martin.jansa at gmail.com
Sat Mar 2 16:06:39 UTC 2013


On Fri, Mar 01, 2013 at 02:44:05PM +0000, git at git.openembedded.org wrote:
> Module: openembedded-core.git
> Branch: master
> Commit: b18c61bae4d7161c087a004bba3c696006f7a2f6
> URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=b18c61bae4d7161c087a004bba3c696006f7a2f6
> 
> Author: Mark Hatle <mark.hatle at windriver.com>
> Date:   Thu Feb 28 15:51:51 2013 -0600
> 
> module.bbclass: Create a new depmodwrapper to assist cross-installs

I've reopened
https://bugzilla.yoctoproject.org/show_bug.cgi?id=3962
because this does not work correctly with multiple MACHINES.

> 
> 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>
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> 
> ---
> 
>  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(-)
> 
> diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
> index dd78acb..19564d8 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 ${MLPREFIX}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}
> +}
> 
> 
> _______________________________________________
> Openembedded-commits mailing list
> Openembedded-commits at lists.openembedded.org
> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-commits

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20130302/55e43134/attachment-0002.sig>


More information about the Openembedded-core mailing list