-
Notifications
You must be signed in to change notification settings - Fork 4
/
wscript
91 lines (66 loc) · 2.53 KB
/
wscript
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
#! /usr/bin/env python
# encoding: utf-8
import os
from waflib.Build import BuildContext
APPNAME = "bourne"
VERSION = "10.0.1"
def configure(conf):
conf.set_cxx_std(11)
def build(bld):
# Build static library if this is top-level otherwise just .o files
features = ["cxx"]
if bld.is_toplevel():
features += ["cxxstlib"]
bld(
features=features,
source=bld.path.ant_glob("src/**/*.cpp"),
target="bourne",
use=[],
export_includes=["src"],
install_path="${PREFIX}/lib",
)
if bld.is_toplevel():
# Only build tests when executed from the top-level wscript,
# i.e. not when included as a dependency
bld.recurse("test")
bld.recurse("examples")
source_path = bld.path.find_node("src")
bld.install_files(
dest="${PREFIX}/include",
files=source_path.ant_glob("**/*.hpp"),
cwd=source_path,
relative_trick=True,
)
bld.install_files(dest="${PREFIX}/", files=bld.path.ant_glob("NEWS.rst"))
class ReleaseContext(BuildContext):
cmd = "prepare_release"
fun = "prepare_release"
def prepare_release(ctx):
"""Prepare a release."""
# Rewrite versions
with ctx.rewrite_file(filename="src/bourne/version.hpp") as f:
pattern = r"#define STEINWURF_BOURNE_VERSION v\d+_\d+_\d+"
replacement = "#define STEINWURF_BOURNE_VERSION v{}".format(
VERSION.replace(".", "_")
)
f.regex_replace(pattern=pattern, replacement=replacement)
with ctx.rewrite_file(filename="src/bourne/version.cpp") as f:
pattern = r'return "\d+\.\d+\.\d+"'
replacement = 'return "{}"'.format(VERSION)
f.regex_replace(pattern=pattern, replacement=replacement)
def docs(ctx):
"""Build the documentation in a virtualenv"""
with ctx.create_virtualenv() as venv:
# To update the requirements.txt just delete it - a fresh one
# will be generated from test/requirements.in
if not os.path.isfile("docs/requirements.txt"):
venv.run("python -m pip install pip-tools")
venv.run("pip-compile docs/requirements.in")
venv.run("python -m pip install -r docs/requirements.txt")
build_path = os.path.join(ctx.path.abspath(), "build", "site", "docs")
venv.run(
"giit clean . --build_path {}".format(build_path), cwd=ctx.path.abspath()
)
venv.run(
"giit sphinx . --build_path {}".format(build_path), cwd=ctx.path.abspath()
)