diff options
author | Olav Vitters <ovitters@mageia.org> | 2013-01-16 09:35:26 +0000 |
---|---|---|
committer | Olav Vitters <ovitters@mageia.org> | 2013-01-16 09:35:26 +0000 |
commit | 58041356e49f9d55a02d250081071fe2aa713438 (patch) | |
tree | 61ef568930ebd88f6f21e5ac1bfb98aa2bc985e6 /mgagnome | |
parent | dfd12b4ae79481717c075416a04bce2c4b575642 (diff) | |
download | mgagnome-58041356e49f9d55a02d250081071fe2aa713438.tar mgagnome-58041356e49f9d55a02d250081071fe2aa713438.tar.gz mgagnome-58041356e49f9d55a02d250081071fe2aa713438.tar.bz2 mgagnome-58041356e49f9d55a02d250081071fe2aa713438.tar.xz mgagnome-58041356e49f9d55a02d250081071fe2aa713438.zip |
handle networkmanager version numbering
Diffstat (limited to 'mgagnome')
-rwxr-xr-x | mgagnome | 43 |
1 files changed, 32 insertions, 11 deletions
@@ -82,6 +82,28 @@ def get_latest_version(versions, max_version=None): latest = version return latest +MAJOR_VERSIONS = { + 'NetworkManager': set(('0.9',)) + 'networkmanager': set(('0.9',)) +} + +def get_majmin(version, module=None): + nrs = version.split('.') + + if module and module in MAJOR_VERSIONS: + module_versions = [version.split(".") for version in MAJOR_VERSIONS[module]] + + nrstest = nrs[:] + + while len(nrstest) >= 2: + if nrstest in module_versions: + return (".".join(nrs[:len(nrstest)]), nrs[len(nrstest)]) + + nrstest.pop() + + return (nrs[0], nrs[1]) + + def get_safe_max_version(version): if not re_majmin.match(version): return None @@ -93,7 +115,7 @@ def get_safe_max_version(version): else: return "%d.%d" % (majmin_nr[0], majmin_nr[1] + 2) -def judge_version_increase(version_old, version_new): +def judge_version_increase(version_old, version_new, module=None): """Judge quality of version increase: Returns a tuple containing judgement and message @@ -116,7 +138,7 @@ def judge_version_increase(version_old, version_new): return (-3, "Version %s is older than current version %s!" % (version_new, version_old)) # Version is newer, but we don't want to see if it follows the GNOME versioning scheme - majmins = [re_majmin.sub(r'\1', ver) for ver in versions if re_majmin.match(ver) is not None] + majmins = [get_majmin(ver, module) for ver in versions if re_majmin.match(ver) is not None] if len(majmins) == 1: return (-1, "Version number scheme changes: %s" % (", ".join(versions))) @@ -136,16 +158,13 @@ def judge_version_increase(version_old, version_new): # 1.1.x -> 1.1.x or 1.0.x -> 1.0.x return (10, None) - # More detailed analysis needed, so figure out the numbers - majmin_nrs = [map(long, ver.split('.')) for ver in majmins] - # Check/ensure major version number is the same - if majmin_nrs[0][0] != majmin_nrs[1][0]: + if majmins[0][0] != majmins[1][0]: # 1.0.x -> 2.0.x return (1, "Major version number increase") # Minor indicates stable/unstable - devstate = (majmin_nrs[0][1] % 2 == 0, majmin_nrs[1][1] % 2 == 0) + devstate = (long(majmins[0][1]) % 2 == 0, long(majmins[1][1]) % 2 == 0) # Upgrading to unstable is weird if not devstate[1]: @@ -258,9 +277,10 @@ class SpecFile(object): re_update_version = re.compile(r'^(?P<pre>Version:\s*)(?P<version>.+)(?P<post>\s*)$', re.MULTILINE + re.IGNORECASE) re_update_release = re.compile(r'^(?P<pre>Release:\s*)(?P<release>%mkrel \d+)(?P<post>\s*)$', re.MULTILINE + re.IGNORECASE) - def __init__(self, path): + def __init__(self, path, module=None): self.path = path self.cwd = os.path.dirname(path) + self.module = module @property def version(self): @@ -623,7 +643,7 @@ class Downstream(object): # Determine version from spec file try: - packages[package] = SpecFile(os.path.join(cwd, "SPECS", "%s.spec" % package)).version + packages[package] = SpecFile(os.path.join(cwd, "SPECS", "%s.spec" % package), module=upstream).version except subprocess.CalledProcessError: raise ValueError("Multiple packages found and cannot determine version of %s" % package) @@ -669,7 +689,7 @@ def join_streams(show_version=False, only_diff_version=False): if show_version or only_diff_version: cwd = os.path.join(root, package) try: - spec_version = SpecFile(os.path.join(cwd, "SPECS", "%s.spec" % package)).version + spec_version = SpecFile(os.path.join(cwd, "SPECS", "%s.spec" % package), module=module).version except subprocess.CalledProcessError: spec_version = 'N/A' @@ -817,7 +837,8 @@ def cmd_package_new_version(options, parser): sys.exit(1) # SpecFile class handles the actual version+release change - s = SpecFile(os.path.join(cwd, "SPECS", "%s.spec" % package)) + # XXX - module should reflect upstream name, this gives it the package name + s = SpecFile(os.path.join(cwd, "SPECS", "%s.spec" % package), module=package) print "%s => %s" % (s.version, options.version) if not s.update(options.version, force=options.force): sys.exit(1) |