1 |
commit: f39267a36a595947e8b42191c663fc335a5c9be6 |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Wed Aug 28 09:37:43 2013 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Wed Aug 28 09:37:43 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=f39267a3 |
7 |
|
8 |
roverlay/ebuild/depres: add depstr_ignore functionality |
9 |
|
10 |
--- |
11 |
roverlay/ebuild/depres.py | 52 +++++++++++++++++++++++++++++++++++------------ |
12 |
1 file changed, 39 insertions(+), 13 deletions(-) |
13 |
|
14 |
diff --git a/roverlay/ebuild/depres.py b/roverlay/ebuild/depres.py |
15 |
index fa3a5bb..9ce1ed8 100644 |
16 |
--- a/roverlay/ebuild/depres.py |
17 |
+++ b/roverlay/ebuild/depres.py |
18 |
@@ -222,24 +222,50 @@ class EbuildDepRes ( object ): |
19 |
) |
20 |
return True |
21 |
|
22 |
- desc = self.package_info ['desc_data'] |
23 |
+ desc = self.package_info ['desc_data'] |
24 |
+ depconf = self.package_info.depconf |
25 |
+ depstr_ignore = depconf.get ( 'depstr_ignore' ) if depconf else None |
26 |
self._channels = dict() |
27 |
|
28 |
- dep_type = desc_field = None |
29 |
+ dep_type = None |
30 |
+ desc_field = None |
31 |
|
32 |
- for dep_type in FIELDS_TO_EVAR: |
33 |
- resolver = None |
34 |
+ if depstr_ignore: |
35 |
+ depstr_ignore_all = depstr_ignore.get ( 'all' ) |
36 |
|
37 |
- for desc_field in FIELDS_TO_EVAR [dep_type]: |
38 |
- if desc_field in desc: |
39 |
- if not resolver: |
40 |
- resolver = self._get_channel ( dep_type ) |
41 |
+ for dep_type, desc_fields in FIELDS_TO_EVAR.items(): |
42 |
+ resolver = None |
43 |
+ # ignore based on evar name ([R]DEPEND/RSUGGESTS) |
44 |
+ depstr_ignore_specific = depstr_ignore.get ( dep_type ) |
45 |
+ |
46 |
+ for desc_field in desc_fields: |
47 |
+ if desc_field in desc: |
48 |
+ if resolver is None: |
49 |
+ resolver = self._get_channel ( dep_type ) |
50 |
+ |
51 |
+ resolver.add_dependencies_filtered ( |
52 |
+ dep_list = desc [desc_field], |
53 |
+ deptype_mask = FIELDS [desc_field], |
54 |
+ common_blacklist = depstr_ignore_all, |
55 |
+ specific_blacklist = depstr_ignore_specific, |
56 |
+ ) |
57 |
+ # -- end for dep_type |
58 |
+ |
59 |
+ else: |
60 |
+ for dep_type, desc_fields in FIELDS_TO_EVAR.items(): |
61 |
+ resolver = None |
62 |
+ |
63 |
+ for desc_field in desc_fields: |
64 |
+ if desc_field in desc: |
65 |
+ if resolver is None: |
66 |
+ resolver = self._get_channel ( dep_type ) |
67 |
+ |
68 |
+ resolver.add_dependencies ( |
69 |
+ dep_list = desc [desc_field], |
70 |
+ deptype_mask = FIELDS [desc_field] |
71 |
+ ) |
72 |
+ # -- end for dep_type |
73 |
|
74 |
- resolver.add_dependencies ( |
75 |
- dep_list = desc [desc_field], |
76 |
- deptype_mask = FIELDS [desc_field] |
77 |
- ) |
78 |
- # -- for dep_type |
79 |
# --- end of _init_channels (...) --- |
80 |
|
81 |
def _close_channels ( self ): |