1 |
Author: grobian |
2 |
Date: 2009-03-29 07:48:52 +0000 (Sun, 29 Mar 2009) |
3 |
New Revision: 13243 |
4 |
|
5 |
Modified: |
6 |
main/branches/prefix/bin/ebuild-helpers/dobin |
7 |
main/branches/prefix/bin/ebuild-helpers/dodoc |
8 |
main/branches/prefix/bin/ebuild-helpers/doexe |
9 |
main/branches/prefix/bin/ebuild-helpers/doins |
10 |
main/branches/prefix/bin/ebuild-helpers/dolib |
11 |
main/branches/prefix/bin/ebuild-helpers/doman |
12 |
main/branches/prefix/bin/ebuild-helpers/domo |
13 |
main/branches/prefix/bin/ebuild-helpers/dosbin |
14 |
main/branches/prefix/bin/ebuild-helpers/dosed |
15 |
main/branches/prefix/bin/ebuild-helpers/ecompress |
16 |
main/branches/prefix/bin/ebuild-helpers/ecompressdir |
17 |
main/branches/prefix/bin/ebuild-helpers/prepallman |
18 |
main/branches/prefix/pym/_emerge/__init__.py |
19 |
main/branches/prefix/pym/portage/dbapi/vartree.py |
20 |
Log: |
21 |
Merged from trunk -r13238:13242 |
22 |
|
23 |
| 13239 | Add (x of y ) package counter in the "Installing" message, | |
24 |
| zmedico | similar to the counter show in the "Emerging" message. | |
25 |
| | Thanks to Ned Ludd <solar@g.o> for the suggestion. | |
26 |
|
27 |
| 13240 | Don't show the package counter for "Uninstalling" messages. | |
28 |
| zmedico | | |
29 |
|
30 |
| 13241 | Bug #243220 - Show messages in emerge.log when old versions | |
31 |
| zmedico | are uninstalled for AUTOCLEAN. This reverts behavior so that | |
32 |
| | messages which used to be generated prior to portage-2.1.5.x | |
33 |
| | (when AUTOCLEAN was moved from emerge to dblink.treewalk()) | |
34 |
| | are generated once again. | |
35 |
|
36 |
| 13242 | In order to eliminate the possibility of integer overflay, | |
37 |
| zmedico | replace things like ((ret+=$?)) with ((ret|=$?)). Thanks to | |
38 |
| | zong_sharo for the suggestion. | |
39 |
|
40 |
|
41 |
Modified: main/branches/prefix/bin/ebuild-helpers/dobin |
42 |
=================================================================== |
43 |
--- main/branches/prefix/bin/ebuild-helpers/dobin 2009-03-29 04:09:11 UTC (rev 13242) |
44 |
+++ main/branches/prefix/bin/ebuild-helpers/dobin 2009-03-29 07:48:52 UTC (rev 13243) |
45 |
@@ -23,7 +23,7 @@ |
46 |
echo "!!! ${0##*/}: $x does not exist" 1>&2 |
47 |
false |
48 |
fi |
49 |
- ((ret+=$?)) |
50 |
+ ((ret|=$?)) |
51 |
done |
52 |
|
53 |
exit ${ret} |
54 |
|
55 |
Modified: main/branches/prefix/bin/ebuild-helpers/dodoc |
56 |
=================================================================== |
57 |
--- main/branches/prefix/bin/ebuild-helpers/dodoc 2009-03-29 04:09:11 UTC (rev 13242) |
58 |
+++ main/branches/prefix/bin/ebuild-helpers/dodoc 2009-03-29 07:48:52 UTC (rev 13243) |
59 |
@@ -21,7 +21,7 @@ |
60 |
ecompress --queue "${dir}/${x##*/}" |
61 |
elif [ ! -e "${x}" ] ; then |
62 |
echo "!!! ${0##*/}: $x does not exist" 1>&2 |
63 |
- ((++ret)) |
64 |
+ ((ret|=1)) |
65 |
fi |
66 |
done |
67 |
|
68 |
|
69 |
Modified: main/branches/prefix/bin/ebuild-helpers/doexe |
70 |
=================================================================== |
71 |
--- main/branches/prefix/bin/ebuild-helpers/doexe 2009-03-29 04:09:11 UTC (rev 13242) |
72 |
+++ main/branches/prefix/bin/ebuild-helpers/doexe 2009-03-29 07:48:52 UTC (rev 13243) |
73 |
@@ -35,7 +35,7 @@ |
74 |
echo "!!! ${0##*/}: $mysrc does not exist" 1>&2 |
75 |
false |
76 |
fi |
77 |
- ((ret+=$?)) |
78 |
+ ((ret|=$?)) |
79 |
done |
80 |
|
81 |
rm -rf "$TMP" |
82 |
|
83 |
Modified: main/branches/prefix/bin/ebuild-helpers/doins |
84 |
=================================================================== |
85 |
--- main/branches/prefix/bin/ebuild-helpers/doins 2009-03-29 04:09:11 UTC (rev 13242) |
86 |
+++ main/branches/prefix/bin/ebuild-helpers/doins 2009-03-29 07:48:52 UTC (rev 13243) |
87 |
@@ -97,9 +97,9 @@ |
88 |
mv "$TMP/1/$x_orig" "$x" |
89 |
fi |
90 |
while popd >/dev/null 2>&1 ; do true ; done |
91 |
- ((++success)) |
92 |
+ ((success|=1)) |
93 |
else |
94 |
- _doins "${x}" && ((++success)) |
95 |
+ _doins "${x}" && ((success|=1)) |
96 |
fi |
97 |
done |
98 |
rm -rf "$TMP" |
99 |
|
100 |
Modified: main/branches/prefix/bin/ebuild-helpers/dolib |
101 |
=================================================================== |
102 |
--- main/branches/prefix/bin/ebuild-helpers/dolib 2009-03-29 04:09:11 UTC (rev 13242) |
103 |
+++ main/branches/prefix/bin/ebuild-helpers/dolib 2009-03-29 07:48:52 UTC (rev 13243) |
104 |
@@ -35,7 +35,7 @@ |
105 |
echo "!!! ${0##*/}: ${x} does not exist" 1>&2 |
106 |
false |
107 |
fi |
108 |
- ((ret+=$?)) |
109 |
+ ((ret|=$?)) |
110 |
done |
111 |
|
112 |
exit ${ret} |
113 |
|
114 |
Modified: main/branches/prefix/bin/ebuild-helpers/doman |
115 |
=================================================================== |
116 |
--- main/branches/prefix/bin/ebuild-helpers/doman 2009-03-29 04:09:11 UTC (rev 13242) |
117 |
+++ main/branches/prefix/bin/ebuild-helpers/doman 2009-03-29 07:48:52 UTC (rev 13243) |
118 |
@@ -47,14 +47,14 @@ |
119 |
fi |
120 |
|
121 |
install -m0644 "${x}" "${ED}/usr/share/man/${mandir}/${name}" |
122 |
- ((ret+=$?)) |
123 |
+ ((ret|=$?)) |
124 |
elif [[ ! -e ${x} ]] ; then |
125 |
echo "!!! ${0##*/}: $x does not exist" 1>&2 |
126 |
- ((++ret)) |
127 |
+ ((ret|=1)) |
128 |
fi |
129 |
else |
130 |
vecho "doman: '${x}' is probably not a man page; skipping" 1>&2 |
131 |
- ((++ret)) |
132 |
+ ((ret|=1)) |
133 |
fi |
134 |
done |
135 |
|
136 |
|
137 |
Modified: main/branches/prefix/bin/ebuild-helpers/domo |
138 |
=================================================================== |
139 |
--- main/branches/prefix/bin/ebuild-helpers/domo 2009-03-29 04:09:11 UTC (rev 13242) |
140 |
+++ main/branches/prefix/bin/ebuild-helpers/domo 2009-03-29 07:48:52 UTC (rev 13243) |
141 |
@@ -26,7 +26,7 @@ |
142 |
echo "!!! ${0##*/}: $x does not exist" 1>&2 |
143 |
false |
144 |
fi |
145 |
- ((ret+=$?)) |
146 |
+ ((ret|=$?)) |
147 |
done |
148 |
|
149 |
exit $ret |
150 |
|
151 |
Modified: main/branches/prefix/bin/ebuild-helpers/dosbin |
152 |
=================================================================== |
153 |
--- main/branches/prefix/bin/ebuild-helpers/dosbin 2009-03-29 04:09:11 UTC (rev 13242) |
154 |
+++ main/branches/prefix/bin/ebuild-helpers/dosbin 2009-03-29 07:48:52 UTC (rev 13243) |
155 |
@@ -21,7 +21,7 @@ |
156 |
echo "!!! ${0##*/}: ${x} does not exist" 1>&2 |
157 |
false |
158 |
fi |
159 |
- ((ret+=$?)) |
160 |
+ ((ret|=$?)) |
161 |
done |
162 |
|
163 |
exit ${ret} |
164 |
|
165 |
Modified: main/branches/prefix/bin/ebuild-helpers/dosed |
166 |
=================================================================== |
167 |
--- main/branches/prefix/bin/ebuild-helpers/dosed 2009-03-29 04:09:11 UTC (rev 13242) |
168 |
+++ main/branches/prefix/bin/ebuild-helpers/dosed 2009-03-29 07:48:52 UTC (rev 13243) |
169 |
@@ -22,7 +22,7 @@ |
170 |
echo "${y} is not a regular file!" >&2 |
171 |
false |
172 |
fi |
173 |
- ((ret+=$?)) |
174 |
+ ((ret|=$?)) |
175 |
else |
176 |
mysed="${x}" |
177 |
fi |
178 |
@@ -30,7 +30,7 @@ |
179 |
|
180 |
if [ $file_found = 0 ] ; then |
181 |
echo "!!! ${0##*/}: $y does not exist" 1>&2 |
182 |
- ((ret+=1)) |
183 |
+ ((ret|=1)) |
184 |
fi |
185 |
|
186 |
exit $ret |
187 |
|
188 |
Modified: main/branches/prefix/bin/ebuild-helpers/ecompress |
189 |
=================================================================== |
190 |
--- main/branches/prefix/bin/ebuild-helpers/ecompress 2009-03-29 04:09:11 UTC (rev 13242) |
191 |
+++ main/branches/prefix/bin/ebuild-helpers/ecompress 2009-03-29 07:48:52 UTC (rev 13243) |
192 |
@@ -75,7 +75,7 @@ |
193 |
for x in "$@" ; do |
194 |
[[ ${x##*.} =~ $mask_ext_re ]] && continue |
195 |
filtered_args[$i]=$x |
196 |
- (( i++ )) |
197 |
+ ((i|=1)) |
198 |
done |
199 |
[ $i -eq 0 ] && exit 0 |
200 |
set -- "${filtered_args[@]}" |
201 |
|
202 |
Modified: main/branches/prefix/bin/ebuild-helpers/ecompressdir |
203 |
=================================================================== |
204 |
--- main/branches/prefix/bin/ebuild-helpers/ecompressdir 2009-03-29 04:09:11 UTC (rev 13242) |
205 |
+++ main/branches/prefix/bin/ebuild-helpers/ecompressdir 2009-03-29 07:48:52 UTC (rev 13243) |
206 |
@@ -54,7 +54,7 @@ |
207 |
|
208 |
# first we act on all the files |
209 |
find "${dir}" -type f ${negate} -iname '*'${suffix} -print0 | ${XARGS} -0 ${binary} |
210 |
- ((ret+=$?)) |
211 |
+ ((ret|=$?)) |
212 |
|
213 |
find "${dir}" -type l -print0 | \ |
214 |
while read -d $'\0' brokenlink ; do |
215 |
@@ -67,7 +67,7 @@ |
216 |
[[ ${act} == "compress" ]] \ |
217 |
&& ln -snf "${newdest}" "${brokenlink}${suffix}" \ |
218 |
|| ln -snf "${newdest}" "${brokenlink%${suffix}}" |
219 |
- ((ret+=$?)) |
220 |
+ ((ret|=$?)) |
221 |
done |
222 |
} |
223 |
|
224 |
|
225 |
Modified: main/branches/prefix/bin/ebuild-helpers/prepallman |
226 |
=================================================================== |
227 |
--- main/branches/prefix/bin/ebuild-helpers/prepallman 2009-03-29 04:09:11 UTC (rev 13242) |
228 |
+++ main/branches/prefix/bin/ebuild-helpers/prepallman 2009-03-29 07:48:52 UTC (rev 13243) |
229 |
@@ -9,7 +9,7 @@ |
230 |
while read mandir ; do |
231 |
mandir=${mandir#${ED}} |
232 |
prepman "${mandir%/man}" |
233 |
- ((ret+=$?)) |
234 |
+ ((ret|=$?)) |
235 |
done < "${T}"/prepallman.filelist |
236 |
|
237 |
exit ${ret} |
238 |
|
239 |
Modified: main/branches/prefix/pym/_emerge/__init__.py |
240 |
=================================================================== |
241 |
--- main/branches/prefix/pym/_emerge/__init__.py 2009-03-29 04:09:11 UTC (rev 13242) |
242 |
+++ main/branches/prefix/pym/_emerge/__init__.py 2009-03-29 07:48:52 UTC (rev 13243) |
243 |
@@ -4062,11 +4062,18 @@ |
244 |
if pkg.installed: |
245 |
action_desc = "Uninstalling" |
246 |
preposition = "from" |
247 |
+ counter_str = "" |
248 |
else: |
249 |
action_desc = "Installing" |
250 |
preposition = "to" |
251 |
+ counter_str = "(%s of %s) " % \ |
252 |
+ (colorize("MERGE_LIST_PROGRESS", str(pkg_count.curval)), |
253 |
+ colorize("MERGE_LIST_PROGRESS", str(pkg_count.maxval))) |
254 |
|
255 |
- msg = "%s %s" % (action_desc, colorize("GOOD", pkg.cpv)) |
256 |
+ msg = "%s %s%s" % \ |
257 |
+ (action_desc, |
258 |
+ counter_str, |
259 |
+ colorize("GOOD", pkg.cpv)) |
260 |
|
261 |
if pkg.root != "/": |
262 |
msg += " %s %s" % (preposition, pkg.root) |
263 |
@@ -10014,7 +10021,7 @@ |
264 |
|
265 |
class _iface_class(SlotObject): |
266 |
__slots__ = ("dblinkEbuildPhase", "dblinkDisplayMerge", |
267 |
- "dblinkElog", "fetch", "register", "schedule", |
268 |
+ "dblinkElog", "dblinkEmergeLog", "fetch", "register", "schedule", |
269 |
"scheduleSetup", "scheduleUnpack", "scheduleYield", |
270 |
"unregister") |
271 |
|
272 |
@@ -10143,6 +10150,7 @@ |
273 |
dblinkEbuildPhase=self._dblink_ebuild_phase, |
274 |
dblinkDisplayMerge=self._dblink_display_merge, |
275 |
dblinkElog=self._dblink_elog, |
276 |
+ dblinkEmergeLog=self._dblink_emerge_log, |
277 |
fetch=fetch_iface, register=self._register, |
278 |
schedule=self._schedule_wait, |
279 |
scheduleSetup=self._schedule_setup, |
280 |
@@ -10454,6 +10462,9 @@ |
281 |
if log_file is not None: |
282 |
log_file.close() |
283 |
|
284 |
+ def _dblink_emerge_log(self, msg): |
285 |
+ self._logger.log(msg) |
286 |
+ |
287 |
def _dblink_display_merge(self, pkg_dblink, msg, level=0, noiselevel=0): |
288 |
log_path = pkg_dblink.settings.get("PORTAGE_LOG_FILE") |
289 |
background = self._background |
290 |
|
291 |
Modified: main/branches/prefix/pym/portage/dbapi/vartree.py |
292 |
=================================================================== |
293 |
--- main/branches/prefix/pym/portage/dbapi/vartree.py 2009-03-29 04:09:11 UTC (rev 13242) |
294 |
+++ main/branches/prefix/pym/portage/dbapi/vartree.py 2009-03-29 07:48:52 UTC (rev 13243) |
295 |
@@ -3623,6 +3623,14 @@ |
296 |
if var_name == 'SLOT': |
297 |
slot = val |
298 |
|
299 |
+ if not slot.strip(): |
300 |
+ slot = self.settings.get(var_name, '') |
301 |
+ if not slot.strip(): |
302 |
+ showMessage("!!! SLOT is undefined\n", |
303 |
+ level=logging.ERROR, noiselevel=-1) |
304 |
+ return 1 |
305 |
+ write_atomic(os.path.join(inforoot, var_name), slot + '\n') |
306 |
+ |
307 |
if val != self.settings.get(var_name, ''): |
308 |
self._eqawarn('preinst', |
309 |
["QA Notice: Expected %s='%s', got '%s'\n" % \ |
310 |
@@ -3638,10 +3646,12 @@ |
311 |
for v in self.vartree.dbapi.cp_list(self.mysplit[0]): |
312 |
otherversions.append(v.split("/")[1]) |
313 |
|
314 |
+ cp = self.mysplit[0] |
315 |
+ slot_atom = "%s:%s" % (cp, slot) |
316 |
+ |
317 |
# filter any old-style virtual matches |
318 |
- slot_matches = [cpv for cpv in self.vartree.dbapi.match( |
319 |
- "%s:%s" % (cpv_getkey(self.mycpv), slot)) \ |
320 |
- if cpv_getkey(cpv) == cpv_getkey(self.mycpv)] |
321 |
+ slot_matches = [cpv for cpv in self.vartree.dbapi.match(slot_atom) \ |
322 |
+ if cpv_getkey(cpv) == cp] |
323 |
|
324 |
if self.mycpv not in slot_matches and \ |
325 |
self.vartree.dbapi.cpv_exists(self.mycpv): |
326 |
@@ -4002,7 +4012,17 @@ |
327 |
match_from_list(PORTAGE_PACKAGE_ATOM, [self.mycpv]): |
328 |
reinstall_self = True |
329 |
|
330 |
+ if scheduler is None: |
331 |
+ def emerge_log(msg): |
332 |
+ pass |
333 |
+ else: |
334 |
+ emerge_log = scheduler.dblinkEmergeLog |
335 |
+ |
336 |
autoclean = self.settings.get("AUTOCLEAN", "yes") == "yes" |
337 |
+ |
338 |
+ if autoclean: |
339 |
+ emerge_log(" >>> AUTOCLEAN: %s" % (slot_atom,)) |
340 |
+ |
341 |
others_in_slot.append(self) # self has just been merged |
342 |
for dblnk in list(others_in_slot): |
343 |
if dblnk is self: |
344 |
@@ -4010,10 +4030,17 @@ |
345 |
if not (autoclean or dblnk.mycpv == self.mycpv or reinstall_self): |
346 |
continue |
347 |
showMessage(">>> Safely unmerging already-installed instance...\n") |
348 |
+ emerge_log(" === Unmerging... (%s)" % (dblnk.mycpv,)) |
349 |
others_in_slot.remove(dblnk) # dblnk will unmerge itself now |
350 |
dblnk._linkmap_broken = self._linkmap_broken |
351 |
- dblnk.unmerge(trimworld=0, ldpath_mtimes=prev_mtimes, |
352 |
- others_in_slot=others_in_slot) |
353 |
+ unmerge_rval = dblnk.unmerge(trimworld=0, |
354 |
+ ldpath_mtimes=prev_mtimes, others_in_slot=others_in_slot) |
355 |
+ |
356 |
+ if unmerge_rval == os.EX_OK: |
357 |
+ emerge_log(" >>> unmerge success: %s" % (dblnk.mycpv,)) |
358 |
+ else: |
359 |
+ emerge_log(" !!! unmerge FAILURE: %s" % (dblnk.mycpv,)) |
360 |
+ |
361 |
# TODO: Check status and abort if necessary. |
362 |
dblnk.delete() |
363 |
showMessage(">>> Original instance of package unmerged safely.\n") |