1 |
Author: zmedico |
2 |
Date: 2009-03-28 19:35:46 +0000 (Sat, 28 Mar 2009) |
3 |
New Revision: 13241 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
main/trunk/pym/portage/dbapi/vartree.py |
8 |
Log: |
9 |
Bug #243220 - Show messages in emerge.log when old versions are uninstalled |
10 |
for AUTOCLEAN. This reverts behavior so that messages which used to be |
11 |
generated prior to portage-2.1.5.x (when AUTOCLEAN was moved from emerge to |
12 |
dblink.treewalk()) are generated once again. |
13 |
|
14 |
|
15 |
Modified: main/trunk/pym/_emerge/__init__.py |
16 |
=================================================================== |
17 |
--- main/trunk/pym/_emerge/__init__.py 2009-03-28 01:39:49 UTC (rev 13240) |
18 |
+++ main/trunk/pym/_emerge/__init__.py 2009-03-28 19:35:46 UTC (rev 13241) |
19 |
@@ -9985,7 +9985,7 @@ |
20 |
|
21 |
class _iface_class(SlotObject): |
22 |
__slots__ = ("dblinkEbuildPhase", "dblinkDisplayMerge", |
23 |
- "dblinkElog", "fetch", "register", "schedule", |
24 |
+ "dblinkElog", "dblinkEmergeLog", "fetch", "register", "schedule", |
25 |
"scheduleSetup", "scheduleUnpack", "scheduleYield", |
26 |
"unregister") |
27 |
|
28 |
@@ -10114,6 +10114,7 @@ |
29 |
dblinkEbuildPhase=self._dblink_ebuild_phase, |
30 |
dblinkDisplayMerge=self._dblink_display_merge, |
31 |
dblinkElog=self._dblink_elog, |
32 |
+ dblinkEmergeLog=self._dblink_emerge_log, |
33 |
fetch=fetch_iface, register=self._register, |
34 |
schedule=self._schedule_wait, |
35 |
scheduleSetup=self._schedule_setup, |
36 |
@@ -10425,6 +10426,9 @@ |
37 |
if log_file is not None: |
38 |
log_file.close() |
39 |
|
40 |
+ def _dblink_emerge_log(self, msg): |
41 |
+ self._logger.log(msg) |
42 |
+ |
43 |
def _dblink_display_merge(self, pkg_dblink, msg, level=0, noiselevel=0): |
44 |
log_path = pkg_dblink.settings.get("PORTAGE_LOG_FILE") |
45 |
background = self._background |
46 |
|
47 |
Modified: main/trunk/pym/portage/dbapi/vartree.py |
48 |
=================================================================== |
49 |
--- main/trunk/pym/portage/dbapi/vartree.py 2009-03-28 01:39:49 UTC (rev 13240) |
50 |
+++ main/trunk/pym/portage/dbapi/vartree.py 2009-03-28 19:35:46 UTC (rev 13241) |
51 |
@@ -3091,6 +3091,14 @@ |
52 |
if var_name == 'SLOT': |
53 |
slot = val |
54 |
|
55 |
+ if not slot.strip(): |
56 |
+ slot = self.settings.get(var_name, '') |
57 |
+ if not slot.strip(): |
58 |
+ showMessage("!!! SLOT is undefined\n", |
59 |
+ level=logging.ERROR, noiselevel=-1) |
60 |
+ return 1 |
61 |
+ write_atomic(os.path.join(inforoot, var_name), slot + '\n') |
62 |
+ |
63 |
if val != self.settings.get(var_name, ''): |
64 |
self._eqawarn('preinst', |
65 |
["QA Notice: Expected %s='%s', got '%s'\n" % \ |
66 |
@@ -3106,10 +3114,12 @@ |
67 |
for v in self.vartree.dbapi.cp_list(self.mysplit[0]): |
68 |
otherversions.append(v.split("/")[1]) |
69 |
|
70 |
+ cp = self.mysplit[0] |
71 |
+ slot_atom = "%s:%s" % (cp, slot) |
72 |
+ |
73 |
# filter any old-style virtual matches |
74 |
- slot_matches = [cpv for cpv in self.vartree.dbapi.match( |
75 |
- "%s:%s" % (cpv_getkey(self.mycpv), slot)) \ |
76 |
- if cpv_getkey(cpv) == cpv_getkey(self.mycpv)] |
77 |
+ slot_matches = [cpv for cpv in self.vartree.dbapi.match(slot_atom) \ |
78 |
+ if cpv_getkey(cpv) == cp] |
79 |
|
80 |
if self.mycpv not in slot_matches and \ |
81 |
self.vartree.dbapi.cpv_exists(self.mycpv): |
82 |
@@ -3470,7 +3480,17 @@ |
83 |
match_from_list(PORTAGE_PACKAGE_ATOM, [self.mycpv]): |
84 |
reinstall_self = True |
85 |
|
86 |
+ if scheduler is None: |
87 |
+ def emerge_log(msg): |
88 |
+ pass |
89 |
+ else: |
90 |
+ emerge_log = scheduler.dblinkEmergeLog |
91 |
+ |
92 |
autoclean = self.settings.get("AUTOCLEAN", "yes") == "yes" |
93 |
+ |
94 |
+ if autoclean: |
95 |
+ emerge_log(" >>> AUTOCLEAN: %s" % (slot_atom,)) |
96 |
+ |
97 |
others_in_slot.append(self) # self has just been merged |
98 |
for dblnk in list(others_in_slot): |
99 |
if dblnk is self: |
100 |
@@ -3478,10 +3498,17 @@ |
101 |
if not (autoclean or dblnk.mycpv == self.mycpv or reinstall_self): |
102 |
continue |
103 |
showMessage(">>> Safely unmerging already-installed instance...\n") |
104 |
+ emerge_log(" === Unmerging... (%s)" % (dblnk.mycpv,)) |
105 |
others_in_slot.remove(dblnk) # dblnk will unmerge itself now |
106 |
dblnk._linkmap_broken = self._linkmap_broken |
107 |
- dblnk.unmerge(trimworld=0, ldpath_mtimes=prev_mtimes, |
108 |
- others_in_slot=others_in_slot) |
109 |
+ unmerge_rval = dblnk.unmerge(trimworld=0, |
110 |
+ ldpath_mtimes=prev_mtimes, others_in_slot=others_in_slot) |
111 |
+ |
112 |
+ if unmerge_rval == os.EX_OK: |
113 |
+ emerge_log(" >>> unmerge success: %s" % (dblnk.mycpv,)) |
114 |
+ else: |
115 |
+ emerge_log(" !!! unmerge FAILURE: %s" % (dblnk.mycpv,)) |
116 |
+ |
117 |
# TODO: Check status and abort if necessary. |
118 |
dblnk.delete() |
119 |
showMessage(">>> Original instance of package unmerged safely.\n") |