Add ignore-recommends flag support

Allow configuring recommends on specific packages to be ignored.

Upstream-Status: Pending

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
---
 smart/commands/flag.py | 3 +++
 smart/transaction.py   | 7 ++++++-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/smart/commands/flag.py b/smart/commands/flag.py
index 8b90496..191bb11 100644
--- a/smart/commands/flag.py
+++ b/smart/commands/flag.py
@@ -47,6 +47,9 @@ Currently known flags are:
   multi-version - Flagged packages may have more than one version
                   installed in the system at the same time
                   (backend dependent).
+  ignore-recommends - Flagged packages will not be installed, if
+                  they are only recommended by a package to be
+                  installed rather than required.
 
   security      - Flagged packages are updates for security errata.
   bugfix        - Flagged packages are updates for bugfix errata.
diff --git a/smart/transaction.py b/smart/transaction.py
index dd9aa38..38eabae 100644
--- a/smart/transaction.py
+++ b/smart/transaction.py
@@ -596,12 +596,17 @@ class Transaction(object):
         # Install packages required by this one.
         for req in pkg.requires + pkg.recommends:
 
+            reqrequired = req in pkg.requires
+
             # Check if someone is already providing it.
             prvpkgs = {}
             lockedpkgs = {}
             found = False
             for prv in req.providedby:
                 for prvpkg in prv.packages:
+                    if not reqrequired:
+                        if pkgconf.testFlag("ignore-recommends", prvpkg):
+                            continue
                     if isinst(prvpkg):
                         found = True
                         break
@@ -620,7 +625,7 @@ class Transaction(object):
 
             if not prvpkgs:
                 # No packages provide it at all. Give up.
-                if req in pkg.requires:
+                if reqrequired:
                     reasons = []
                     for prv in req.providedby:
                         for prvpkg in prv.packages:
-- 
1.8.1.2

