Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r12309 - main/branches/2.1.6/pym/_emerge
Date: Thu, 25 Dec 2008 01:12:37
Message-Id: E1LFemA-0001H6-Rb@stork.gentoo.org
1 Author: zmedico
2 Date: 2008-12-25 01:12:33 +0000 (Thu, 25 Dec 2008)
3 New Revision: 12309
4
5 Modified:
6 main/branches/2.1.6/pym/_emerge/__init__.py
7 Log:
8 Bug #252167 - If the ebuild no longer exists or it's keywords have been dropped,
9 reject built instances (installed or binary). If --usepkgonly is enabled, assume
10 that the ebuild status should be ignored. (trunk r12278)
11
12 Modified: main/branches/2.1.6/pym/_emerge/__init__.py
13 ===================================================================
14 --- main/branches/2.1.6/pym/_emerge/__init__.py 2008-12-25 01:12:14 UTC (rev 12308)
15 +++ main/branches/2.1.6/pym/_emerge/__init__.py 2008-12-25 01:12:33 UTC (rev 12309)
16 @@ -5813,7 +5813,7 @@
17 calculated_use = True
18 self._pkg_cache[pkg] = pkg
19
20 - if not installed or (installed and matched_packages):
21 + if not installed or (built and matched_packages):
22 # Only enforce visibility on installed packages
23 # if there is at least one other visible package
24 # available. By filtering installed masked packages
25 @@ -5832,9 +5832,8 @@
26 # version is masked by KEYWORDS, but never
27 # reinstall the same exact version only due
28 # to a KEYWORDS mask.
29 - if installed and matched_packages and \
30 - pkgsettings._getMissingKeywords(
31 - pkg.cpv, pkg.metadata):
32 + if built and matched_packages:
33 +
34 different_version = None
35 for avail_pkg in matched_packages:
36 if not portage.dep.cpvequal(
37 @@ -5842,10 +5841,27 @@
38 different_version = avail_pkg
39 break
40 if different_version is not None:
41 - # Only reinstall for KEYWORDS if
42 - # it's not the same version.
43 - continue
44
45 + if installed and \
46 + pkgsettings._getMissingKeywords(
47 + pkg.cpv, pkg.metadata):
48 + continue
49 +
50 + # If the ebuild no longer exists or it's
51 + # keywords have been dropped, reject built
52 + # instances (installed or binary).
53 + # If --usepkgonly is enabled, assume that
54 + # the ebuild status should be ignored.
55 + if not usepkgonly:
56 + try:
57 + pkg_eb = self._pkg(
58 + pkg.cpv, "ebuild", root_config)
59 + except portage.exception.PackageNotFound:
60 + continue
61 + else:
62 + if not visible(pkgsettings, pkg_eb):
63 + continue
64 +
65 if not pkg.built and not calculated_use:
66 # This is avoided whenever possible because
67 # it's expensive.
68 @@ -6133,7 +6149,10 @@
69 db = root_config.trees[tree_type].dbapi
70 db_keys = list(self._trees_orig[root_config.root][
71 tree_type].dbapi._aux_cache_keys)
72 - metadata = izip(db_keys, db.aux_get(cpv, db_keys))
73 + try:
74 + metadata = izip(db_keys, db.aux_get(cpv, db_keys))
75 + except KeyError:
76 + raise portage.exception.PackageNotFound(cpv)
77 pkg = Package(cpv=cpv, metadata=metadata,
78 root_config=root_config, installed=installed)
79 if type_name == "ebuild":