Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r13688 - main/trunk/pym/_emerge
Date: Thu, 25 Jun 2009 01:54:01
Message-Id: E1MJeA3-00009m-9c@stork.gentoo.org
1 Author: zmedico
2 Date: 2009-06-25 01:53:58 +0000 (Thu, 25 Jun 2009)
3 New Revision: 13688
4
5 Modified:
6 main/trunk/pym/_emerge/depgraph.py
7 Log:
8 Use depgraph._pkg() to construct Package instances inside
9 _select_pkg_highest_available_imp().
10
11
12 Modified: main/trunk/pym/_emerge/depgraph.py
13 ===================================================================
14 --- main/trunk/pym/_emerge/depgraph.py 2009-06-25 00:45:05 UTC (rev 13687)
15 +++ main/trunk/pym/_emerge/depgraph.py 2009-06-25 01:53:58 UTC (rev 13688)
16 @@ -1875,9 +1875,7 @@
17
18 if not cpv_list:
19 continue
20 - pkg_status = "merge"
21 - if installed or onlydeps:
22 - pkg_status = "nomerge"
23 +
24 # descending order
25 cpv_list.reverse()
26 for cpv in cpv_list:
27 @@ -1889,18 +1887,11 @@
28 # in case there is a visible downgrade.
29 continue
30 reinstall_for_flags = None
31 - cache_key = (pkg_type, root, cpv, pkg_status)
32 - pkg = self._pkg_cache.get(cache_key)
33 - if pkg is None:
34 - try:
35 - metadata = izip(db_keys, db.aux_get(cpv, db_keys))
36 - except KeyError:
37 - continue
38 - pkg = Package(built=built, cpv=cpv,
39 - installed=installed, metadata=metadata,
40 - onlydeps=onlydeps, root_config=root_config,
41 - type_name=pkg_type)
42 - self._pkg_cache[pkg] = pkg
43 + try:
44 + pkg = self._pkg(cpv, pkg_type, root_config,
45 + installed=installed, onlydeps=onlydeps)
46 + except portage.exception.PackageNotFound:
47 + continue
48
49 if not installed or (built and matched_packages):
50 # Only enforce visibility on installed packages
51 @@ -2194,18 +2185,24 @@
52 return 0
53 return 1
54
55 - def _pkg(self, cpv, type_name, root_config, installed=False):
56 + def _pkg(self, cpv, type_name, root_config, installed=False,
57 + onlydeps=False):
58 """
59 Get a package instance from the cache, or create a new
60 - one if necessary. Raises KeyError from aux_get if it
61 + one if necessary. Raises PackageNotFound from aux_get if it
62 failures for some reason (package does not exist or is
63 corrupt).
64 """
65 operation = "merge"
66 - if installed:
67 + if installed or onlydeps:
68 operation = "nomerge"
69 pkg = self._pkg_cache.get(
70 (type_name, root_config.root, cpv, operation))
71 + if pkg is None and onlydeps and not installed:
72 + # Maybe it already got pulled in as a "merge" node.
73 + pkg = self.mydbapi[root_config.root].get(
74 + (type_name, root_config.root, cpv, 'merge'))
75 +
76 if pkg is None:
77 tree_type = self.pkg_tree_map[type_name]
78 db = root_config.trees[tree_type].dbapi
79 @@ -2216,8 +2213,8 @@
80 except KeyError:
81 raise portage.exception.PackageNotFound(cpv)
82 pkg = Package(built=(type_name != "ebuild"), cpv=cpv,
83 - metadata=metadata,
84 - root_config=root_config, installed=installed)
85 + installed=installed, metadata=metadata,
86 + root_config=root_config, type_name=type_name)
87 self._pkg_cache[pkg] = pkg
88 return pkg