- Package içerisinde de IsA birden fazla olabilir (PartOf olamaz tabi:)

- pisi.lyx içerisinde anlatılan merge ve override işlemi için "lame" iki fonksiyon yazdım. Elini ayağını düzeltiriz bunların yakında...
This commit is contained in:
Barış Metin
2005-06-29 09:19:02 +00:00
parent b91690a66f
commit db4ce18241
2 changed files with 60 additions and 3 deletions
+37 -3
View File
@@ -89,6 +89,7 @@ class SourceInfo:
self.name = getNodeText(node, "Name")
self.homepage = getNodeText(node, "HomePage")
self.packager = PackagerInfo(getNode(node, "Packager"))
self.summary = getNodeText(node, "Summary")
self.description = getNodeText(node, "Description")
self.license = map(getNodeText, getAllNodes(node, "License"))
self.isa = map(getNodeText, getAllNodes(node, "IsA"))
@@ -144,7 +145,7 @@ class PackageInfo(object):
self.name = getNodeText(node, "Name")
self.summary = getNodeText(node, "Summary")
self.description = getNodeText(node, "Description")
self.isa = getNodeText(node, "IsA")
self.isa = map(getNodeText, getAllNodes(node, "IsA"))
self.partof = getNodeText(node, "PartOf")
self.license = getNodeText(node, "License")
iDepElts = getAllNodes(node, "InstallDependencies/Dependency")
@@ -160,8 +161,8 @@ class PackageInfo(object):
xml.addTextNodeUnder(node, "Name", self.name)
xml.addTextNodeUnder(node, "Summary", self.summary)
xml.addTextNodeUnder(node, "Description", self.description)
if self.isa:
xml.addTextNodeUnder(node, "IsA", self.isa)
for isa in self.isa:
xml.addTextNodeUnder(node, "IsA", isa)
if self.partof:
xml.addTextNodeUnder(node, "PartOf", self.partof)
for dep in self.installDeps:
@@ -204,7 +205,40 @@ class SpecFile(XmlFile):
packageElts = self.getAllNodes("Package")
self.packages = [PackageInfo(p) for p in packageElts]
self.doMerges()
self.doOverrides()
self.unlink()
def doOverrides(self):
"""Override tags from Source in Packages. Some tags in Packages
overrides the tags from Source. There is a more detailed
description in documents."""
for pkg in self.packages:
if not pkg.partof:
pkg.paftof = self.source.partof
if not pkg.license:
pkg.licence = self.source.partof
def doMerges(self):
"""Merge tags from Source in Packages. Some tags in Packages merged
with the tags from Source. There is a more detailed
description in documents."""
for pkg in self.packages:
if not pkg.summary:
pkg.summary = self.source.summary
if not pkg.description:
pkg.description = self.source.description
if not pkg.isa:
pkg.isa = self.source.isa
def verify(self):
"""Verify PSPEC structures, are they what we want of them?"""
+23
View File
@@ -38,6 +38,29 @@ class SpecFileTestCase(unittest.TestCase):
if not matched:
self.fail("Failed to match pathname: %s" %pn)
def testIsAPartOf(self):
# test existence in Source
if not "library:util:optparser" in self.spec.source.isa:
self.fail("Failed to match isA in Source")
if not isinstance(self.spec.source.isa, list):
self.fail("source.isa is not a list, but it must be...")
if "rpm:archive" != self.spec.source.partof:
self.fail("Failed to match PartOf in Source")
# test existence in Package
pkg = self.spec.packages[0]
if not "library:util:optparser" in pkg.isa:
self.fail("Failed to match isA....")
if not isinstance(pkg.isa, list):
self.fail("source.isa is not a list, but it must be...")
print pkg.partof
if "rpm:archive" != pkg.partof:
self.fail("Failed to match PartOf")
def testCopy(self):
util.check_dir(config.tmp_dir())
self.spec.read("samples/popt/popt.pspec")