summaryrefslogtreecommitdiffstats
path: root/mgagnome
diff options
context:
space:
mode:
authorOlav Vitters <ovitters@mageia.org>2013-01-16 09:35:26 +0000
committerOlav Vitters <ovitters@mageia.org>2013-01-16 09:35:26 +0000
commit58041356e49f9d55a02d250081071fe2aa713438 (patch)
tree61ef568930ebd88f6f21e5ac1bfb98aa2bc985e6 /mgagnome
parentdfd12b4ae79481717c075416a04bce2c4b575642 (diff)
downloadmgagnome-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-xmgagnome43
1 files changed, 32 insertions, 11 deletions
diff --git a/mgagnome b/mgagnome
index d5f6c18..1e2f6fe 100755
--- a/mgagnome
+++ b/mgagnome
@@ -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)