Gentoo Archives: gentoo-commits

From: "Fabian Groffen (grobian)" <grobian@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r14145 - in main/branches/prefix/pym: _emerge portage/dbapi
Date: Mon, 24 Aug 2009 09:42:28
Message-Id: E1MfW4I-0002lx-44@stork.gentoo.org
1 Author: grobian
2 Date: 2009-08-24 09:42:25 +0000 (Mon, 24 Aug 2009)
3 New Revision: 14145
4
5 Modified:
6 main/branches/prefix/pym/_emerge/Scheduler.py
7 main/branches/prefix/pym/portage/dbapi/vartree.py
8 Log:
9 Merged from trunk -r14127:14130
10
11 | 14128 | Make Scheduler._choose_pkg() prefer uninstall operations |
12 | zmedico | when available. |
13
14 | 14129 | In Scheduler._schedule_tasks_imp(), add uninstall operations |
15 | zmedico | to the front of the merge queue. |
16
17 | 14130 | Bug #282306 - Inside dblink._find_libs_to_preserve(), fall |
18 | zmedico | back to utf_8 encoding if a path cannot be encoded under the |
19 | | user's chosen encoding. This fixes the traceback shown in |
20 | | bug 282115, comment #6. |
21
22
23 Modified: main/branches/prefix/pym/_emerge/Scheduler.py
24 ===================================================================
25 --- main/branches/prefix/pym/_emerge/Scheduler.py 2009-08-24 09:40:49 UTC (rev 14144)
26 +++ main/branches/prefix/pym/_emerge/Scheduler.py 2009-08-24 09:42:25 UTC (rev 14145)
27 @@ -1164,13 +1164,23 @@
28 self._prune_digraph()
29
30 chosen_pkg = None
31 - later = set(self._pkg_queue)
32 +
33 + # Prefer uninstall operations when available.
34 + graph = self._digraph
35 for pkg in self._pkg_queue:
36 - later.remove(pkg)
37 - if not self._dependent_on_scheduled_merges(pkg, later):
38 + if pkg.operation == 'uninstall' and \
39 + not graph.child_nodes(pkg):
40 chosen_pkg = pkg
41 break
42
43 + if chosen_pkg is None:
44 + later = set(self._pkg_queue)
45 + for pkg in self._pkg_queue:
46 + later.remove(pkg)
47 + if not self._dependent_on_scheduled_merges(pkg, later):
48 + chosen_pkg = pkg
49 + break
50 +
51 if chosen_pkg is not None:
52 self._pkg_queue.remove(chosen_pkg)
53
54 @@ -1350,7 +1360,7 @@
55 if pkg.installed:
56 merge = PackageMerge(merge=task)
57 merge.addExitListener(self._merge_exit)
58 - self._task_queues.merge.add(merge)
59 + self._task_queues.merge.addFront(merge)
60
61 elif pkg.built:
62 self._jobs += 1
63
64 Modified: main/branches/prefix/pym/portage/dbapi/vartree.py
65 ===================================================================
66 --- main/branches/prefix/pym/portage/dbapi/vartree.py 2009-08-24 09:40:49 UTC (rev 14144)
67 +++ main/branches/prefix/pym/portage/dbapi/vartree.py 2009-08-24 09:42:25 UTC (rev 14145)
68 @@ -3424,6 +3424,23 @@
69 provider_nodes = set()
70 # Create provider nodes and add them to the graph.
71 for f_abs in old_contents:
72 +
73 + if os is _os_merge:
74 + try:
75 + _unicode_encode(f_abs,
76 + encoding=_encodings['merge'], errors='strict')
77 + except UnicodeEncodeError:
78 + # The package appears to have been merged with a
79 + # different value of sys.getfilesystemencoding(),
80 + # so fall back to utf_8 if appropriate.
81 + try:
82 + _unicode_encode(f_abs,
83 + encoding=_encodings['fs'], errors='strict')
84 + except UnicodeEncodeError:
85 + pass
86 + else:
87 + os = portage.os
88 +
89 f = f_abs[root_len:]
90 if self.isowner(f, root):
91 continue