blob: 5d5c6f4346d009f899234727343720512895b9c5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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
|