Gentoo Archives: gentoo-commits

From: Brian Dolbec <brian.dolbec@×××××.com>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoolkit:gentoolkit commit in: pym/gentoolkit/, pym/gentoolkit/enalyze/
Date: Thu, 07 Jun 2012 08:00:04
Message-Id: 1339055864.a9881a28da795ce2285187062bfaa822d4e55a18.dol-sen@gentoo
1 commit: a9881a28da795ce2285187062bfaa822d4e55a18
2 Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
3 AuthorDate: Thu Jun 7 07:57:44 2012 +0000
4 Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
5 CommitDate: Thu Jun 7 07:57:44 2012 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoolkit.git;a=commit;h=a9881a28
7
8 fix a bug in enalyze rebuild where it did not consider IUSE defaults for calculating the use flag differences. Discovered by mingdao in #gentoo.
9
10 ---
11 pym/gentoolkit/enalyze/lib.py | 23 +++++++++++++++--------
12 pym/gentoolkit/flag.py | 16 ++++++++++++++++
13 2 files changed, 31 insertions(+), 8 deletions(-)
14
15 diff --git a/pym/gentoolkit/enalyze/lib.py b/pym/gentoolkit/enalyze/lib.py
16 index 015e23b..9dc28a3 100644
17 --- a/pym/gentoolkit/enalyze/lib.py
18 +++ b/pym/gentoolkit/enalyze/lib.py
19 @@ -14,7 +14,7 @@ from gentoolkit.dbapi import PORTDB, VARDB
20 from gentoolkit import errors
21 from gentoolkit.keyword import reduce_keywords
22 from gentoolkit.flag import (reduce_flags, get_flags, get_all_cpv_use,
23 - filter_flags, get_installed_use, get_iuse)
24 + filter_flags, get_installed_use, get_iuse, defaulted_flags)
25 #from gentoolkit.package import Package
26
27 import portage
28 @@ -65,10 +65,12 @@ class FlagAnalyzer(object):
29 @return (plus, minus, unset) sets of USE flags
30 """
31 installed = set(self.get_used(cpv, self.target))
32 - iuse = set(reduce_flags(self.get_flags(cpv)))
33 - return self._analyse(installed, iuse)
34 + _iuse = self.get_flags(cpv)
35 + iuse = set(reduce_flags(_iuse))
36 + iuse_defaults = defaulted_flags(_iuse)
37 + return self._analyse(installed, iuse, iuse_defaults)
38
39 - def _analyse(self, installed, iuse):
40 + def _analyse(self, installed, iuse, iuse_defaults):
41 """Analyzes the supplied info and returns the flag settings
42 that differ from the defaults
43
44 @@ -78,6 +80,9 @@ class FlagAnalyzer(object):
45 @param iuse: the current ebuilds IUSE
46 """
47 defaults = self.system.intersection(iuse)
48 + # update defaults with iuse_defaults
49 + defaults.update(iuse_defaults['+'])
50 + defaults = defaults.difference(iuse_defaults['-'])
51 usedflags = iuse.intersection(set(installed))
52 if self.filter_defaults:
53 plus = usedflags.difference(defaults)
54 @@ -98,10 +103,12 @@ class FlagAnalyzer(object):
55 @return (plus, minus, unset) sets of USE flags
56 """
57 installed = set(self.pkg_used(pkg))
58 - print("installed =", installed)
59 - iuse = set(reduce_flags(self.pkg_flags(pkg)))
60 - print("iuse =", iuse)
61 - return self._analyse(installed, iuse)
62 + #print("installed =", installed)
63 + _iuse = self.pkg_flags(pkg)
64 + iuse = set(reduce_flags(_iuse))
65 + iuse_defaults = defaulted_flags(_iuse)
66 + #print("iuse =", iuse)
67 + return self._analyse(installed, iuse, iuse_defaults)
68
69 def pkg_used(self, pkg):
70 if self.target == "USE":
71
72 diff --git a/pym/gentoolkit/flag.py b/pym/gentoolkit/flag.py
73 index b5c8228..0377a81 100644
74 --- a/pym/gentoolkit/flag.py
75 +++ b/pym/gentoolkit/flag.py
76 @@ -13,6 +13,7 @@ __all__ = (
77 'get_installed_use',
78 'reduce_flag',
79 'reduce_flags',
80 + 'defaulted_flags',
81 'filter_flags',
82 'get_all_cpv_use',
83 'get_flags'
84 @@ -84,6 +85,21 @@ def reduce_flags(the_list):
85 return r
86
87
88 +def defaulted_flags(the_list):
89 + """Absolute value function for a USE flag list
90 +
91 + @type the_list: list
92 + @param the_list: the use flags to get defaulted ones from.
93 + @rtype: dict of lists
94 + @return defaulted USE flags {'+': [...], '-': [...]}
95 + """
96 + r={"+":[], "-": []}
97 + for member in the_list:
98 + if member[0] in ["+","-"]:
99 + r[member[0]].append(member[1:])
100 + return r
101 +
102 +
103 def filter_flags(use, use_expand_hidden, usemasked, useforced):
104 """Filter function to remove hidden or otherwise not normally
105 visible USE flags from a list.