From patchwork Tue Feb 19 21:31:52 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: rootfs_ipkg: fix BAD_RECOMMENDATIONS handling Date: Tue, 19 Feb 2013 21:31:52 -0000 From: Ross Burton X-Patchwork-Id: 44873 Message-Id: <1361309512-4367-1-git-send-email-ross.burton@intel.com> To: openembedded-core@lists.openembedded.org If multiple versions of the same package are in the package feed then the generate status file would only contains a "deinstall" status for the last one, which meant that BAD_RECOMMENDATIONS wouldn't actually work. Use awk instead of grep and stop reading when we reach a newline, so we only ever output a single stanza. Signed-off-by: Ross Burton --- meta/classes/rootfs_ipk.bbclass | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/meta/classes/rootfs_ipk.bbclass b/meta/classes/rootfs_ipk.bbclass index 135bb60..a609944 100644 --- a/meta/classes/rootfs_ipk.bbclass +++ b/meta/classes/rootfs_ipk.bbclass @@ -46,9 +46,13 @@ fakeroot rootfs_ipk_do_rootfs () { for i in ${BAD_RECOMMENDATIONS}; do pkginfo="`opkg-cl ${OPKG_ARGS} info $i`" if [ ! -z "$pkginfo" ]; then - echo "$pkginfo" | grep -e '^Package:' -e '^Architecture:' -e '^Version:' >> $STATUS - echo "Status: deinstall hold not-installed" >> $STATUS - echo >> $STATUS + # Take just the first package stanza as otherwise only + # the last one will have the right Status line. + echo "$pkginfo" | awk "/^Package:/ { print } \ + /^Architecture:/ { print } \ + /^Version:/ { print } \ + /^$/ { exit } \ + END { print \"Status: deinstall hold not-installed\n\" }" - >> $STATUS else echo "Requested ignored recommendation $i is not a package" fi