Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r13241 - in main/trunk/pym: _emerge portage/dbapi
Date: Sat, 28 Mar 2009 19:35:50
Message-Id: E1LneJo-0005Rd-7S@stork.gentoo.org
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")