1 |
Author: zmedico |
2 |
Date: 2008-07-03 07:04:44 +0000 (Thu, 03 Jul 2008) |
3 |
New Revision: 10905 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Split out a new _add_prefetchers() method from Scheduler._merge(). |
9 |
|
10 |
|
11 |
Modified: main/trunk/pym/_emerge/__init__.py |
12 |
=================================================================== |
13 |
--- main/trunk/pym/_emerge/__init__.py 2008-07-03 06:49:48 UTC (rev 10904) |
14 |
+++ main/trunk/pym/_emerge/__init__.py 2008-07-03 07:04:44 UTC (rev 10905) |
15 |
@@ -7044,6 +7044,7 @@ |
16 |
self._task_queue = deque() |
17 |
self._running_tasks = set() |
18 |
self._max_jobs = 1 |
19 |
+ self._prefetchers = weakref.WeakValueDictionary() |
20 |
self._parallel_fetch = False |
21 |
features = self.settings.features |
22 |
if "parallel-fetch" in features and \ |
23 |
@@ -7153,6 +7154,34 @@ |
24 |
|
25 |
return os.EX_OK |
26 |
|
27 |
+ def _add_prefetchers(self): |
28 |
+ |
29 |
+ if not self._parallel_fetch: |
30 |
+ return |
31 |
+ |
32 |
+ if self._parallel_fetch: |
33 |
+ portage.writemsg(">>> starting parallel fetch\n") |
34 |
+ |
35 |
+ prefetchers = self._prefetchers |
36 |
+ getbinpkg = "--getbinpkg" in self.myopts |
37 |
+ |
38 |
+ for pkg in self._mergelist: |
39 |
+ if not isinstance(pkg, Package): |
40 |
+ continue |
41 |
+ if pkg.type_name == "ebuild": |
42 |
+ self._add_task(EbuildFetcherAsync( |
43 |
+ logfile=self._fetch_log, |
44 |
+ pkg=pkg, register=self._register, |
45 |
+ unregister=self._unregister)) |
46 |
+ elif pkg.type_name == "binary" and getbinpkg and \ |
47 |
+ pkg.root_config.trees["bintree"].isremote(pkg.cpv): |
48 |
+ prefetcher = BinpkgFetcherAsync( |
49 |
+ logfile=self._fetch_log, |
50 |
+ pkg=pkg, register=self._register, |
51 |
+ unregister=self._unregister) |
52 |
+ prefetchers[pkg] = prefetcher |
53 |
+ self._add_task(prefetcher) |
54 |
+ |
55 |
def merge(self): |
56 |
|
57 |
if "--resume" in self.myopts: |
58 |
@@ -7180,6 +7209,8 @@ |
59 |
|
60 |
mtimedb.commit() |
61 |
|
62 |
+ self._add_prefetchers() |
63 |
+ |
64 |
try: |
65 |
rval = self._merge() |
66 |
finally: |
67 |
@@ -7327,29 +7358,6 @@ |
68 |
ldpath_mtimes = mtimedb["ldpath"] |
69 |
logger = self._logger |
70 |
|
71 |
- prefetchers = weakref.WeakValueDictionary() |
72 |
- getbinpkg = "--getbinpkg" in self.myopts |
73 |
- |
74 |
- if self._parallel_fetch: |
75 |
- portage.writemsg(">>> starting parallel fetch\n") |
76 |
- for pkg in mylist: |
77 |
- if not isinstance(pkg, Package): |
78 |
- continue |
79 |
- if pkg.type_name == "ebuild": |
80 |
- self._add_task(EbuildFetcherAsync( |
81 |
- logfile=self._fetch_log, |
82 |
- pkg=pkg, register=self._register, |
83 |
- unregister=self._unregister)) |
84 |
- elif pkg.type_name == "binary" and getbinpkg and \ |
85 |
- pkg.root_config.trees["bintree"].isremote(pkg.cpv): |
86 |
- prefetcher = BinpkgFetcherAsync( |
87 |
- logfile=self._fetch_log, |
88 |
- pkg=pkg, register=self._register, |
89 |
- unregister=self._unregister) |
90 |
- prefetchers[pkg] = prefetcher |
91 |
- self._add_task(prefetcher) |
92 |
- del prefetcher |
93 |
- |
94 |
root_config = self.trees[self.target_root]["root_config"] |
95 |
mymergelist = mylist |
96 |
myfeat = self.settings.features[:] |
97 |
@@ -7392,8 +7400,7 @@ |
98 |
self._execute_task(bad_resume_opts, |
99 |
failed_fetches, |
100 |
mydbapi, pkg_count, |
101 |
- myfeat, mymergelist, x, |
102 |
- prefetchers) |
103 |
+ myfeat, mymergelist, x) |
104 |
except self._pkg_failure, e: |
105 |
return e.status |
106 |
return self._post_merge(mtimedb, |
107 |
@@ -7401,9 +7408,10 @@ |
108 |
|
109 |
def _execute_task(self, bad_resume_opts, |
110 |
failed_fetches, mydbapi, pkg_count, myfeat, |
111 |
- mymergelist, pkg, prefetchers): |
112 |
+ mymergelist, pkg): |
113 |
favorites = self._favorites |
114 |
mtimedb = self._mtimedb |
115 |
+ prefetchers = self._prefetchers |
116 |
mergecount = pkg_count.curval |
117 |
pkgsettings = self.pkgsettings[pkg.root] |
118 |
buildpkgonly = "--buildpkgonly" in self.myopts |
119 |
|
120 |
-- |
121 |
gentoo-commits@l.g.o mailing list |