From afae3a2dfd217f91cad2798a39f39f93f52dbce1 Mon Sep 17 00:00:00 2001 From: Thomas Leonard Date: Sun, 5 Aug 2012 17:57:56 +0100 Subject: [PATCH] Parse Debian snapshot version numbers These are versions containing a tilde (e.g. Java 7~u3-2.1.1-1). --- tests/testdistro.py | 1 + zeroinstall/injector/distro.py | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/tests/testdistro.py b/tests/testdistro.py index 88da96a..69459ac 100755 --- a/tests/testdistro.py +++ b/tests/testdistro.py @@ -258,6 +258,7 @@ class TestDistro(BaseTest): self.assertEqual('6.17', distro.try_cleanup_distro_version('6b17')) self.assertEqual('20-1', distro.try_cleanup_distro_version('b20_1')) self.assertEqual('17', distro.try_cleanup_distro_version('p17')) + self.assertEqual('7-pre3-2.1.1-3', distro.try_cleanup_distro_version('7~u3-2.1.1-3')) # Debian snapshot self.assertEqual(None, distro.try_cleanup_distro_version('cvs')) def testCommand(self): diff --git a/zeroinstall/injector/distro.py b/zeroinstall/injector/distro.py index 9cdb3e5..027a399 100644 --- a/zeroinstall/injector/distro.py +++ b/zeroinstall/injector/distro.py @@ -114,15 +114,19 @@ def try_cleanup_distro_version(version): if ':' in version: version = version.split(':')[1] # Skip 'epoch' version = version.replace('_', '-') + if '~' in version: + version, suffix = version.split('~', 1) + suffix = '-pre' + try_cleanup_distro_version(suffix) + else: + suffix = '' match = re.match(_version_regexp, version) if match: major, version, revision = match.groups() if major is not None: version = major[:-1] + '.' + version - if revision is None: - return version - else: - return '%s-%s' % (version, revision[2:]) + if revision is not None: + version = '%s-%s' % (version, revision[2:]) + return version + suffix return None class Distribution(object): -- 2.11.4.GIT