diff options
author | David Robillard <d@drobilla.net> | 2011-05-26 22:55:49 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-05-26 22:55:49 +0000 |
commit | 5efc8a0f538fdc7d62e7846a2344b326c3344637 (patch) | |
tree | 77f87cc0bce24fa544e50c45092c9263201fd4ff /genreleases.py | |
parent | 33548f495c6d49726e8f996c2482073ae2385e88 (diff) | |
download | lv2-5efc8a0f538fdc7d62e7846a2344b326c3344637.tar.xz |
Add automatic extension release generation script
Diffstat (limited to 'genreleases.py')
-rwxr-xr-x | genreleases.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/genreleases.py b/genreleases.py new file mode 100755 index 0000000..3e75a3e --- /dev/null +++ b/genreleases.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +import RDF +import glob +import os +import re +import shutil +import sys + +lv2 = RDF.NS('http://lv2plug.in/ns/lv2core#') + +manifests = glob.glob('ext/*.lv2/manifest.ttl') + +try: + os.mkdir('build') + os.mkdir('spec') +except: + pass + +for i in manifests: + match = re.search('.*/([^/]*).lv2/.*', i) + name = match.group(1) + + match = re.search('(.*)/.*', i) + dir = match.group(1) + + m = RDF.Model() + p = RDF.Parser(name="turtle") + p.parse_into_model(m, 'file:' + i) + + s = m.find_statements(RDF.Statement(None, lv2.minorVersion, None)) + if not s.current(): + #print("No minor version found for %s\n" % i) + continue + minor = s.current().object.literal_value['string'] + + s = m.find_statements(RDF.Statement(None, lv2.microVersion, None)) + if not s.current(): + #print("No micro version found for %s\n" % i) + continue + micro = s.current().object.literal_value['string'] + + if int(minor) != 0 and int(micro) % 2 == 0: + print('Packaging %s extension version %s.%s' % (name, minor, micro)) + wscript_template = open('wscript.template') + wscript = open('%s/wscript' % dir, 'w') + for l in wscript_template: + wscript.write(l.replace( + '@NAME@', name).replace( + '@MINOR@', minor).replace( + '@MICRO@', micro)) + wscript_template.close() + wscript.close() + try: + os.remove('%s/waf' % dir) + except: + pass + os.symlink('../../waf', '%s/waf' % dir) + + os.system('tar --exclude=".*" -cjhf build/spec/lv2-%s-%s.%s.tar.bz2 %s' % ( + name, minor, micro, dir)) + |