From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail.windriver.com ([147.11.1.11]) by linuxtogo.org with esmtp (Exim 4.72) (envelope-from ) id 1UBB0C-0006Y1-S1 for openembedded-core@lists.openembedded.org; Thu, 28 Feb 2013 22:27:02 +0100 Received: from ALA-HCA.corp.ad.wrs.com (ala-hca.corp.ad.wrs.com [147.11.189.40]) by mail.windriver.com (8.14.5/8.14.3) with ESMTP id r1SLAXma020812 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Thu, 28 Feb 2013 13:10:33 -0800 (PST) Received: from msp-dhcp49.wrs.com (172.25.34.49) by ALA-HCA.corp.ad.wrs.com (147.11.189.50) with Microsoft SMTP Server id 14.2.328.9; Thu, 28 Feb 2013 13:10:33 -0800 Message-ID: <512FC7C7.10303@windriver.com> Date: Thu, 28 Feb 2013 15:10:31 -0600 From: Mark Hatle Organization: Wind River Systems User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:17.0) Gecko/20130216 Thunderbird/17.0.3 MIME-Version: 1.0 To: Otavio Salvador References: <1362084537-28079-1-git-send-email-mark.hatle@windriver.com> In-Reply-To: Cc: Patches and discussions about the oe-core layer Subject: Re: [PATCH 2/2 v2] 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:27:04 -0000 Content-Type: text/plain; charset="ISO-8859-1"; format=flowed Content-Transfer-Encoding: 7bit On 2/28/13 3:04 PM, Otavio Salvador wrote: > On Thu, Feb 28, 2013 at 5:48 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 >> 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 | 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@lists.openembedded.org >> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-core > > >