From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from dan.rpsys.net ([93.97.175.187]) by linuxtogo.org with esmtp (Exim 4.72) (envelope-from ) id 1UBAkM-0005xL-Do for openembedded-core@lists.openembedded.org; Thu, 28 Feb 2013 22:10:36 +0100 Received: from localhost (dan.rpsys.net [127.0.0.1]) by dan.rpsys.net (8.14.4/8.14.4/Debian-2.1ubuntu1) with ESMTP id r1SL1axw025020; Thu, 28 Feb 2013 21:01:36 GMT X-Virus-Scanned: Debian amavisd-new at dan.rpsys.net Received: from dan.rpsys.net ([127.0.0.1]) by localhost (dan.rpsys.net [127.0.0.1]) (amavisd-new, port 10024) with LMTP id oM8H-rED-B9y; Thu, 28 Feb 2013 21:01:36 +0000 (GMT) Received: from [192.168.3.10] (rpvlan0 [192.168.3.10]) (authenticated bits=0) by dan.rpsys.net (8.14.4/8.14.4/Debian-2.1ubuntu1) with ESMTP id r1SL1RhI025016 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NOT); Thu, 28 Feb 2013 21:01:30 GMT Message-ID: <1362084834.5119.115.camel@ted> From: Richard Purdie To: Mark Hatle Date: Thu, 28 Feb 2013 20:53:54 +0000 In-Reply-To: <1362074946-7062-3-git-send-email-mark.hatle@windriver.com> References: <1362074946-7062-1-git-send-email-mark.hatle@windriver.com> <1362074946-7062-3-git-send-email-mark.hatle@windriver.com> X-Mailer: Evolution 3.6.3-1 Mime-Version: 1.0 Cc: openembedded-core@lists.openembedded.org Subject: Re: [PATCH 2/2] module.bbclass: Create a new depmodwrapper to assist cross-installs X-BeenThere: openembedded-core@lists.openembedded.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: Patches and discussions about the oe-core layer List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Feb 2013 21:10:46 -0000 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit On Thu, 2013-02-28 at 12:09 -0600, 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 > Signed-off-by: Bruce Ashfield > --- > meta/classes/image.bbclass | 4 +- > meta/classes/kernel.bbclass | 8 ++-- > meta/classes/module.bbclass | 4 +- > .../recipes-kernel/kmod/depmodwrapper-cross_1.0.bb | 34 ++++++++++++++++++++ > 4 files changed, 42 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..646c4cd > --- /dev/null > +++ b/meta/recipes-kernel/kmod/depmodwrapper-cross_1.0.bb > @@ -0,0 +1,34 @@ > +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}" Please get rid of the above line. Really. You do not need to do this. I've told you this already and I do mean it. No, it won't show up in the sstate dependencies directly but the sed run over text files containing "STAGING_DIR" expressions will take care of relocating it, hence it doesn't need to be there. If that doesn't happen, please say why the sed expressions don't catch it. Cheers, Richard > +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}/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} > +}