#!/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') manifests += ['extensions/ui.lv2/manifest.ttl'] try: os.mkdir('build') except: pass try: os.mkdir('build/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(): continue minor = s.current().object.literal_value['string'] s = m.find_statements(RDF.Statement(None, lv2.microVersion, None)) if not s.current(): 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)) distdir = 'build/spec/lv2-%s-%s.%s' % (name, minor, micro) os.mkdir(distdir) for f in glob.glob('%s/*.*' % dir): shutil.copy(f, '%s/%s' % (distdir, os.path.basename(f))) wscript_template = open('wscript.template') wscript = open('%s/wscript' % distdir, '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' % distdir) except: pass os.symlink('../../../waf', '%s/waf' % distdir) olddir = os.getcwd() os.chdir(distdir + '/..') os.system('tar --exclude=".*" -cjhf %s.tar.bz2 %s' % ( os.path.basename(distdir), os.path.basename(distdir))) os.chdir(olddir)