Adds support for a flag that is saved into Smart's configuration against a package that says it should not be installed if it is only recommended by a package being installed rather than required. This will enable us to add BAD_RECOMMENDATIONS support for RPM. (From OE-Core rev: 70517fca31261c1ca4b15bb38f8960b2f95993ba) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
61 lines
2.1 KiB
Diff
61 lines
2.1 KiB
Diff
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
|
|
|