File: wscript

package info (click to toggle)
lv2core 6.0+dfsg0-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd, wheezy
  • size: 684 kB
  • ctags: 1,369
  • sloc: python: 11,441; ansic: 39; makefile: 6
file content (134 lines) | stat: -rw-r--r-- 4,272 bytes parent folder | download
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
#!/usr/bin/env python
import os

from waflib.extras import autowaf as autowaf
import waflib.Options as Options
import waflib.Scripting as Scripting

# Version of this package (even if built as a child)
LV2CORE_VERSION = '6.0'

# 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: no DOAP file found, unable to generate NEWS')
        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))

class Dist(Scripting.Dist):
    fun = 'dist'
    cmd = 'dist'

    def archive(self):
        # Write NEWS file
        write_news('lv2core.doap.ttl')

        # Build distribution
        Scripting.Dist.archive(self)

        # Delete generated NEWS file
        os.remove('NEWS')

class DistCheck(Dist, Scripting.DistCheck):
    fun = 'distcheck'
    cmd = 'distcheck'

    def archive(self):
        Dist.archive(self)