Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Andreas Oberritter <obi@opendreambox.org>
To: openembedded-core@lists.openembedded.org
Subject: [PATCH 22/33] package_manager/deb: implement BAD_RECOMMENDATIONS
Date: Tue,  6 Dec 2016 12:49:40 +0100	[thread overview]
Message-ID: <1481024991-5882-23-git-send-email-obi@opendreambox.org> (raw)
In-Reply-To: <1481024991-5882-1-git-send-email-obi@opendreambox.org>

Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
---
 meta/classes/rootfs_deb.bbclass |  6 ------
 meta/lib/oe/package_manager.py  | 27 +++++++++++++++++++++++++++
 meta/lib/oe/rootfs.py           |  2 ++
 3 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/meta/classes/rootfs_deb.bbclass b/meta/classes/rootfs_deb.bbclass
index f79fca6..18d0b83 100644
--- a/meta/classes/rootfs_deb.bbclass
+++ b/meta/classes/rootfs_deb.bbclass
@@ -13,12 +13,6 @@ do_rootfs[vardeps] += "PACKAGE_FEED_URIS"
 do_rootfs[lockfiles] += "${DEPLOY_DIR_DEB}/deb.lock"
 do_populate_sdk[lockfiles] += "${DEPLOY_DIR_DEB}/deb.lock"
 
-python rootfs_deb_bad_recommendations() {
-    if d.getVar("BAD_RECOMMENDATIONS", True):
-        bb.warn("Debian package install does not support BAD_RECOMMENDATIONS")
-}
-do_rootfs[prefuncs] += "rootfs_deb_bad_recommendations"
-
 DEB_POSTPROCESS_COMMANDS = ""
 
 opkglibdir = "${localstatedir}/lib/opkg"
diff --git a/meta/lib/oe/package_manager.py b/meta/lib/oe/package_manager.py
index b18148b..6c5b7ef 100644
--- a/meta/lib/oe/package_manager.py
+++ b/meta/lib/oe/package_manager.py
@@ -2198,6 +2198,33 @@ class DpkgPM(OpkgDpkgPM):
 
         return tmp_dir
 
+    def handle_bad_recommendations(self):
+        bad_recommendations = (self.d.getVar("BAD_RECOMMENDATIONS", True) or "").strip()
+        if not bad_recommendations:
+            return
+
+        status_file = self.target_rootfs + "/var/lib/dpkg/status"
+
+        with open(status_file + ".tmp", "w") as status:
+            for pkg in bad_recommendations.split():
+                pkg_info = ('apt-cache', 'show', pkg)
+
+                try:
+                    output = subprocess.check_output(pkg_info, stderr=subprocess.STDOUT).decode("utf-8")
+                except subprocess.CalledProcessError as e:
+                    bb.fatal("Cannot get package info. Command '%s' "
+                             "returned %d:\n%s" % (' '.join(pkg_info), e.returncode, e.output))
+
+                for line in output.splitlines():
+                    if not line:
+                        status.write("Status: hold ok not-installed\n\n")
+                        break
+
+                    if line.startswith(' ') or line.split(': ', 1)[0] not in ('Filename', 'Size', 'MD5sum', 'MSDOS-Filename'):
+                        status.write(line + "\n")
+
+        os.rename(status_file + ".tmp", status_file)
+
 def generate_index_files(d):
     classes = d.getVar('PACKAGE_CLASSES', True).replace("package_", "").split()
 
diff --git a/meta/lib/oe/rootfs.py b/meta/lib/oe/rootfs.py
index 4c82456..b2bb67b 100644
--- a/meta/lib/oe/rootfs.py
+++ b/meta/lib/oe/rootfs.py
@@ -663,6 +663,8 @@ class DpkgRootfs(DpkgOpkgRootfs):
 
         self.pm.update()
 
+        self.pm.handle_bad_recommendations()
+
         if self.progress_reporter:
             self.progress_reporter.next_stage()
 
-- 
2.7.4



  parent reply	other threads:[~2016-12-06 11:50 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-12-06 11:49 [PATCH 00/33] Accumulated patches for deb packaging Andreas Oberritter
2016-12-06 11:49 ` [PATCH 01/33] dpkg: implement offline mode for update-alternatives Andreas Oberritter
2016-12-06 18:31   ` Burton, Ross
2016-12-06 11:49 ` [PATCH 02/33] dpkg: update-alternatives-dpkg should conflict with other providers Andreas Oberritter
2016-12-06 19:52   ` Burton, Ross
2016-12-07  1:30     ` Andreas Oberritter
2016-12-08 16:16       ` Burton, Ross
2016-12-08 19:22         ` Andreas Oberritter
2016-12-22 13:37           ` Andreas Oberritter
2016-12-06 11:49 ` [PATCH 03/33] dpkg-native: hardcode SYSCONFDIR to /etc in update-alternatives Andreas Oberritter
2016-12-06 15:39   ` Burton, Ross
2016-12-06 16:08     ` Andreas Oberritter
2016-12-06 16:12       ` Burton, Ross
2016-12-06 16:37         ` Andreas Oberritter
2016-12-06 17:07           ` Burton, Ross
2016-12-06 11:49 ` [PATCH 04/33] apt-native: Use option --force-script-chrootless for rootfs Andreas Oberritter
2016-12-06 11:49 ` [PATCH 05/33] package_manager/deb: pass option --force-script-chrootless to dpkg Andreas Oberritter
2016-12-06 11:49 ` [PATCH 06/33] debianutils: Allow native builds Andreas Oberritter
2016-12-06 11:49 ` [PATCH 07/33] apt-native: merge apt-native.inc into .bb Andreas Oberritter
2016-12-06 11:49 ` [PATCH 08/33] apt: merge apt-package.inc " Andreas Oberritter
2016-12-06 11:49 ` [PATCH 09/33] apt-native: use sed to prepare apt.conf.sample Andreas Oberritter
2016-12-06 11:49 ` [PATCH 10/33] apt: use default packaging rules for manpages Andreas Oberritter
2016-12-06 11:49 ` [PATCH 11/33] apt: use default packaging rules for base package, prepend apt-utils Andreas Oberritter
2016-12-06 11:49 ` [PATCH 12/33] apt: use default packaging rules for -dev package Andreas Oberritter
2016-12-06 11:49 ` [PATCH 13/33] apt: rewrite do_install Andreas Oberritter
2016-12-06 11:49 ` [PATCH 14/33] apt-native: drop obsolete patches Andreas Oberritter
2016-12-06 11:49 ` [PATCH 15/33] apt: merge with apt-native Andreas Oberritter
2016-12-06 11:49 ` [PATCH 16/33] apt: merge apt.inc into .bb Andreas Oberritter
2016-12-06 11:49 ` [PATCH 17/33] apt: group variables (license, configuration, packaging) Andreas Oberritter
2016-12-06 11:49 ` [PATCH 18/33] apt: more fine-grained packaging Andreas Oberritter
2016-12-06 11:49 ` [PATCH 19/33] apt: recommend gnupg Andreas Oberritter
2016-12-06 11:49 ` [PATCH 20/33] package_manager/deb: let apt-get handle postinst scripts Andreas Oberritter
2016-12-06 17:26   ` Burton, Ross
2016-12-06 18:20     ` Andreas Oberritter
2016-12-06 18:24       ` Burton, Ross
2016-12-06 11:49 ` [PATCH 21/33] package_manager/deb: create Packages.xz Andreas Oberritter
2016-12-06 17:22   ` Burton, Ross
2016-12-06 18:41     ` Andreas Oberritter
2016-12-06 18:46       ` Burton, Ross
2016-12-07  1:24         ` Andreas Oberritter
2016-12-06 11:49 ` Andreas Oberritter [this message]
2016-12-06 11:49 ` [PATCH 23/33] dpkg: use PACKAGECONFIG Andreas Oberritter
2016-12-06 11:49 ` [PATCH 24/33] dpkg: set license field to more common "GPLv2+" Andreas Oberritter
2016-12-06 11:49 ` [PATCH 25/33] dpkg: clean-up packaging of start-stop-daemon Andreas Oberritter
2016-12-06 11:49 ` [PATCH 26/33] dpkg: remove unneeded do_configure override Andreas Oberritter
2016-12-06 11:49 ` [PATCH 27/33] dpkg: simplify replacing perl interpreter in scripts Andreas Oberritter
2016-12-06 11:49 ` [PATCH 28/33] dpkg: update packages and files to match Debian more closely Andreas Oberritter
2016-12-06 20:13   ` Burton, Ross
2016-12-07  1:41     ` Andreas Oberritter
2016-12-06 11:49 ` [PATCH 29/33] dpkg: always install dpkg-configure.service Andreas Oberritter
2016-12-06 11:49 ` [PATCH 30/33] dpkg: use correct path for perl libraries Andreas Oberritter
2016-12-06 11:49 ` [PATCH 31/33] package_deb.bbclass: compress control.tar with the same algorithm as data.tar Andreas Oberritter
2016-12-06 11:49 ` [PATCH 32/33] apt: fix rpath error during configure Andreas Oberritter
2016-12-06 11:49 ` [PATCH 33/33] apt: dselect depends on perl Andreas Oberritter
2016-12-06 14:36 ` [PATCH 00/33] Accumulated patches for deb packaging Burton, Ross
2016-12-06 16:00   ` Andreas Oberritter
2016-12-07 12:25 ` Alexander Kanavin
2016-12-07 15:30   ` Andreas Oberritter
2016-12-07 16:02     ` Alexander Kanavin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1481024991-5882-23-git-send-email-obi@opendreambox.org \
    --to=obi@opendreambox.org \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox