Gentoo Archives: gentoo-commits

From: "André Erdmann" <dywi@×××××××.de>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/R_overlay:master commit in: roverlay/overlay/
Date: Tue, 03 Sep 2013 08:35:34
Message-Id: 1378197177.f874355dd601abd680b0a4978fb1bf6b11259099.dywi@gentoo
1 commit: f874355dd601abd680b0a4978fb1bf6b11259099
2 Author: André Erdmann <dywi <AT> mailerd <DOT> de>
3 AuthorDate: Tue Sep 3 08:32:57 2013 +0000
4 Commit: André Erdmann <dywi <AT> mailerd <DOT> de>
5 CommitDate: Tue Sep 3 08:32:57 2013 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=f874355d
7
8 depres rule generator: sort rules
9
10 + don't ignore rules without repo ids
11
12 ---
13 roverlay/overlay/rulegen.py | 46 ++++++++++++++++++++++++++++++++++++++++-----
14 1 file changed, 41 insertions(+), 5 deletions(-)
15
16 diff --git a/roverlay/overlay/rulegen.py b/roverlay/overlay/rulegen.py
17 index 7610e9a..ea15b72 100644
18 --- a/roverlay/overlay/rulegen.py
19 +++ b/roverlay/overlay/rulegen.py
20 @@ -4,6 +4,8 @@
21 # Distributed under the terms of the GNU General Public License;
22 # either version 2 of the License, or (at your option) any later version.
23
24 +import collections
25 +
26 class DepresRuleGenerator ( object ):
27
28 def __init__ ( self, overlay ):
29 @@ -58,14 +60,48 @@ class DepresRuleGenerator ( object ):
30
31 def make_rule_dict ( self ):
32 rule_dict = dict()
33 + rules_without_repo = list()
34 +
35 for repo_ids, rule_kwargs in self.make_rule_args():
36 rule = self.rule_class ( **rule_kwargs )
37 - for repo_id in repo_ids:
38 - if repo_id in rule_dict:
39 - rule_dict [repo_id].append ( rule )
40 - else:
41 - rule_dict [repo_id] = [ rule ]
42 + if repo_ids:
43 + for repo_id in repo_ids:
44 + if repo_id in rule_dict:
45 + rule_dict [repo_id].append ( rule )
46 + else:
47 + rule_dict [repo_id] = [ rule ]
48 + else:
49 + rules_without_repo.append ( rule )
50 +
51 + # TODO: use distmap to restore repo ids
52 + assert '_' not in rule_dict
53 + rule_dict ['_'] = rules_without_repo
54 +
55 return rule_dict
56 # --- end of make_rule_dict (...) ---
57
58 + def make_rule_list ( self, do_sort=False ):
59 + if do_sort:
60 + rule_dict = self.make_rule_dict()
61 + for rules in rule_dict.values():
62 + rules.sort ( key=( lambda k: k.priority ) )
63 +
64 + undef_key = -1
65 + #undef_key = max ( k for k in rule_dict if k != '_' ) + 1
66 +
67 + return sorted (
68 + rule_dict.items(),
69 + key=lambda kv: ( undef_key if kv[0] == '_' else kv[0] )
70 + )
71 + else:
72 + return list ( self.make_rule_dict().items() )
73 + # --- end of make_rule_list (...) ---
74 +
75 + def make_ordered_rule_dict ( self ):
76 + # _not_ efficient:
77 + # build a dict -> build a list -> build a dict
78 + #
79 + return collections.OrderedDict ( self.make_rule_list ( do_sort=True ) )
80 + # --- end of make_ordered_rule_dict (...) ---
81 +
82 # --- end of DepresRuleGenerator ---