1 |
commit: 86c8b9ce562b4cecab65c03d2cbd2cae983d1b57 |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Wed Jun 5 17:56:47 2013 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Wed Jun 5 17:56:47 2013 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=86c8b9ce |
7 |
|
8 |
support '->' in SRC_URI |
9 |
|
10 |
--- |
11 |
roverlay/ebuild/abstractcomponents.py | 34 ++++++++++++++++++---------------- |
12 |
roverlay/ebuild/creation.py | 7 ++++++- |
13 |
roverlay/ebuild/evars.py | 33 ++++++++++++++++++++++++++++++--- |
14 |
3 files changed, 54 insertions(+), 20 deletions(-) |
15 |
|
16 |
diff --git a/roverlay/ebuild/abstractcomponents.py b/roverlay/ebuild/abstractcomponents.py |
17 |
index ec3db04..f8c9aed 100644 |
18 |
--- a/roverlay/ebuild/abstractcomponents.py |
19 |
+++ b/roverlay/ebuild/abstractcomponents.py |
20 |
@@ -144,7 +144,7 @@ class ListValue ( object ): |
21 |
if self.empty_value is not None: |
22 |
self.value.append ( self.empty_value ) |
23 |
|
24 |
- self.add_value ( value ) |
25 |
+ self.add ( value ) |
26 |
# --- end of set_value (...) --- |
27 |
|
28 |
def add ( self, value ): |
29 |
@@ -157,20 +157,22 @@ class ListValue ( object ): |
30 |
self.value.append ( value ) |
31 |
# --- end of add (...) --- |
32 |
|
33 |
- add_value = add |
34 |
+ def add_value ( self, *args, **kwargs ): |
35 |
+ raise NotImplementedError ( "add_value() is deprecated - use add()!" ) |
36 |
+ # --- end of add_value (...) --- |
37 |
+ |
38 |
+ def join_value_str ( self, join_str, quoted=False ): |
39 |
+ return join_str.join ( |
40 |
+ get_value_str ( |
41 |
+ v, |
42 |
+ quote_char = "'" if quoted else None |
43 |
+ ) for v in self.value |
44 |
+ ) |
45 |
+ # --- end of join_value_str (...) --- |
46 |
|
47 |
def to_str ( self ): |
48 |
"""Returns a string representing this ListValue.""" |
49 |
|
50 |
- def get_value_strings ( join_str, quoted=False ): |
51 |
- return join_str.join ( |
52 |
- get_value_str ( |
53 |
- v, |
54 |
- quote_char = "'" if quoted else None |
55 |
- ) for v in self.value |
56 |
- ) |
57 |
- # --- end of get_value_strings (...) --- |
58 |
- |
59 |
value_count = len ( self.value ) |
60 |
|
61 |
if self.is_bash_array: |
62 |
@@ -180,7 +182,7 @@ class ListValue ( object ): |
63 |
|
64 |
elif self.single_line or value_count == 1: |
65 |
# one value or several values in a single line |
66 |
- ret = "( " + get_value_strings ( ' ', True ) + " )" |
67 |
+ ret = "( " + self.join_value_str ( ' ', True ) + " )" |
68 |
|
69 |
else: |
70 |
ret = "{head}{values}{tail}".format ( |
71 |
@@ -188,20 +190,20 @@ class ListValue ( object ): |
72 |
( '(\n' + self.val_indent ) |
73 |
if self.insert_leading_newline else '( ' |
74 |
), |
75 |
- values = get_value_strings ( self.line_join_str, True ), |
76 |
+ values = self.join_value_str ( self.line_join_str, True ), |
77 |
tail = '\n' + self.var_indent + ')\n' |
78 |
) |
79 |
else: |
80 |
if value_count == 0: |
81 |
ret = "" |
82 |
elif self.single_line or value_count == 1: |
83 |
- ret = get_value_strings ( ' ' ) |
84 |
+ ret = self.join_value_str ( ' ' ) |
85 |
else: |
86 |
if self.insert_leading_newline: |
87 |
ret = '\n' + self.val_indent |
88 |
- ret += get_value_strings ( self.line_join_str ) |
89 |
+ ret += self.join_value_str ( self.line_join_str ) |
90 |
else: |
91 |
- ret = get_value_strings ( self.line_join_str ) |
92 |
+ ret = self.join_value_str ( self.line_join_str ) |
93 |
|
94 |
if self.append_indented_newline: |
95 |
ret += '\n' + self.var_indent |
96 |
|
97 |
diff --git a/roverlay/ebuild/creation.py b/roverlay/ebuild/creation.py |
98 |
index 8ea1854..de5a358 100644 |
99 |
--- a/roverlay/ebuild/creation.py |
100 |
+++ b/roverlay/ebuild/creation.py |
101 |
@@ -153,7 +153,12 @@ class EbuildCreation ( object ): |
102 |
ebuild.use ( self._get_ebuild_description() ) |
103 |
|
104 |
# SRC_URI |
105 |
- ebuild.use ( evars.SRC_URI ( self.package_info ['SRC_URI'] ) ) |
106 |
+ ebuild.use ( evars.SRC_URI ( |
107 |
+ src_uri = self.package_info ['SRC_URI'], |
108 |
+ src_uri_dest = self.package_info.get ( |
109 |
+ "src_uri_dest", do_fallback=True |
110 |
+ ) |
111 |
+ ) ) |
112 |
|
113 |
ebuild_text = ebuild.to_str() |
114 |
|
115 |
|
116 |
diff --git a/roverlay/ebuild/evars.py b/roverlay/ebuild/evars.py |
117 |
index 7bc461b..23f7e27 100644 |
118 |
--- a/roverlay/ebuild/evars.py |
119 |
+++ b/roverlay/ebuild/evars.py |
120 |
@@ -19,7 +19,7 @@ __all__ = [ 'DEPEND', 'DESCRIPTION', 'IUSE', 'MISSINGDEPS', |
121 |
|
122 |
import roverlay.strutil |
123 |
|
124 |
-from roverlay.ebuild.abstractcomponents import ListValue, EbuildVar |
125 |
+from roverlay.ebuild.abstractcomponents import ListValue, EbuildVar, get_value_str |
126 |
|
127 |
IUSE_SUGGESTS = 'R_suggests' |
128 |
RSUGGESTS_NAME = IUSE_SUGGESTS.upper() |
129 |
@@ -68,11 +68,38 @@ class KEYWORDS ( EbuildVar ): |
130 |
# --- end of __init__ (...) --- |
131 |
|
132 |
|
133 |
+class SRC_URI_ListValue ( ListValue ): |
134 |
+ """List value that represents SRC_URI entries.""" |
135 |
+ |
136 |
+ def _accept_value ( self, value ): raise NotImplementedError() |
137 |
+ |
138 |
+ def add ( self, value ): |
139 |
+ """Adds/Appends a value.""" |
140 |
+ if value [0]: |
141 |
+ self.value.append ( value ) |
142 |
+ else: |
143 |
+ raise ValueError ( value ) |
144 |
+ # --- end of add (...) --- |
145 |
+ |
146 |
+ def join_value_str ( self, join_str, quoted=False ): |
147 |
+ return join_str.join ( |
148 |
+ get_value_str ( |
149 |
+ ( |
150 |
+ "{} -> {}".format ( v[0], v[1] ) if v[1] else str ( v[0] ) |
151 |
+ ), |
152 |
+ quote_char=( "'" if quoted else None ) |
153 |
+ ) for v in self.value |
154 |
+ ) |
155 |
+ # --- end of join_value_str (...) --- |
156 |
+ |
157 |
+ |
158 |
class SRC_URI ( EbuildVar ): |
159 |
"""A SRC_URI="..." statement.""" |
160 |
- def __init__ ( self, src_uri ): |
161 |
+ def __init__ ( self, src_uri, src_uri_dest ): |
162 |
super ( SRC_URI, self ) . __init__ ( |
163 |
- name='SRC_URI', value=src_uri, priority=90 |
164 |
+ name = 'SRC_URI', |
165 |
+ value = SRC_URI_ListValue ( value=( src_uri, src_uri_dest ) ), |
166 |
+ priority = 90 |
167 |
) |
168 |
|
169 |
def _empty_str ( self ): |