[Treepkg-commits] r362 - branches/treepkg-status/treepkg/info
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Mon Jul 12 17:47:43 CEST 2010
Author: bricks
Date: 2010-07-12 17:47:42 +0200 (Mon, 12 Jul 2010)
New Revision: 362
Added:
branches/treepkg-status/treepkg/info/package.py
Modified:
branches/treepkg-status/treepkg/info/status.py
branches/treepkg-status/treepkg/info/status.xsd
Log:
moved packages and logs to revision tag
implemented os and arch info
Added: branches/treepkg-status/treepkg/info/package.py
===================================================================
--- branches/treepkg-status/treepkg/info/package.py 2010-07-12 15:06:22 UTC (rev 361)
+++ branches/treepkg-status/treepkg/info/package.py 2010-07-12 15:47:42 UTC (rev 362)
@@ -0,0 +1,44 @@
+# Copyright (C) 2010 by Intevation GmbH
+# Authors:
+# Bjoern Ricks <bjoern.ricks at intevation.de>
+#
+# This program is free software under the GPL (>=v2)
+# Read the file COPYING coming with the software for details.
+
+"""Classes to read information from binary packages """
+
+import os.path
+
+from treepkg import run
+
+from treepkg.cmdexpand import cmdexpand
+
+
+class DebianPackage:
+
+ def __init__(self, filename):
+ self.filename = filename
+
+ def is_package(self):
+ extension = os.path.splitext(self.filename)[1]
+ return extension.lower() == ".deb"
+
+ def get_architecture(self):
+ if not self.is_package():
+ return None
+ arch = run.capture_output(cmdexpand("dpkg-deb -f $debfile Architecture",
+ debfile=self.filename))
+ return arch.strip()
+
+class BinaryPackage:
+
+ def __init__(self, filename):
+ self.filename = filename
+ self.packagetypes = []
+ self.packagetypes.append(DebianPackage(self.filename))
+
+ def get_architecture(self):
+ for packagetype in self.packagetypes:
+ retval = packagetype.get_architecture()
+ if not retval is None:
+ return retval
Modified: branches/treepkg-status/treepkg/info/status.py
===================================================================
--- branches/treepkg-status/treepkg/info/status.py 2010-07-12 15:06:22 UTC (rev 361)
+++ branches/treepkg-status/treepkg/info/status.py 2010-07-12 15:47:42 UTC (rev 362)
@@ -12,6 +12,7 @@
from treepkg.report import get_packager_group
from treepkg.util import md5sum
+from treepkg.info.package import BinaryPackage
TREEPKG_NAMESPACE_URI = "http://wald.intevation.org/projects/treepkg/"
TREEPKG_NAMESPACE_PREFIX = "tpkg"
@@ -49,39 +50,42 @@
if self.numnewestrev > 0:
revisions = revisions[:self.numnewestrev]
+ os = track.os
+ arch = None
+
for rev in revisions:
revision = rev.revision
rules_revision = rev.rules_revision
status = rev.status.status.description # extend status
- platforminfo = self.get_platform(rev)
- revinfo = TreepkgTrackRevisionInfo(revision, rules_revision,
+
+ sources = rev.list_source_files()
+ binaries = rev.list_binary_files()
+ for binary in binaries: # get arch
+ binpackage = BinaryPackage(binary)
+ arch = binpackage.get_architecture()
+ if not arch is None:
+ break;
+ platforminfo = TreepkgPlatformInfo(os, arch)
+ revinfo = TreepkgTrackRevisionInfo(revision, rules_revision,
status, platforminfo)
+ logs = rev.get_log_files()
+ for (title, filename) in logs:
+ loginfo = TreepkgLogInfo(title, filename)
+ revinfo.add_log(loginfo)
+ for source in sources:
+ self.add_package(source, "source", revinfo)
+ for binary in binaries:
+ self.add_package(binary, "binary", revinfo)
+
trackinfo.add_revision(revinfo)
- def get_platform(self, revision):
- # FIXME
- os = "abc os"
- arch = "def arch"
- platforminfo = TreepkgPlatformInfo(os, arch)
- logs = revision.get_log_files()
- for (title, filename) in logs:
- loginfo = TreepkgLogInfo(title, filename)
- platforminfo.add_log(loginfo)
- sources = revision.list_source_files()
- for source in sources:
- self.add_package(source, "source", platforminfo)
- binaries = revision.list_binary_files()
- for binary in binaries:
- self.add_package(binary, "binary", platforminfo)
- return platforminfo
-
- def add_package(self, file, type, platform):
+ def add_package(self, file, type, revision):
name = os.path.basename(file)
checksum = md5sum(file)
checksuminfo = TreepkgChecksumInfo(checksum, "md5")
pkginfo = TreepkgPackageInfo(name, file, type)
pkginfo.add_checksum(checksuminfo)
- platform.add_package(pkginfo)
+ revision.add_package(pkginfo)
class TreepkgRootInfo:
@@ -153,7 +157,15 @@
self.rules = rules
self.status = status
self.platform = platform
+ self.packages = []
+ self.logs = []
+ def add_package(self, package):
+ self.packages.append(package)
+
+ def add_log(self, log):
+ self.logs.append(log)
+
def toxml(self):
(doc, root) = createTpkgRoot("revision")
# add <number>
@@ -175,6 +187,16 @@
root.appendChild(statusele)
# add <platform>
root.appendChild(self.platform.toxml())
+ # add <packages>
+ packagesele = createTpkgElement(doc, "packages")
+ for package in self.packages:
+ packagesele.appendChild(package.toxml())
+ root.appendChild(packagesele)
+ # add <logs>
+ logsele = createTpkgElement(doc, "logs")
+ for log in self.logs:
+ logsele.appendChild(log.toxml())
+ root.appendChild(logsele)
return root
class TreepkgPlatformInfo:
@@ -182,15 +204,9 @@
def __init__(self, os, arch):
self.os = os
self.arch = arch
- self.packages = []
- self.logs = []
+ if self.arch is None:
+ self.arch = "unkown"
- def add_package(self, package):
- self.packages.append(package)
-
- def add_log(self, log):
- self.logs.append(log)
-
def toxml(self):
(doc, root) = createTpkgRoot("platform")
# add <os>
@@ -203,16 +219,6 @@
text = doc.createTextNode(self.arch)
archele.appendChild(text)
root.appendChild(archele)
- # add <packages>
- packagesele = createTpkgElement(doc, "packages")
- for package in self.packages:
- packagesele.appendChild(package.toxml())
- root.appendChild(packagesele)
- # add <logs>
- logsele = createTpkgElement(doc, "logs")
- for log in self.logs:
- logsele.appendChild(log.toxml())
- root.appendChild(logsele)
return root
class TreepkgLogInfo:
Modified: branches/treepkg-status/treepkg/info/status.xsd
===================================================================
--- branches/treepkg-status/treepkg/info/status.xsd 2010-07-12 15:06:22 UTC (rev 361)
+++ branches/treepkg-status/treepkg/info/status.xsd 2010-07-12 15:47:42 UTC (rev 362)
@@ -44,6 +44,8 @@
<xsd:element name="rules" type="xsd:string" minOccurs="1"/>
<xsd:element name="status" type="tpkg:revisionstatus" minOccurs="1"/>
<xsd:element name="platform" type="tpkg:platform" minOccurs="1"/>
+ <xsd:element name="packages" type="tpkg:packages"/>
+ <xsd:element name="logs" type="tpkg:logs"/>
</xsd:sequence>
</xsd:complexType>
@@ -57,9 +59,7 @@
<xsd:sequence>
<xsd:element name="os" type="xsd:string"/>
<xsd:element name="arch" type="xsd:string"/>
- <xsd:element name="packages" type="tpkg:packages"/>
- <xsd:element name="logs" type="tpkg:logs"/>
- </xsd:sequence>
+ </xsd:sequence>
</xsd:complexType>
<xsd:complexType name="logs">
More information about the Treepkg-commits
mailing list