summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlav Vitters <olav@vitters.nl>2014-07-06 13:15:59 +0200
committerOlav Vitters <olav@vitters.nl>2014-07-06 13:15:59 +0200
commit607619bcc79af585c0754aec49fcbb22ed121296 (patch)
tree73f3b89b5ba1ad061187b8e9c4dec81c7c8a22cc
parent4e44d91f49cfbcb5819f499119d6c6d6341b3d8a (diff)
downloadmgagnome-607619bcc79af585c0754aec49fcbb22ed121296.tar
mgagnome-607619bcc79af585c0754aec49fcbb22ed121296.tar.gz
mgagnome-607619bcc79af585c0754aec49fcbb22ed121296.tar.bz2
mgagnome-607619bcc79af585c0754aec49fcbb22ed121296.tar.xz
mgagnome-607619bcc79af585c0754aec49fcbb22ed121296.zip
clean spec of 'define name/version/release SOMETHING'
-rwxr-xr-xmgagnome24
1 files changed, 24 insertions, 0 deletions
diff --git a/mgagnome b/mgagnome
index 77819a9..1200cb3 100755
--- a/mgagnome
+++ b/mgagnome
@@ -402,6 +402,30 @@ class SpecFile(object):
made_changes = True
self._changes.append('SILENT %s' % reason)
+ # Convert:
+ # %define name SOMETHING
+ # name: %{name}
+ # Into
+ # name: SOMETHING
+ converted_defines = []
+ for search_for in ('name', 'version', 'release'):
+ re_spec = re.compile(r'^(?P<keeppre>' + re.escape(search_for) + r'[ \t]*:[ \t]*)\%\{' + re.escape(search_for) + r'\}(?P<keeppost>[ \t]*\n)', re.MULTILINE + re.IGNORECASE)
+ regexp = r'^(?P<keeppre>\%define[ \t]+'+ re.escape(search_for) + r'[ \t]+(?P<variable>\S+))(?P<keeppost>[ \t]*\n)'
+ re_variable = re.compile(r'^(?P<keeppre>\%define[ \t]+'+ re.escape(search_for) + r'[ \t]+(?P<definition>[^\n]+?))(?P<keeppost>[ \t]*\n)', re.MULTILINE + re.IGNORECASE)
+
+ mo = re_variable.search(data)
+ if mo and mo.group('definition'):
+ mo2 = re_spec.search(data)
+ if mo2:
+ data, nr = re_spec.subn('\g<keeppre>' + mo.group('definition').replace('\\', '\\\\') + '\g<keeppost>', data)
+ if nr:
+ made_changes=True
+ data, nr = re_variable.subn('', data)
+ converted_defines.append(search_for)
+
+ if converted_defines:
+ self._changes.append('SILENT remove variable definitions %s' % ", ".join(converted_defines))
+
# Overwrite file with new version number
if made_changes:
write_file(self.path, data)