summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/python/python-smartpm/smart-flag-ignore-recommends.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/python/python-smartpm/smart-flag-ignore-recommends.patch')
-rw-r--r--meta/recipes-devtools/python/python-smartpm/smart-flag-ignore-recommends.patch60
1 files changed, 60 insertions, 0 deletions
diff --git a/meta/recipes-devtools/python/python-smartpm/smart-flag-ignore-recommends.patch b/meta/recipes-devtools/python/python-smartpm/smart-flag-ignore-recommends.patch
new file mode 100644
index 0000000000..5d5c6f4346
--- /dev/null
+++ b/meta/recipes-devtools/python/python-smartpm/smart-flag-ignore-recommends.patch
@@ -0,0 +1,60 @@
1Add ignore-recommends flag support
2
3Allow configuring recommends on specific packages to be ignored.
4
5Upstream-Status: Pending
6
7Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
8---
9 smart/commands/flag.py | 3 +++
10 smart/transaction.py | 7 ++++++-
11 2 files changed, 9 insertions(+), 1 deletion(-)
12
13diff --git a/smart/commands/flag.py b/smart/commands/flag.py
14index 8b90496..191bb11 100644
15--- a/smart/commands/flag.py
16+++ b/smart/commands/flag.py
17@@ -47,6 +47,9 @@ Currently known flags are:
18 multi-version - Flagged packages may have more than one version
19 installed in the system at the same time
20 (backend dependent).
21+ ignore-recommends - Flagged packages will not be installed, if
22+ they are only recommended by a package to be
23+ installed rather than required.
24
25 security - Flagged packages are updates for security errata.
26 bugfix - Flagged packages are updates for bugfix errata.
27diff --git a/smart/transaction.py b/smart/transaction.py
28index dd9aa38..38eabae 100644
29--- a/smart/transaction.py
30+++ b/smart/transaction.py
31@@ -596,12 +596,17 @@ class Transaction(object):
32 # Install packages required by this one.
33 for req in pkg.requires + pkg.recommends:
34
35+ reqrequired = req in pkg.requires
36+
37 # Check if someone is already providing it.
38 prvpkgs = {}
39 lockedpkgs = {}
40 found = False
41 for prv in req.providedby:
42 for prvpkg in prv.packages:
43+ if not reqrequired:
44+ if pkgconf.testFlag("ignore-recommends", prvpkg):
45+ continue
46 if isinst(prvpkg):
47 found = True
48 break
49@@ -620,7 +625,7 @@ class Transaction(object):
50
51 if not prvpkgs:
52 # No packages provide it at all. Give up.
53- if req in pkg.requires:
54+ if reqrequired:
55 reasons = []
56 for prv in req.providedby:
57 for prvpkg in prv.packages:
58--
591.8.1.2
60