summaryrefslogtreecommitdiffstats
path: root/pym/portage.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-01-09 20:34:27 +0000
committerZac Medico <zmedico@gentoo.org>2007-01-09 20:34:27 +0000
commit7bd12272120465a6ccc80a2281b6333f7d3a5425 (patch)
treede8cebf03337f1d18555bf3778228db248efd049 /pym/portage.py
parent045385c4f079c6f0f4a30076ae1e366f6d7f5ef4 (diff)
downloadportage-7bd12272120465a6ccc80a2281b6333f7d3a5425.tar.gz
portage-7bd12272120465a6ccc80a2281b6333f7d3a5425.tar.bz2
portage-7bd12272120465a6ccc80a2281b6333f7d3a5425.zip
For bug #161003, disallow virtuals in package.provided and document it. Thanks to Robin Johnson <robbat2@gentoo.org> for the initial patch.
svn path=/main/trunk/; revision=5502
Diffstat (limited to 'pym/portage.py')
-rw-r--r--pym/portage.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/pym/portage.py b/pym/portage.py
index 52d49396d..985ee4e79 100644
--- a/pym/portage.py
+++ b/pym/portage.py
@@ -1348,13 +1348,31 @@ class config:
pkgprovidedlines = [grabfile(os.path.join(x, "package.provided")) for x in self.profiles]
pkgprovidedlines = stack_lists(pkgprovidedlines, incremental=1)
+ has_invalid_data = False
for x in range(len(pkgprovidedlines)-1, -1, -1):
+ myline = pkgprovidedlines[x]
+ if not isvalidatom("=" + myline):
+ writemsg("Invalid package name in package.provided:" + \
+ " %s\n" % myline, noiselevel=-1)
+ has_invalid_data = True
+ del pkgprovidedlines[x]
+ continue
cpvr = catpkgsplit(pkgprovidedlines[x])
if not cpvr or cpvr[0] == "null":
writemsg("Invalid package name in package.provided: "+pkgprovidedlines[x]+"\n",
noiselevel=-1)
+ has_invalid_data = True
del pkgprovidedlines[x]
-
+ continue
+ if cpvr[0] == "virtual":
+ writemsg("Virtual package in package.provided: %s\n" % \
+ myline, noiselevel=-1)
+ has_invalid_data = True
+ del pkgprovidedlines[x]
+ continue
+ if has_invalid_data:
+ writemsg("See portage(5) for correct package.provided usage.\n",
+ noiselevel=-1)
self.pprovideddict = {}
for x in pkgprovidedlines:
cpv=catpkgsplit(x)