1 |
Author: zmedico |
2 |
Date: 2009-04-30 06:45:37 +0000 (Thu, 30 Apr 2009) |
3 |
New Revision: 13422 |
4 |
|
5 |
Modified: |
6 |
main/branches/2.1.6/pym/_emerge/__init__.py |
7 |
main/branches/2.1.6/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. (trunk r13241) |
13 |
|
14 |
Modified: main/branches/2.1.6/pym/_emerge/__init__.py |
15 |
=================================================================== |
16 |
--- main/branches/2.1.6/pym/_emerge/__init__.py 2009-04-30 06:45:05 UTC (rev 13421) |
17 |
+++ main/branches/2.1.6/pym/_emerge/__init__.py 2009-04-30 06:45:37 UTC (rev 13422) |
18 |
@@ -9969,7 +9969,7 @@ |
19 |
|
20 |
class _iface_class(SlotObject): |
21 |
__slots__ = ("dblinkEbuildPhase", "dblinkDisplayMerge", |
22 |
- "dblinkElog", "fetch", "register", "schedule", |
23 |
+ "dblinkElog", "dblinkEmergeLog", "fetch", "register", "schedule", |
24 |
"scheduleSetup", "scheduleUnpack", "scheduleYield", |
25 |
"unregister") |
26 |
|
27 |
@@ -10098,6 +10098,7 @@ |
28 |
dblinkEbuildPhase=self._dblink_ebuild_phase, |
29 |
dblinkDisplayMerge=self._dblink_display_merge, |
30 |
dblinkElog=self._dblink_elog, |
31 |
+ dblinkEmergeLog=self._dblink_emerge_log, |
32 |
fetch=fetch_iface, register=self._register, |
33 |
schedule=self._schedule_wait, |
34 |
scheduleSetup=self._schedule_setup, |
35 |
@@ -10409,6 +10410,9 @@ |
36 |
if log_file is not None: |
37 |
log_file.close() |
38 |
|
39 |
+ def _dblink_emerge_log(self, msg): |
40 |
+ self._logger.log(msg) |
41 |
+ |
42 |
def _dblink_display_merge(self, pkg_dblink, msg, level=0, noiselevel=0): |
43 |
log_path = pkg_dblink.settings.get("PORTAGE_LOG_FILE") |
44 |
background = self._background |
45 |
|
46 |
Modified: main/branches/2.1.6/pym/portage/dbapi/vartree.py |
47 |
=================================================================== |
48 |
--- main/branches/2.1.6/pym/portage/dbapi/vartree.py 2009-04-30 06:45:05 UTC (rev 13421) |
49 |
+++ main/branches/2.1.6/pym/portage/dbapi/vartree.py 2009-04-30 06:45:37 UTC (rev 13422) |
50 |
@@ -2068,6 +2068,14 @@ |
51 |
if var_name == 'SLOT': |
52 |
slot = val |
53 |
|
54 |
+ if not slot.strip(): |
55 |
+ slot = self.settings.get(var_name, '') |
56 |
+ if not slot.strip(): |
57 |
+ showMessage("!!! SLOT is undefined\n", |
58 |
+ level=logging.ERROR, noiselevel=-1) |
59 |
+ return 1 |
60 |
+ write_atomic(os.path.join(inforoot, var_name), slot + '\n') |
61 |
+ |
62 |
if val != self.settings.get(var_name, ''): |
63 |
self._eqawarn('preinst', |
64 |
["QA Notice: Expected %s='%s', got '%s'\n" % \ |
65 |
@@ -2083,10 +2091,12 @@ |
66 |
for v in self.vartree.dbapi.cp_list(self.mysplit[0]): |
67 |
otherversions.append(v.split("/")[1]) |
68 |
|
69 |
+ cp = self.mysplit[0] |
70 |
+ slot_atom = "%s:%s" % (cp, slot) |
71 |
+ |
72 |
# filter any old-style virtual matches |
73 |
- slot_matches = [cpv for cpv in self.vartree.dbapi.match( |
74 |
- "%s:%s" % (cpv_getkey(self.mycpv), slot)) \ |
75 |
- if cpv_getkey(cpv) == cpv_getkey(self.mycpv)] |
76 |
+ slot_matches = [cpv for cpv in self.vartree.dbapi.match(slot_atom) \ |
77 |
+ if cpv_getkey(cpv) == cp] |
78 |
|
79 |
if self.mycpv not in slot_matches and \ |
80 |
self.vartree.dbapi.cpv_exists(self.mycpv): |
81 |
@@ -2438,7 +2448,17 @@ |
82 |
match_from_list(PORTAGE_PACKAGE_ATOM, [self.mycpv]): |
83 |
reinstall_self = True |
84 |
|
85 |
+ if scheduler is None: |
86 |
+ def emerge_log(msg): |
87 |
+ pass |
88 |
+ else: |
89 |
+ emerge_log = scheduler.dblinkEmergeLog |
90 |
+ |
91 |
autoclean = self.settings.get("AUTOCLEAN", "yes") == "yes" |
92 |
+ |
93 |
+ if autoclean: |
94 |
+ emerge_log(" >>> AUTOCLEAN: %s" % (slot_atom,)) |
95 |
+ |
96 |
others_in_slot.append(self) # self has just been merged |
97 |
for dblnk in list(others_in_slot): |
98 |
if dblnk is self: |
99 |
@@ -2446,9 +2466,16 @@ |
100 |
if not (autoclean or dblnk.mycpv == self.mycpv or reinstall_self): |
101 |
continue |
102 |
showMessage(">>> Safely unmerging already-installed instance...\n") |
103 |
+ emerge_log(" === Unmerging... (%s)" % (dblnk.mycpv,)) |
104 |
others_in_slot.remove(dblnk) # dblnk will unmerge itself now |
105 |
- dblnk.unmerge(trimworld=0, ldpath_mtimes=prev_mtimes, |
106 |
- others_in_slot=others_in_slot) |
107 |
+ unmerge_rval = dblnk.unmerge(trimworld=0, |
108 |
+ ldpath_mtimes=prev_mtimes, others_in_slot=others_in_slot) |
109 |
+ |
110 |
+ if unmerge_rval == os.EX_OK: |
111 |
+ emerge_log(" >>> unmerge success: %s" % (dblnk.mycpv,)) |
112 |
+ else: |
113 |
+ emerge_log(" !!! unmerge FAILURE: %s" % (dblnk.mycpv,)) |
114 |
+ |
115 |
# TODO: Check status and abort if necessary. |
116 |
dblnk.delete() |
117 |
showMessage(">>> Original instance of package unmerged safely.\n") |