[Treepkg-commits] r372 - in branches/treepkg-status: bin treepkg/info
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Thu Jul 22 18:01:44 CEST 2010
Author: bricks
Date: 2010-07-22 18:01:43 +0200 (Thu, 22 Jul 2010)
New Revision: 372
Modified:
branches/treepkg-status/bin/publishdebianpackages.py
branches/treepkg-status/treepkg/info/status.py
Log:
improved publishdebianpackages and fixed a lot of bugs in the xml info parsing part
Modified: branches/treepkg-status/bin/publishdebianpackages.py
===================================================================
--- branches/treepkg-status/bin/publishdebianpackages.py 2010-07-22 11:09:52 UTC (rev 371)
+++ branches/treepkg-status/bin/publishdebianpackages.py 2010-07-22 16:01:43 UTC (rev 372)
@@ -27,7 +27,7 @@
config_desc = ["distribution", "section", "num_newest",
"build_user", "build_host", "build_listpackages",
"publish_user", "publish_host",
- ("architectures", shlex.split, "i386, source"),
+ ("architectures", shlex.split, "armel i386 source"),
("after_upload_hook", shlex.split),
("publish_remove_old_packages", convert_bool),
("publish_dir", remove_trailing_slashes),
@@ -76,8 +76,8 @@
return TreepkgInfo.fromxml(xml)
def get_binary_arch(arch):
- if not arch == "source":
- if not arch.startswith("binary"):
+ if not arch is None and not arch.startswith("binary") and \
+ not arch == "source":
arch = "binary-" + arch
return arch
@@ -88,8 +88,10 @@
destmd5sum = md5sum(destpackage)
return (destmd5sum != packagemd5sum)
-def copy_to_destdir(package, dir, arch, subdir):
+def copy_to_destdir(package, dir, arch, subdir, quiet = False):
scp_flags = []
+ if quiet:
+ scp_flags.append("-q")
destdir = os.path.join(dir, arch, subdir)
print "package: %s, destdir: %s" % (package.name, destdir)
md5sum = ""
@@ -104,42 +106,57 @@
#call(cmdexpand("scp -p @scp_flags $file $cachedir/", file=package.path,
# scp_flags=scp_flags, cachedir=destdir))
-def copy_to_cache(variables, track, revision, quiet, architectures=None):
+def copy_to_cache(variables, track, revision, quiet = False, architectures=None):
cachedir = variables["cachedir"]
- if quiet:
- scp_flags.append("-q")
treepkginfo = get_treepkg_info(variables)
- allowedarchs = set([]) # contains all wanted architectures (incl. source)
+ #allowedarchs = set([]) # contains all wanted architectures (incl. source)
allarchs = set([]) # contains all present architectures (incl. source)
binaryallpackages = []
# change e.g. armel in binary-armel
if not architectures is None:
- for arch in architectures:
- allowedarchs.append(get_binary_arch(arch))
+ allowedarchs = set([get_binary_arch(a) for a in architectures])
+ else:
+ allowedarchs = set([])
for track in treepkginfo.tracks:
for rev in track.revisions:
for package in rev.packages:
- # handle binary-all
- if package.arch == "binary-all":
- # add trackname for subdir name
- package.tackname = track.name
- binaryallpackages.append(package)
- break
- allarchs.append(package.arch)
+ arch = get_binary_arch(package.arch)
+ print "%s %s %s %s" % (track.name, package.name, package.type, package.arch)
+ if package.type == "binary":
+ # skip other files
+ if package.arch is None:
+ continue
+ # handle binary-all
+ if arch == "binary-all":
+ # add trackname for subdir name
+ package.trackname = track.name
+ binaryallpackages.append(package)
+ continue
+ allarchs.add(arch)
+ elif package.type == "source":
+ arch = package.type
# only copy requested archs
if len(allowedarchs) == 0 or \
- package.arch in allowedarchs:
- copy_to_destdir(package, cachedir, package.arch, track.name)
+ arch in allowedarchs:
+ copy_to_destdir(package, cachedir, arch, track.name,
+ quiet)
+ #print "architectures %s" % architectures
+ #print "allowed %s" % allowedarchs
+ #print "all %s" % allarchs
# copy binary-all packages
+ sourcearch = set(["source"])
if len(allowedarchs) == 0:
- binallarchs = allarchs - set(["source"])
+ binallarchs = allarchs - sourcearch
+ elif len(allarchs) == 0:
+ binallarchs = allowedarchs - sourcearch
else:
- binallarchs = allowedarchs & allarchs - set(["source"])
+ binallarchs = (allowedarchs & allarchs) - sourcearch
+ #print "binallarcgs %s" % binallarchs
for package in binaryallpackages:
for arch in binallarchs:
- copy_to_destdir(package, cachedir, arch, package.trackname)
+ copy_to_destdir(package, cachedir, arch, package.trackname, quiet)
def publish_packages_arch(variables, track, revision, dist, section,
quiet, architectures):
Modified: branches/treepkg-status/treepkg/info/status.py
===================================================================
--- branches/treepkg-status/treepkg/info/status.py 2010-07-22 11:09:52 UTC (rev 371)
+++ branches/treepkg-status/treepkg/info/status.py 2010-07-22 16:01:43 UTC (rev 372)
@@ -35,17 +35,27 @@
return textnode.data
def getChild(node, name, required=False):
+ childs = getChilds(node, name, required)
+ if not childs or len(childs) == 0:
+ return None
+ else:
+ return childs[0]
+
+def getChilds(node, name, required=False):
if not node:
if required:
- raise TreepkgInfoException("")
+ raise TreepkgInfoException("Element %s is required as child. But"
+ "parent element is not available.")
return None
childs = node.getElementsByTagName(name)
if not childs:
if required:
- raise TreepkgInfoException("")
+ raise TreepkgInfoException("Element %s is required as child for %s."
+ "The XML file must be invalid." % (name, node.nodeName))
return None
- return childs[0]
+ return childs
+
class TreepkgInfoException(Exception):
""" Exception class for TreepkgInfo """
@@ -73,7 +83,6 @@
doc = xml.dom.minidom.parseString(xmlstr)
root = doc.documentElement
if not root.tagName == "treepkg":
- print xmlstr
raise TreepkgInfoException("XML is not valid for treepkginfo")
return TreepkgRoot.fromxml(root)
@@ -141,12 +150,13 @@
@staticmethod
def fromxml(node):
version = node.getAttribute("version")
- trackseles = node.getElementsByTagName("tracks")
+ tracksele = getChild(node, "tracks")
+ trackeles = getChilds(tracksele, "track")
infoele = getChild(node, "info")
treepkgrootinfo = TreepkgRootInfo.fromxml(infoele)
treepkgroot = TreepkgRoot(version, treepkgrootinfo)
tracks = []
- for trackele in trackseles:
+ for trackele in trackeles:
tracks.append(TreepkgTrackInfo.fromxml(trackele))
treepkgroot.tracks = tracks
return treepkgroot
@@ -189,12 +199,11 @@
@staticmethod
def fromxml(node):
version = node.getAttribute("version")
- infoele = getChild(node, "info", True)
- nameele = getChild(infoele, "name", True)
+ nameele = getChild(node, "name", True)
name = getTextFromNode(nameele)
- treepkgpathele = getChild(infoele, "treepkgpath")
+ treepkgpathele = getChild(node, "treepkgpath")
treepkgpath = getTextFromNode(treepkgpathele)
- trackspathele = getChild(infoele, "trackspath")
+ trackspathele = getChild(node, "trackspath")
trackspath = getTextFromNode(trackspathele)
return TreepkgRootInfo(name, treepkgpath, trackspath, version)
@@ -296,11 +305,13 @@
treepkgrevisioninfo = TreepkgTrackRevisionInfo(number, rules, message)
treepkgrevisioninfo.packages = []
treepkgrevisioninfo.logs = []
- packageeles = getChild(node, "packages")
+ packagesele = getChild(node, "packages")
+ packageeles = getChilds(packagesele, "package")
for packageele in packageeles:
treepkgrevisioninfo.packages.append(
TreepkgPackageInfo.fromxml(packageele))
- logeles = getChild(node, "logs")
+ logsele = getChild(node, "logs")
+ logeles = getChilds(logsele, "log")
for logele in logeles:
treepkgrevisioninfo.logs.append(
TreepkgLogInfo.fromxml(logele))
@@ -375,6 +386,8 @@
path = getTextFromNode(pathele)
ptype = node.getAttribute("type")
arch = node.getAttribute("arch")
+ if len(arch) == 0:
+ arch = None
packageinfo = TreepkgPackageInfo(name, path, ptype, arch)
checksumeles = node.getElementsByTagName("checksum")
for checksumele in checksumeles:
@@ -398,7 +411,8 @@
@staticmethod
def fromxml(node):
- checksumele = getChild(node, "checksum", True)
- checksum = getTextFromNode(checksumele)
+ checksum = getTextFromNode(node)
ctype = node.getAttribute("type")
+ if len(ctype) == 0:
+ return TreepkgChecksumInfo(checksum)
return TreepkgChecksumInfo(checksum, ctype)
More information about the Treepkg-commits
mailing list