Add ignore-recommends flag support Allow configuring recommends on specific packages to be ignored. Upstream-Status: Pending Signed-off-by: Paul Eggleton --- 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