From 8f5aa7e6ab80d96d6cadc4fca79c81cec9ce7542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ozan=20=C3=87a=C4=9Flayan?= Date: Tue, 19 Jan 2010 13:14:11 +0000 Subject: [PATCH] Don't wait until packaging for borking about invalid version strings - Current pisi borks about invalid version string just before creating .pisi file. Move that check to __init__ in Builder to fail as early as possible. - Also handle unknown keywords in version strings to not fail with unhandled exceptions. --- ChangeLog | 5 +++++ pisi/operations/build.py | 5 +++-- pisi/version.py | 17 +++++++++++------ 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/ChangeLog b/ChangeLog index 431a3e92..fab488da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,11 @@ translations.xml reading. * pisi/specfile.py (read_translations): Ignore source package translations if is empty in translations.xml. + * pisi/version.py (VersionItem): Handle unknown keywords in version + strings, + * pisi/operations/build.py (Builder.__init__): Don't wait until + creating .pisi file for borking about invalid version strings e.g. + something like "0.5.6.1_x1219" in element. 2010-01-12 Ozan Çağlayan * pisi/actionsapi/get.py: Add ARCH() for getting host architecture. diff --git a/pisi/operations/build.py b/pisi/operations/build.py index a90f4447..4f51c6c6 100644 --- a/pisi/operations/build.py +++ b/pisi/operations/build.py @@ -184,6 +184,9 @@ class Builder: else: self.specdir = os.path.dirname(self.specuri.get_uri()) + # Don't wait until creating .pisi file for complaining about versioning scheme errors + self.check_versioning("%s-%s" % (self.spec.getSourceVersion(), self.spec.getSourceRelease())) + self.read_translations(self.specdir) self.sourceArchive = pisi.sourcearchive.SourceArchive(self.spec, self.pkg_work_dir()) @@ -957,8 +960,6 @@ class Builder: self.metadata.package.build = build_no self.metadata.write(pisi.util.join_path(self.pkg_dir(), ctx.const.metadata_xml)) - self.check_versioning("%s-%s" % (self.spec.getSourceVersion(), self.spec.getSourceRelease())) - # Calculate new and oldpackage names for buildfarm name = pisi.util.package_name(package.name, self.spec.getSourceVersion(), diff --git a/pisi/version.py b/pisi/version.py index 56c25f45..f851bd91 100644 --- a/pisi/version.py +++ b/pisi/version.py @@ -25,13 +25,15 @@ maxdashes = 2 # p > (no suffix) > m > rc > pre > beta > alpha # m: milestone. this was added for OO.o # p: patch-level -keywords = {"alpha": 0, - "beta" : 1, - "pre" : 2, - "rc" : 3, - "m" : 4, +keywords = { + "alpha" : 0, + "beta" : 1, + "pre" : 2, + "rc" : 3, + "m" : 4, "NOKEY" : 5, - "p" : 6} + "p" : 6, + } # helper functions def has_keyword(versionitem): @@ -71,6 +73,9 @@ class VersionItem: if len(itemstring) == 1 and itemstring in string.ascii_letters: # single letter version item ('a' to 'Z') self._value = itemstring + elif len(itemstring) > 1 and itemstring[0] in string.ascii_letters: + # Unknown keyword + raise VersionException("") else: self._value = int(itemstring) else: