1 |
Author: zmedico |
2 |
Date: 2008-07-03 09:30:05 +0000 (Thu, 03 Jul 2008) |
3 |
New Revision: 10910 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Clean up Scheduler.merge() and split out a _save_resume_list() method. |
9 |
|
10 |
|
11 |
Modified: main/trunk/pym/_emerge/__init__.py |
12 |
=================================================================== |
13 |
--- main/trunk/pym/_emerge/__init__.py 2008-07-03 09:05:38 UTC (rev 10909) |
14 |
+++ main/trunk/pym/_emerge/__init__.py 2008-07-03 09:30:05 UTC (rev 10910) |
15 |
@@ -7241,36 +7241,16 @@ |
16 |
colorize("GOOD", "*** Resuming merge...\n"), noiselevel=-1) |
17 |
self._logger.log(" *** Resuming merge...") |
18 |
|
19 |
+ self._save_resume_list() |
20 |
rval = self._check_manifests() |
21 |
if rval != os.EX_OK: |
22 |
return rval |
23 |
|
24 |
keep_going = "--keep-going" in self.myopts |
25 |
- running_tasks = self._running_tasks |
26 |
mtimedb = self._mtimedb |
27 |
|
28 |
while True: |
29 |
- |
30 |
- # Do this before verifying the ebuild Manifests since it might |
31 |
- # be possible for the user to use --resume --skipfirst get past |
32 |
- # a non-essential package with a broken digest. |
33 |
- mtimedb["resume"]["mergelist"] = [list(x) \ |
34 |
- for x in self._mergelist \ |
35 |
- if isinstance(x, Package) and x.operation == "merge"] |
36 |
- |
37 |
- mtimedb.commit() |
38 |
- |
39 |
- self._add_prefetchers() |
40 |
- |
41 |
- try: |
42 |
- rval = self._merge() |
43 |
- finally: |
44 |
- # clean up child process if necessary |
45 |
- self._task_queue.clear() |
46 |
- while running_tasks: |
47 |
- task = running_tasks.pop() |
48 |
- task.cancel() |
49 |
- |
50 |
+ self._merge() |
51 |
self._show_failed_fetches() |
52 |
del self._failed_fetches[:] |
53 |
|
54 |
@@ -7318,6 +7298,7 @@ |
55 |
del _eerror, msg |
56 |
del dropped_tasks |
57 |
self._mergelist = mylist |
58 |
+ self._save_resume_list() |
59 |
self._pkg_count.curval = 0 |
60 |
self._pkg_count.maxval = len(mylist) |
61 |
|
62 |
@@ -7325,6 +7306,38 @@ |
63 |
|
64 |
return rval |
65 |
|
66 |
+ def _merge(self): |
67 |
+ |
68 |
+ self._add_prefetchers() |
69 |
+ |
70 |
+ try: |
71 |
+ for task in self._mergelist: |
72 |
+ try: |
73 |
+ self._execute_task(task) |
74 |
+ except self._pkg_failure, e: |
75 |
+ return e.status |
76 |
+ finally: |
77 |
+ # clean up child process if necessary |
78 |
+ self._task_queue.clear() |
79 |
+ running_tasks = self._running_tasks |
80 |
+ while running_tasks: |
81 |
+ task = running_tasks.pop() |
82 |
+ task.cancel() |
83 |
+ return os.EX_OK |
84 |
+ |
85 |
+ def _save_resume_list(self): |
86 |
+ """ |
87 |
+ Do this before verifying the ebuild Manifests since it might |
88 |
+ be possible for the user to use --resume --skipfirst get past |
89 |
+ a non-essential package with a broken digest. |
90 |
+ """ |
91 |
+ mtimedb = self._mtimedb |
92 |
+ mtimedb["resume"]["mergelist"] = [list(x) \ |
93 |
+ for x in self._mergelist \ |
94 |
+ if isinstance(x, Package) and x.operation == "merge"] |
95 |
+ |
96 |
+ mtimedb.commit() |
97 |
+ |
98 |
def _calc_resume_list(self): |
99 |
""" |
100 |
Use the current resume list to calculate a new one, |
101 |
@@ -7402,60 +7415,6 @@ |
102 |
|
103 |
return state_changed |
104 |
|
105 |
- def _merge(self): |
106 |
- mylist = self._mergelist |
107 |
- favorites = self._favorites |
108 |
- mtimedb = self._mtimedb |
109 |
- buildpkgonly = "--buildpkgonly" in self.myopts |
110 |
- fetchonly = "--fetchonly" in self.myopts or \ |
111 |
- "--fetch-all-uri" in self.myopts |
112 |
- oneshot = "--oneshot" in self.myopts or \ |
113 |
- "--onlydeps" in self.myopts |
114 |
- pretend = "--pretend" in self.myopts |
115 |
- ldpath_mtimes = mtimedb["ldpath"] |
116 |
- logger = self._logger |
117 |
- |
118 |
- root_config = self.trees[self.target_root]["root_config"] |
119 |
- mymergelist = mylist |
120 |
- myfeat = self.settings.features[:] |
121 |
- metadata_keys = [k for k in portage.auxdbkeys \ |
122 |
- if not k.startswith("UNUSED_")] + ["USE"] |
123 |
- |
124 |
- task_list = mymergelist |
125 |
- # Filter mymergelist so that all the len(mymergelist) calls |
126 |
- # below (for display) do not count Uninstall instances. |
127 |
- mymergelist = [x for x in mymergelist if x[-1] == "merge"] |
128 |
- |
129 |
- for x in task_list: |
130 |
- if x[0] == "blocks": |
131 |
- continue |
132 |
- pkg_type, myroot, pkg_key, operation = x |
133 |
- built = pkg_type != "ebuild" |
134 |
- installed = pkg_type == "installed" |
135 |
- portdb = self.trees[myroot]["porttree"].dbapi |
136 |
- bindb = self.trees[myroot]["bintree"].dbapi |
137 |
- vartree = self.trees[myroot]["vartree"] |
138 |
- vardb = vartree.dbapi |
139 |
- root_config = self.trees[myroot]["root_config"] |
140 |
- if pkg_type == "blocks": |
141 |
- pass |
142 |
- elif pkg_type == "ebuild": |
143 |
- mydbapi = portdb |
144 |
- else: |
145 |
- if pkg_type == "binary": |
146 |
- mydbapi = bindb |
147 |
- elif pkg_type == "installed": |
148 |
- mydbapi = vardb |
149 |
- else: |
150 |
- raise AssertionError("Package type: '%s'" % pkg_type) |
151 |
- |
152 |
- try: |
153 |
- self._execute_task(x) |
154 |
- except self._pkg_failure, e: |
155 |
- return e.status |
156 |
- |
157 |
- return os.EX_OK |
158 |
- |
159 |
def _execute_task(self, pkg): |
160 |
favorites = self._favorites |
161 |
mtimedb = self._mtimedb |
162 |
|
163 |
-- |
164 |
gentoo-commits@l.g.o mailing list |