1 |
Author: zmedico |
2 |
Date: 2008-07-03 06:39:20 +0000 (Thu, 03 Jul 2008) |
3 |
New Revision: 10903 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Split out a new _check_manifests() method from Scheduler._merge() since |
9 |
this method is not useful for parallel scheduling and any useful code needs |
10 |
to be relocated. |
11 |
|
12 |
|
13 |
Modified: main/trunk/pym/_emerge/__init__.py |
14 |
=================================================================== |
15 |
--- main/trunk/pym/_emerge/__init__.py 2008-07-03 06:06:34 UTC (rev 10902) |
16 |
+++ main/trunk/pym/_emerge/__init__.py 2008-07-03 06:39:20 UTC (rev 10903) |
17 |
@@ -7119,12 +7119,67 @@ |
18 |
|
19 |
return blocker_dblinks |
20 |
|
21 |
+ def _check_manifests(self): |
22 |
+ # Verify all the manifests now so that the user is notified of failure |
23 |
+ # as soon as possible. |
24 |
+ if "strict" not in self.settings.features or \ |
25 |
+ "--fetchonly" in self.myopts or \ |
26 |
+ "--fetch-all-uri" in self.myopts: |
27 |
+ return os.EX_OK |
28 |
+ |
29 |
+ shown_verifying_msg = False |
30 |
+ quiet_settings = {} |
31 |
+ for myroot, pkgsettings in self.pkgsettings.iteritems(): |
32 |
+ quiet_config = portage.config(clone=pkgsettings) |
33 |
+ quiet_config["PORTAGE_QUIET"] = "1" |
34 |
+ quiet_config.backup_changes("PORTAGE_QUIET") |
35 |
+ quiet_settings[myroot] = quiet_config |
36 |
+ del quiet_config |
37 |
+ |
38 |
+ for x in self._mergelist: |
39 |
+ if x.type_name != "ebuild": |
40 |
+ continue |
41 |
+ |
42 |
+ if not shown_verifying_msg: |
43 |
+ shown_verifying_msg = True |
44 |
+ print ">>> Verifying ebuild Manifests..." |
45 |
+ |
46 |
+ root_config = x.root_config |
47 |
+ portdb = root_config.trees["porttree"].dbapi |
48 |
+ quiet_config = quiet_settings[root_config.root] |
49 |
+ quiet_config["O"] = os.path.dirname(portdb.findname(x.cpv)) |
50 |
+ if not portage.digestcheck([], quiet_config, strict=True): |
51 |
+ return 1 |
52 |
+ |
53 |
+ return os.EX_OK |
54 |
+ |
55 |
def merge(self): |
56 |
|
57 |
+ if "--resume" in self.myopts: |
58 |
+ # We're resuming. |
59 |
+ portage.writemsg_stdout( |
60 |
+ colorize("GOOD", "*** Resuming merge...\n"), noiselevel=-1) |
61 |
+ self._logger.log(" *** Resuming merge...") |
62 |
+ |
63 |
+ rval = self._check_manifests() |
64 |
+ if rval != os.EX_OK: |
65 |
+ return rval |
66 |
+ |
67 |
keep_going = "--keep-going" in self.myopts |
68 |
running_tasks = self._running_tasks |
69 |
+ mtimedb = self._mtimedb |
70 |
|
71 |
while True: |
72 |
+ |
73 |
+ # Do this before verifying the ebuild Manifests since it might |
74 |
+ # be possible for the user to use --resume --skipfirst get past |
75 |
+ # a non-essential package with a broken digest. |
76 |
+ mtimedb["resume"]["mergelist"] = [list(x) \ |
77 |
+ for x in self._mergelist \ |
78 |
+ if isinstance(x, Package) and x.operation == "merge"] |
79 |
+ |
80 |
+ mtimedb.commit() |
81 |
+ |
82 |
try: |
83 |
rval = self._merge() |
84 |
finally: |
85 |
@@ -7136,7 +7191,6 @@ |
86 |
|
87 |
if rval == os.EX_OK or not keep_going: |
88 |
break |
89 |
- mtimedb = self._mtimedb |
90 |
if "resume" not in mtimedb: |
91 |
break |
92 |
mergelist = self._mtimedb["resume"].get("mergelist") |
93 |
@@ -7273,18 +7327,6 @@ |
94 |
ldpath_mtimes = mtimedb["ldpath"] |
95 |
logger = self._logger |
96 |
|
97 |
- if "--resume" in self.myopts: |
98 |
- # We're resuming. |
99 |
- print colorize("GOOD", "*** Resuming merge...") |
100 |
- self._logger.log(" *** Resuming merge...") |
101 |
- |
102 |
- # Do this before verifying the ebuild Manifests since it might |
103 |
- # be possible for the user to use --resume --skipfirst get past |
104 |
- # a non-essential package with a broken digest. |
105 |
- mtimedb["resume"]["mergelist"] = [list(x) for x in mylist \ |
106 |
- if isinstance(x, Package) and x.operation == "merge"] |
107 |
- mtimedb.commit() |
108 |
- |
109 |
prefetchers = weakref.WeakValueDictionary() |
110 |
getbinpkg = "--getbinpkg" in self.myopts |
111 |
|
112 |
@@ -7308,34 +7350,6 @@ |
113 |
self._add_task(prefetcher) |
114 |
del prefetcher |
115 |
|
116 |
- # Verify all the manifests now so that the user is notified of failure |
117 |
- # as soon as possible. |
118 |
- if "--fetchonly" not in self.myopts and \ |
119 |
- "--fetch-all-uri" not in self.myopts and \ |
120 |
- "strict" in self.settings.features: |
121 |
- shown_verifying_msg = False |
122 |
- quiet_settings = {} |
123 |
- for myroot, pkgsettings in self.pkgsettings.iteritems(): |
124 |
- quiet_config = portage.config(clone=pkgsettings) |
125 |
- quiet_config["PORTAGE_QUIET"] = "1" |
126 |
- quiet_config.backup_changes("PORTAGE_QUIET") |
127 |
- quiet_settings[myroot] = quiet_config |
128 |
- del quiet_config |
129 |
- for x in mylist: |
130 |
- if x[0] != "ebuild" or x[-1] == "nomerge": |
131 |
- continue |
132 |
- if not shown_verifying_msg: |
133 |
- shown_verifying_msg = True |
134 |
- print ">>> Verifying ebuild Manifests..." |
135 |
- mytype, myroot, mycpv, mystatus = x |
136 |
- portdb = self.trees[myroot]["porttree"].dbapi |
137 |
- quiet_config = quiet_settings[myroot] |
138 |
- quiet_config["O"] = os.path.dirname(portdb.findname(mycpv)) |
139 |
- if not portage.digestcheck([], quiet_config, strict=True): |
140 |
- return 1 |
141 |
- del x, mytype, myroot, mycpv, mystatus, quiet_config |
142 |
- del shown_verifying_msg, quiet_settings |
143 |
- |
144 |
root_config = self.trees[self.target_root]["root_config"] |
145 |
mymergelist = mylist |
146 |
myfeat = self.settings.features[:] |
147 |
|
148 |
-- |
149 |
gentoo-commits@l.g.o mailing list |