1 |
commit: 03094ff0f3d6b20d97d7ac48ecd4f2f70868b7f3 |
2 |
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
3 |
AuthorDate: Tue Jun 3 05:38:19 2014 +0000 |
4 |
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com> |
5 |
CommitDate: Wed Oct 1 23:45:33 2014 +0000 |
6 |
URL: http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=03094ff0 |
7 |
|
8 |
Repoman: Create repoman/_portage.py to centrally import portage for all modules |
9 |
|
10 |
This prevents repository errors when running repoman on non repos.conf repositories. |
11 |
For some reason submodule imports of portage did not contain the repo being scanned. |
12 |
checks.py: sort the imports. |
13 |
argparser.py: fix a lack of a newline at the end of the file. |
14 |
|
15 |
--- |
16 |
pym/repoman/_portage.py | 26 +++++++++++++++++++++++++ |
17 |
pym/repoman/_subprocess.py | 4 +++- |
18 |
pym/repoman/_xml.py | 4 +++- |
19 |
pym/repoman/argparser.py | 8 ++++++-- |
20 |
pym/repoman/checks/ebuilds/checks.py | 8 ++++++-- |
21 |
pym/repoman/checks/ebuilds/fetches.py | 4 +++- |
22 |
pym/repoman/checks/ebuilds/isebuild.py | 4 +++- |
23 |
pym/repoman/checks/ebuilds/manifests.py | 10 ++++++---- |
24 |
pym/repoman/checks/ebuilds/misc.py | 3 ++- |
25 |
pym/repoman/checks/ebuilds/pkgmetadata.py | 4 +++- |
26 |
pym/repoman/checks/ebuilds/thirdpartymirrors.py | 3 ++- |
27 |
pym/repoman/main.py | 12 ++++++++---- |
28 |
pym/repoman/metadata.py | 4 +++- |
29 |
pym/repoman/qa_data.py | 5 ++++- |
30 |
pym/repoman/repos.py | 4 +++- |
31 |
pym/repoman/utilities.py | 4 +++- |
32 |
pym/repoman/vcs/vcsstatus.py | 4 +++- |
33 |
17 files changed, 87 insertions(+), 24 deletions(-) |
34 |
|
35 |
diff --git a/pym/repoman/_portage.py b/pym/repoman/_portage.py |
36 |
new file mode 100644 |
37 |
index 0000000..e72ce9f |
38 |
--- /dev/null |
39 |
+++ b/pym/repoman/_portage.py |
40 |
@@ -0,0 +1,26 @@ |
41 |
+ |
42 |
+'''repoman/_portage.py |
43 |
+Central location for the portage import. |
44 |
+There were problems when portage was imported by submodules |
45 |
+due to the portage instance was somehow different that the |
46 |
+initial portage import in main.py. The later portage imports |
47 |
+did not contain the repo it was working on. That repo was my cvs tree |
48 |
+and not listed in those subsequent portage imports. |
49 |
+ |
50 |
+All modules should import portage from this one |
51 |
+ |
52 |
+from repoman._portage import portage |
53 |
+ |
54 |
+Then continue to import the remaining portage modules needed |
55 |
+''' |
56 |
+ |
57 |
+import sys |
58 |
+ |
59 |
+from os import path as osp |
60 |
+pym_path = osp.join(osp.dirname(osp.dirname(osp.realpath(__file__)))) |
61 |
+sys.path.insert(0, pym_path) |
62 |
+ |
63 |
+import portage |
64 |
+portage._internal_caller = True |
65 |
+portage._disable_legacy_globals() |
66 |
+ |
67 |
|
68 |
diff --git a/pym/repoman/_subprocess.py b/pym/repoman/_subprocess.py |
69 |
index 3a404ce..5449e64 100644 |
70 |
--- a/pym/repoman/_subprocess.py |
71 |
+++ b/pym/repoman/_subprocess.py |
72 |
@@ -4,7 +4,9 @@ import codecs |
73 |
import subprocess |
74 |
import sys |
75 |
|
76 |
-import portage |
77 |
+# import our initialized portage instance |
78 |
+from repoman._portage import portage |
79 |
+ |
80 |
from portage import os |
81 |
from portage.process import find_binary |
82 |
from portage import _encodings, _unicode_encode |
83 |
|
84 |
diff --git a/pym/repoman/_xml.py b/pym/repoman/_xml.py |
85 |
index 513b62a..1871875 100644 |
86 |
--- a/pym/repoman/_xml.py |
87 |
+++ b/pym/repoman/_xml.py |
88 |
@@ -2,7 +2,9 @@ |
89 |
import sys |
90 |
import xml |
91 |
|
92 |
-import portage |
93 |
+# import our initialized portage instance |
94 |
+from repoman._portage import portage |
95 |
+ |
96 |
from portage import os |
97 |
from portage.output import red |
98 |
from portage.process import find_binary |
99 |
|
100 |
diff --git a/pym/repoman/argparser.py b/pym/repoman/argparser.py |
101 |
index 393d755..1b2fe6b 100644 |
102 |
--- a/pym/repoman/argparser.py |
103 |
+++ b/pym/repoman/argparser.py |
104 |
@@ -5,11 +5,15 @@ |
105 |
"""This module contains functions used in Repoman to parse CLI arguments.""" |
106 |
|
107 |
import logging |
108 |
-import portage |
109 |
import sys |
110 |
+ |
111 |
+# import our initialized portage instance |
112 |
+from repoman._portage import portage |
113 |
+ |
114 |
from portage import util |
115 |
from portage.util._argparse import ArgumentParser |
116 |
|
117 |
+ |
118 |
def parse_args(argv, qahelp, repoman_default_opts): |
119 |
"""Use a customized optionParser to parse command line arguments for repoman |
120 |
Args: |
121 |
@@ -206,4 +210,4 @@ def parse_args(argv, qahelp, repoman_default_opts): |
122 |
opts.without_mask = False |
123 |
logging.warn('Commit mode automatically disables --without-mask') |
124 |
|
125 |
- return (opts, args) |
126 |
\ No newline at end of file |
127 |
+ return (opts, args) |
128 |
|
129 |
diff --git a/pym/repoman/checks/ebuilds/checks.py b/pym/repoman/checks/ebuilds/checks.py |
130 |
index 41ddbbb..890cd18 100644 |
131 |
--- a/pym/repoman/checks/ebuilds/checks.py |
132 |
+++ b/pym/repoman/checks/ebuilds/checks.py |
133 |
@@ -11,13 +11,17 @@ import codecs |
134 |
from itertools import chain |
135 |
import re |
136 |
import time |
137 |
-import repoman.checks.ebuilds.errors as errors |
138 |
-import portage |
139 |
+ |
140 |
+# import our initialized portage instance |
141 |
+from repoman._portage import portage |
142 |
+ |
143 |
from portage.eapi import ( |
144 |
eapi_supports_prefix, eapi_has_implicit_rdepend, |
145 |
eapi_has_src_prepare_and_src_configure, eapi_has_dosed_dohard, |
146 |
eapi_exports_AA, eapi_has_pkg_pretend) |
147 |
|
148 |
+import repoman.checks.ebuilds.errors as errors |
149 |
+ |
150 |
|
151 |
class LineCheck(object): |
152 |
"""Run a check on a line of an ebuild.""" |
153 |
|
154 |
diff --git a/pym/repoman/checks/ebuilds/fetches.py b/pym/repoman/checks/ebuilds/fetches.py |
155 |
index ccf9ff9..22e89b6 100644 |
156 |
--- a/pym/repoman/checks/ebuilds/fetches.py |
157 |
+++ b/pym/repoman/checks/ebuilds/fetches.py |
158 |
@@ -5,7 +5,9 @@ Performs the src_uri fetchlist and files checks |
159 |
|
160 |
from stat import S_ISDIR |
161 |
|
162 |
-import portage |
163 |
+# import our initialized portage instance |
164 |
+from repoman._portage import portage |
165 |
+ |
166 |
from portage import os |
167 |
|
168 |
from repoman.vcs.vcs import vcs_new_changed |
169 |
|
170 |
diff --git a/pym/repoman/checks/ebuilds/isebuild.py b/pym/repoman/checks/ebuilds/isebuild.py |
171 |
index 2369ea6..065914e 100644 |
172 |
--- a/pym/repoman/checks/ebuilds/isebuild.py |
173 |
+++ b/pym/repoman/checks/ebuilds/isebuild.py |
174 |
@@ -4,7 +4,9 @@ import stat |
175 |
from _emerge.Package import Package |
176 |
from _emerge.RootConfig import RootConfig |
177 |
|
178 |
-import portage |
179 |
+# import our initialized portage instance |
180 |
+from repoman._portage import portage |
181 |
+ |
182 |
from portage import os |
183 |
|
184 |
from repoman.qa_data import no_exec, allvars |
185 |
|
186 |
diff --git a/pym/repoman/checks/ebuilds/manifests.py b/pym/repoman/checks/ebuilds/manifests.py |
187 |
index fb08c5e..1d65e1d 100644 |
188 |
--- a/pym/repoman/checks/ebuilds/manifests.py |
189 |
+++ b/pym/repoman/checks/ebuilds/manifests.py |
190 |
@@ -2,7 +2,9 @@ |
191 |
import logging |
192 |
import sys |
193 |
|
194 |
-import portage |
195 |
+# import our initialized portage instance |
196 |
+from repoman._portage import portage |
197 |
+ |
198 |
from portage import os |
199 |
from portage.package.ebuild.digestgen import digestgen |
200 |
from portage.util import writemsg_level |
201 |
@@ -11,17 +13,17 @@ from portage.util import writemsg_level |
202 |
class Manifests(object): |
203 |
|
204 |
|
205 |
- def __init__(self, options, qatracker, repoman_settings): |
206 |
+ def __init__(self, options, qatracker=None, repoman_settings=None): |
207 |
self.options = options |
208 |
self.qatracker = qatracker |
209 |
self.repoman_settings = repoman_settings |
210 |
- |
211 |
- self.digest_only = options.mode != 'manifest-check' and options.digest == 'y' |
212 |
self.generated_manifest = False |
213 |
|
214 |
|
215 |
def run(self, checkdir, portdb): |
216 |
self.generated_manifest = False |
217 |
+ self.digest_only = self.options.mode != 'manifest-check' \ |
218 |
+ and self.options.digest == 'y' |
219 |
if self.options.pretend: |
220 |
return False |
221 |
if self.options.mode in ("manifest", 'commit', 'fix') or self.digest_only: |
222 |
|
223 |
diff --git a/pym/repoman/checks/ebuilds/misc.py b/pym/repoman/checks/ebuilds/misc.py |
224 |
index c1edd2c..3bf61f0 100644 |
225 |
--- a/pym/repoman/checks/ebuilds/misc.py |
226 |
+++ b/pym/repoman/checks/ebuilds/misc.py |
227 |
@@ -4,7 +4,8 @@ Miscelaneous ebuild check functions''' |
228 |
|
229 |
import re |
230 |
|
231 |
-import portage |
232 |
+# import our initialized portage instance |
233 |
+from repoman._portage import portage |
234 |
|
235 |
|
236 |
pv_toolong_re = re.compile(r'[0-9]{19,}') |
237 |
|
238 |
diff --git a/pym/repoman/checks/ebuilds/pkgmetadata.py b/pym/repoman/checks/ebuilds/pkgmetadata.py |
239 |
index d40691d..0778696 100644 |
240 |
--- a/pym/repoman/checks/ebuilds/pkgmetadata.py |
241 |
+++ b/pym/repoman/checks/ebuilds/pkgmetadata.py |
242 |
@@ -20,7 +20,9 @@ except (ImportError, SystemError, RuntimeError, Exception): |
243 |
out.eerror(line) |
244 |
sys.exit(1) |
245 |
|
246 |
-import portage |
247 |
+# import our initialized portage instance |
248 |
+from repoman._portage import portage |
249 |
+ |
250 |
from portage.exception import InvalidAtom |
251 |
from portage import os |
252 |
from portage import _encodings, _unicode_encode |
253 |
|
254 |
diff --git a/pym/repoman/checks/ebuilds/thirdpartymirrors.py b/pym/repoman/checks/ebuilds/thirdpartymirrors.py |
255 |
index f867c19..50a0da8 100644 |
256 |
--- a/pym/repoman/checks/ebuilds/thirdpartymirrors.py |
257 |
+++ b/pym/repoman/checks/ebuilds/thirdpartymirrors.py |
258 |
@@ -1,5 +1,6 @@ |
259 |
|
260 |
-import portage |
261 |
+# import our initialized portage instance |
262 |
+from repoman._portage import portage |
263 |
|
264 |
|
265 |
class ThirdPartyMirrors(object): |
266 |
|
267 |
diff --git a/pym/repoman/main.py b/pym/repoman/main.py |
268 |
index d567f94..fcd4c19 100755 |
269 |
--- a/pym/repoman/main.py |
270 |
+++ b/pym/repoman/main.py |
271 |
@@ -21,7 +21,8 @@ from os import path as osp |
272 |
if osp.isfile(osp.join(osp.dirname(osp.dirname(osp.realpath(__file__))), ".portage_not_installed")): |
273 |
pym_path = osp.join(osp.dirname(osp.dirname(osp.realpath(__file__)))) #, "pym") |
274 |
sys.path.insert(0, pym_path) |
275 |
-import portage |
276 |
+# import our centrally initialized portage instance |
277 |
+from repoman._portage import portage |
278 |
portage._internal_caller = True |
279 |
portage._disable_legacy_globals() |
280 |
|
281 |
@@ -115,12 +116,15 @@ if options.experimental_inherit == 'y': |
282 |
can_force = True |
283 |
|
284 |
portdir, portdir_overlay, mydir = utilities.FindPortdir(repoman_settings) |
285 |
+print("portdir", portdir) |
286 |
+print("portdir_overlay", portdir_overlay) |
287 |
+print("mydir", mydir) |
288 |
if portdir is None: |
289 |
sys.exit(1) |
290 |
|
291 |
myreporoot = os.path.basename(portdir_overlay) |
292 |
myreporoot += mydir[len(portdir_overlay):] |
293 |
- |
294 |
+print("myreporoot", myreporoot) |
295 |
################## |
296 |
|
297 |
vcs_settings = VCSSettings(options, repoman_settings) |
298 |
@@ -283,12 +287,12 @@ for xpkg in effective_scanlist: |
299 |
checkdir_relative = os.path.join(catdir, checkdir_relative) |
300 |
checkdir_relative = os.path.join(".", checkdir_relative) |
301 |
|
302 |
-##################### |
303 |
+#####################^^^^^^^^^^^^^^ |
304 |
manifester = Manifests(options, qatracker, repoman_settings) |
305 |
if manifester.run(checkdir, portdb): |
306 |
continue |
307 |
if not manifester.generated_manifest: |
308 |
- manifester.digest_check(xpkg, checkdir) |
309 |
+ manifester.digest_check(xpkg, checkdir) |
310 |
###################### |
311 |
|
312 |
if options.mode == 'manifest-check': |
313 |
|
314 |
diff --git a/pym/repoman/metadata.py b/pym/repoman/metadata.py |
315 |
index b4950ad..059b0af 100644 |
316 |
--- a/pym/repoman/metadata.py |
317 |
+++ b/pym/repoman/metadata.py |
318 |
@@ -11,7 +11,9 @@ except ImportError: |
319 |
from urlparse import urlparse |
320 |
|
321 |
|
322 |
-import portage |
323 |
+# import our initialized portage instance |
324 |
+from repoman._portage import portage |
325 |
+ |
326 |
from portage import exception |
327 |
from portage import os |
328 |
from portage.output import green |
329 |
|
330 |
diff --git a/pym/repoman/qa_data.py b/pym/repoman/qa_data.py |
331 |
index 5e39e29..4b62b5d 100644 |
332 |
--- a/pym/repoman/qa_data.py |
333 |
+++ b/pym/repoman/qa_data.py |
334 |
@@ -2,7 +2,10 @@ |
335 |
import logging |
336 |
|
337 |
from _emerge.Package import Package |
338 |
-import portage |
339 |
+ |
340 |
+# import our initialized portage instance |
341 |
+from repoman._portage import portage |
342 |
+ |
343 |
|
344 |
|
345 |
# 14 is the length of DESCRIPTION="" |
346 |
|
347 |
diff --git a/pym/repoman/repos.py b/pym/repoman/repos.py |
348 |
index 16de8bf..b79e241 100644 |
349 |
--- a/pym/repoman/repos.py |
350 |
+++ b/pym/repoman/repos.py |
351 |
@@ -6,7 +6,9 @@ import re |
352 |
import sys |
353 |
import textwrap |
354 |
|
355 |
-import portage |
356 |
+# import our initialized portage instance |
357 |
+from repoman._portage import portage |
358 |
+ |
359 |
from portage import os |
360 |
from portage import _encodings |
361 |
from portage import _unicode_encode |
362 |
|
363 |
diff --git a/pym/repoman/utilities.py b/pym/repoman/utilities.py |
364 |
index 7274d13..b7b3945 100644 |
365 |
--- a/pym/repoman/utilities.py |
366 |
+++ b/pym/repoman/utilities.py |
367 |
@@ -31,7 +31,9 @@ import textwrap |
368 |
import difflib |
369 |
from tempfile import mkstemp |
370 |
|
371 |
-import portage |
372 |
+# import our initialized portage instance |
373 |
+from repoman._portage import portage |
374 |
+ |
375 |
from portage import os |
376 |
from portage import shutil |
377 |
from portage import _encodings |
378 |
|
379 |
diff --git a/pym/repoman/vcs/vcsstatus.py b/pym/repoman/vcs/vcsstatus.py |
380 |
index f984832..6a81b1b 100644 |
381 |
--- a/pym/repoman/vcs/vcsstatus.py |
382 |
+++ b/pym/repoman/vcs/vcsstatus.py |
383 |
@@ -1,6 +1,8 @@ |
384 |
|
385 |
|
386 |
-import portage |
387 |
+# import our initialized portage instance |
388 |
+from repoman._portage import portage |
389 |
+ |
390 |
from portage import os |
391 |
|
392 |
from repoman._subprocess import repoman_popen |