mirror of
https://git.yoctoproject.org/poky
synced 2026-02-05 16:28:43 +01:00
python-smartpm: add ignore-recommends package flag
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>
This commit is contained in:
committed by
Richard Purdie
parent
e8dfbb092c
commit
c1a74368ee
@@ -0,0 +1,60 @@
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user