1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
#!/usr/bin/env python
import os
from waflib.extras import autowaf as autowaf
import waflib.Options as Options
import waflib.Scripting as Scripting
import glob
# Version of this package (even if built as a child)
LV2CORE_VERSION = '6.1'
# Variables for 'waf dist'
APPNAME = 'lv2core'
VERSION = LV2CORE_VERSION
# Mandatory variables
top = '.'
out = 'build'
def options(opt):
opt.load('compiler_c')
autowaf.set_options(opt)
opt.add_option('--bundle-only', action='store_true', default=False,
dest='bundle_only',
help="Only install bundle (not header or pkg-config file)")
opt.add_option('--copy-headers', action='store_true', default=False,
dest='copy_headers',
help='Copy headers instead of linking to bundle')
def configure(conf):
if not hasattr(os.path, 'relpath') and not Options.options.copy_headers:
conf.fatal(
'os.path.relpath missing, get Python 2.6 or use --copy-headers')
conf.load('compiler_c')
autowaf.configure(conf)
autowaf.display_msg(conf, "LV2 bundle directory", conf.env['LV2DIR'])
print('')
def write_news(doap_file):
import rdflib
import textwrap
from time import strftime, strptime
doap = rdflib.Namespace('http://usefulinc.com/ns/doap#')
dcs = rdflib.Namespace('http://ontologi.es/doap-changeset#')
rdfs = rdflib.Namespace('http://www.w3.org/2000/01/rdf-schema#')
foaf = rdflib.Namespace('http://xmlns.com/foaf/0.1/')
rdf = rdflib.Namespace('http://www.w3.org/1999/02/22-rdf-syntax-ns#')
m = rdflib.ConjunctiveGraph()
try:
m.parse(doap_file, format='n3')
except:
print('warning: %s not found, unable to generate NEWS' % doap_file)
return
spec = m.value(None, rdf.type, doap.Project)
entries = {}
for r in m.triples([spec, doap.release, None]):
release = r[2]
revision = m.value(release, doap.revision, None) or '9999'
date = m.value(release, doap.created, None) or '9999-01-01'
blamee = m.value(release, dcs.blame, None)
changeset = m.value(release, dcs.changeset, None)
entry = '%s (%s) stable;\n' % (APPNAME, revision)
if changeset:
for i in m.triples([changeset, dcs.item, None]):
entry += '\n * ' + '\n '.join(
textwrap.wrap(m.value(i[2], rdfs.label, None), width=79))
entry += '\n\n -- %s <%s> %s\n\n' % (
m.value(blamee, foaf.name, None),
m.value(blamee, foaf.mbox, None).replace('mailto:', ''),
strftime('%a, %d %b %Y %H:%M:%S +0000', strptime(date, '%Y-%m-%d')))
entries[revision] = entry
news = open('NEWS', 'w')
for e in sorted(entries.keys(), reverse=True):
news.write(entries[e])
news.close()
def build(bld):
# Header "library"
obj = bld(export_includes = ['.'],
name = 'liblv2core',
target = 'lv2core')
# Bundle (data)
bld.install_files('${LV2DIR}/lv2core.lv2', bld.path.ant_glob('*.ttl'))
if not Options.options.bundle_only:
# Header
bld.install_files('${INCLUDEDIR}', 'lv2.h')
bld.install_files('${LV2DIR}/lv2core.lv2', 'lv2.h')
# Pkgconfig file
autowaf.build_pc(bld, 'LV2CORE', LV2CORE_VERSION, '', [])
# URI-like header include
include_dir = os.path.join(bld.env['INCLUDEDIR'], 'lv2/lv2plug.in/ns')
bundle_dir = os.path.join(bld.env['LV2DIR'], 'lv2core.lv2')
if bld.env['COPY_HEADERS']:
bld.install_files(os.path.join(include_dir, 'lv2core'),
bld.path.ant_glob('*.h'))
else:
bld.symlink_as(os.path.join(include_dir, 'lv2core'),
os.path.relpath(bundle_dir, include_dir))
import pprint
class Dist(Scripting.Dist):
fun = 'dist'
cmd = 'dist'
def archive(self):
pprint.pprint(self.exec_dict['bld'].__dict__)
print os.path.abspath(top)
# Write NEWS file
write_news('lv2core.doap.ttl')
# Build distribution
Scripting.Dist.archive(self)
# Delete generated NEWS file
try:
os.remove('NEWS')
except:
pass
class DistCheck(Dist, Scripting.DistCheck):
fun = 'distcheck'
cmd = 'distcheck'
def archive(self):
Dist.archive(self)
|