From patchwork Mon Jul 11 12:14:15 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Add support for BAD_RECOMMENDATIONS to rootfs_ipk Date: Mon, 11 Jul 2011 12:14:15 -0000 From: Chris Elston X-Patchwork-Id: 7307 Message-Id: <1310386455.10512.185.camel@desktop.home> To: Phil Blundell Cc: Patches and discussions about the oe-core layer On Mon, 2011-07-11 at 10:00 +0100, Phil Blundell wrote: > On Mon, 2011-07-11 at 09:53 +0100, Chris Elston wrote: > > + STATUS=${IMAGE_ROOTFS}${opkglibdir}/status > > + mkdir -p `dirname ${STATUS}` > > Not that it's a massive deal, but this call to "dirname" is redundant > since dirname ${STATUS} is ${IMAGE_ROOTFS}${opkglibdir} by definition. > > > + # prime the status file with bits that we don't want > > + for i in ${BAD_RECOMMENDATIONS}; do > > + infln="`opkg-cl ${IPKG_ARGS} info $i | grep -e > > '^Package:' -e '^Architecture:' -e '^Version:'`" > > + if [ ! -z "$infln" ]; then > > + echo "$infln" >> $STATUS > > Reading this again I wonder what would happen if one of the packages > named in BAD_RECOMMENDATIONS doesn't actually exist. Can you verify > that this code does something sensible in that case? You were right, Phil - it did fail in the case that a BAD_RECOMMENDATION didn't exist. Patch updated to take account of that case, and also removed the dirname call. Saul, resubmission below. Cheers, Chris. --- As discussed on IRC on 30/06/11, this patch adds support for BAD_RECOMMENDATIONS to rootfs_ipk, which is a list of packages NOT to install if suggested or recommended by a recipe. Taken from http://thread.gmane.org/gmane.comp.handhelds.openembedded/30417. Note that current support for this in oe.dev may also be broken, depending on the version of opkg in use. Signed-off-by: Chris Elston --- meta/classes/rootfs_ipk.bbclass | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/meta/classes/rootfs_ipk.bbclass b/meta/classes/rootfs_ipk.bbclass index edd84fb..1540432 100644 --- a/meta/classes/rootfs_ipk.bbclass +++ b/meta/classes/rootfs_ipk.bbclass @@ -20,6 +20,9 @@ OPKG_POSTPROCESS_COMMANDS = "ipk_insert_feed_uris" opkglibdir = "${localstatedir}/lib/opkg" +# Which packages to not install on the basis of a recommendation +BAD_RECOMMENDATIONS ?= "" + fakeroot rootfs_ipk_do_rootfs () { set -x @@ -29,6 +32,23 @@ fakeroot rootfs_ipk_do_rootfs () { ${OPKG_PREPROCESS_COMMANDS} mkdir -p ${T}/ + + STATUS=${IMAGE_ROOTFS}${opkglibdir}/status + mkdir -p ${IMAGE_ROOTFS}${opkglibdir} + + opkg-cl ${IPKG_ARGS} update + + # prime the status file with bits that we don't want + for i in ${BAD_RECOMMENDATIONS}; do + pkginfo="`opkg-cl ${IPKG_ARGS} info $i`" + if [ ! -z "$pkginfo" ]; then + echo "$pkginfo" | grep -e '^Package:' -e '^Architecture:' -e '^Version:' >> $STATUS + echo "Status: deinstall ok not-installed" >> $STATUS + echo >> $STATUS + else + echo "Requested ignored recommendation $i is not a package" + fi + done #install export INSTALL_PACKAGES_ATTEMPTONLY_IPK="${PACKAGE_INSTALL_ATTEMPTONLY}"