1 |
commit: edd8719acc718698e597ff4cebe52aa520237d17 |
2 |
Author: André Erdmann <dywi <AT> mailerd <DOT> de> |
3 |
AuthorDate: Mon Jun 25 18:12:07 2012 +0000 |
4 |
Commit: André Erdmann <dywi <AT> mailerd <DOT> de> |
5 |
CommitDate: Mon Jun 25 18:12:07 2012 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/R_overlay.git;a=commit;h=edd8719a |
7 |
|
8 |
extend PackageInfo |
9 |
|
10 |
--- |
11 |
roverlay/packageinfo.py | 80 +++++++++++++++++++++++++++++++--------------- |
12 |
1 files changed, 54 insertions(+), 26 deletions(-) |
13 |
|
14 |
diff --git a/roverlay/packageinfo.py b/roverlay/packageinfo.py |
15 |
index 712b5a6..fdce322 100644 |
16 |
--- a/roverlay/packageinfo.py |
17 |
+++ b/roverlay/packageinfo.py |
18 |
@@ -136,19 +136,22 @@ class PackageInfo ( object ): |
19 |
return self._info [key_low] |
20 |
|
21 |
# 'virtual' keys - calculate result |
22 |
- elif key_low == 'distdir': |
23 |
- if 'package_dir' in self._info: |
24 |
- return self._info ['package_dir'] |
25 |
- |
26 |
- elif 'package_file' in self._info: |
27 |
- return os.path.dirname ( self._info ['package_file'] ) |
28 |
+ elif key_low == 'name': |
29 |
+ # no special name, using package_name |
30 |
+ return self._info ['package_name'] |
31 |
+ |
32 |
+ elif key_low == 'package_file': |
33 |
+ # assuming that origin is in self._info |
34 |
+ return os.path.join ( |
35 |
+ self._info ['origin'].distdir, |
36 |
+ self._info ['package_filename'] |
37 |
+ ) |
38 |
|
39 |
- #elif 'origin' in self._info: |
40 |
+ elif key_low == 'distdir': |
41 |
+ if 'origin' in self._info: |
42 |
+ return self._info ['origin'].distdir |
43 |
else: |
44 |
- return os.path.join ( |
45 |
- config.get_or_fail ( ['DISTFILES', 'root' ] ), |
46 |
- self._info ['origin'] |
47 |
- ) |
48 |
+ return os.path.dirname ( self._info ['package_file'] ) |
49 |
|
50 |
elif key_low == 'has_suggests': |
51 |
if 'has_suggests' in self._info: |
52 |
@@ -164,9 +167,17 @@ class PackageInfo ( object ): |
53 |
# comment from ebuild: |
54 |
## calculate SRC_URI using self._data ['origin'], |
55 |
## either here or in eclass |
56 |
- return "http://TODO!!!/" + self._info ['package_filename'] |
57 |
+ |
58 |
#return "**packageinfo needs information from sync module!" |
59 |
|
60 |
+ if 'origin' in self._info: |
61 |
+ return self._info ['origin'].get_src_uri ( |
62 |
+ self._info ['package_filename'] |
63 |
+ ) |
64 |
+ else: |
65 |
+ return "http://localhost/R-packages/" + \ |
66 |
+ self._info ['package_filename'] |
67 |
+ |
68 |
|
69 |
# fallback |
70 |
if do_fallback: |
71 |
@@ -228,6 +239,9 @@ class PackageInfo ( object ): |
72 |
elif key == 'filepath': |
73 |
self._use_filepath ( value ) |
74 |
|
75 |
+ elif key == 'filename': |
76 |
+ self._use_filename ( value ) |
77 |
+ |
78 |
elif key == 'origin': |
79 |
self ['origin'] = value |
80 |
|
81 |
@@ -243,16 +257,13 @@ class PackageInfo ( object ): |
82 |
self._update_lock.release() |
83 |
# --- end of update (**kw) --- |
84 |
|
85 |
- def _use_filepath ( self, _filepath ): |
86 |
+ def _use_filename ( self, _filename ): |
87 |
"""auxiliary method for update(**kw) |
88 |
|
89 |
arguments: |
90 |
- * _filepath -- |
91 |
+ * _filename -- |
92 |
""" |
93 |
- |
94 |
- filepath = os.path.abspath ( _filepath ) |
95 |
- |
96 |
- filename_with_ext = os.path.basename ( filepath ) |
97 |
+ filename_with_ext = _filename |
98 |
|
99 |
# remove .tar.gz .tar.bz2 etc. |
100 |
filename = PackageInfo.PKGSUFFIX_REGEX.sub ( '', filename_with_ext ) |
101 |
@@ -281,25 +292,42 @@ class PackageInfo ( object ): |
102 |
) |
103 |
raise |
104 |
|
105 |
- |
106 |
- |
107 |
# using package name as name (unless modified later), |
108 |
# using pkg_version for the ebuild version |
109 |
self ['name'] = package_name |
110 |
self ['ebuild_verstr'] = version_str |
111 |
|
112 |
- |
113 |
# for DescriptionReader |
114 |
- self ['package_file'] = filepath |
115 |
self ['package_name'] = package_name |
116 |
|
117 |
self ['package_filename'] = filename_with_ext |
118 |
+ # --- end of _use_filename (...) --- |
119 |
|
120 |
- # keys never used (FIXME remove or use) |
121 |
- #self ['filename'] = filename |
122 |
- #self ['filepath'] = filepath |
123 |
- #self ['package_version'] = package_version |
124 |
+ def _use_filepath ( self, _filepath ): |
125 |
+ """auxiliary method for update(**kw) |
126 |
+ |
127 |
+ arguments: |
128 |
+ * _filepath -- |
129 |
+ """ |
130 |
+ LOGGER.info ( |
131 |
+ 'Please note that _use_filepath is only meant for testing.' |
132 |
+ ) |
133 |
+ filepath = os.path.abspath ( _filepath ) |
134 |
+ self ['package_file'] = filepath |
135 |
+ self._use_filename ( os.path.basename ( filepath ) ) |
136 |
# --- end of _use_filepath (...) --- |
137 |
|
138 |
def _use_depres_result ( self, result ): |
139 |
+ """auxiliary method for update(**kw) |
140 |
+ |
141 |
+ arguments: |
142 |
+ * result -- |
143 |
+ """ |
144 |
self ['has_suggests'] = result [2] |
145 |
+ # --- end of _use_depres_result (...) --- |
146 |
+ |
147 |
+ def __str__ ( self ): |
148 |
+ return "<PackageInfo for %s>" % self.get ( |
149 |
+ 'package_file', fallback_value='[unknown file]', do_fallback=True |
150 |
+ ) |
151 |
+ # --- end of __str__ (...) --- |