/
SConscript
126 lines (102 loc) · 4.44 KB
/
SConscript
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
# -*- mode: python; -*-
#
# Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
#
import os
Import('BuildEnv')
env = BuildEnv.Clone()
cd_cmd = 'cd ' + Dir('.').path + ' && '
autogen_infra_sources = [
'#/tools/generateds/generateDS.py',
'#/tools/generateds/TypeGenerator.py',
'#/tools/generateds/ccmap.py',
'#/tools/generateds/idl_parser.py',
'#/tools/generateds/ifmap_global.py',
'#/tools/generateds/ifmap_model.py',
'#/tools/generateds/ifmap_frontend.py',
]
autogen_sources = [
'#controller/src/schema/all_cfg.xsd',
'#controller/src/schema/vnc_cfg.xsd',
'#controller/src/schema/bgp_schema.xsd',
'#controller/src/schema/ietf-l3vpn-schema.xsd',
'#controller/src/schema/smi-base.xsd',
]
autogen_script = File('#tools/generateds/generateDS.py').path
autogen_cmd = '%s -f -o %s -g ifmap-frontend' % (autogen_script, Dir('vnc_api/gen/resource').path)
generated_files = [
'vnc_api/gen/__init__.py',
'vnc_api/gen/resource_xsd.py',
'vnc_api/gen/resource_common.py',
'vnc_api/gen/resource_client.py',
'vnc_api/gen/vnc_api_client_gen.py',
]
generated_rule = env.Command(generated_files,
'#controller/src/schema/all_cfg.xsd',
autogen_cmd + ' $SOURCE')
setup_sources = [
'setup.py',
'.testr.conf',
'.coveragerc',
'run_tests.sh',
'tools',
'tests',
'requirements.txt',
'test-requirements.txt',
]
setup_sources_rules = []
for file in setup_sources:
setup_sources_rules.append(env.Install("", "#/controller/src/api-lib/" + file))
local_sources = [
'__init__.py',
'vnc_api.py',
'vnc_api_lib.ini',
]
local_sources_rules = []
for file in local_sources:
local_sources_rules.append(env.Install("vnc_api", "#/controller/src/api-lib/" + file))
common_sources = [
'__init__.py',
'rest.py',
'exceptions.py'
]
common_sources_rules = []
for file in common_sources:
common_sources_rules.append(env.Install("vnc_api/common", "#/controller/src/config/common/" + file))
generateds_rule = env.Install("vnc_api/gen", "#/controller/src/config/common/generatedssuper.py")
cfixture_rule = env.Install("vnc_api/gen", "#/controller/src/config/common/cfixture.py")
sdist_depends = [generated_rule, generateds_rule, cfixture_rule]
sdist_depends.extend(setup_sources_rules)
sdist_depends.extend(local_sources_rules)
sdist_depends.extend(common_sources_rules)
sdist_gen = env.Command('dist/vnc_api-0.1dev.tar.gz',
'setup.py', cd_cmd + 'python setup.py sdist')
env.Default(sdist_gen)
# generated files depend on autogeneration infra parts
env.Depends(generated_rule, [autogen_infra_sources, autogen_sources])
env.Depends(local_sources_rules, autogen_infra_sources)
# install everything before building distribution
env.Depends(sdist_gen, sdist_depends)
if 'install' in BUILD_TARGETS:
install_cmd = env.Command(None, 'setup.py',
cd_cmd + 'python setup.py install %s' %
env['PYTHON_INSTALL_OPT'])
env.Depends(install_cmd, sdist_depends)
env.Alias('install', install_cmd)
env.Alias('install', env.Install(env['INSTALL_CONF'], 'vnc_api_lib.ini'))
buildspace_link = os.environ.get('CONTRAIL_REPO')
if buildspace_link:
# in CI environment shebang limit exceeds for python
# in easy_install/pip, reach to it via symlink
top_path = buildspace_link + '/' + Dir('.').path
top_dir = Dir(top_path)
else:
top_dir = Dir('.')
cov_cmd = env.Command('coveragetest.log', sdist_gen,
'bash -c "set -o pipefail && cd ' + Dir(top_dir).path + ' && python setup.py run_tests --coverage 2>&1 | tee coveragetest.log"')
test_cmd = env.Command('test.log', sdist_gen,
'bash -c "set -o pipefail && cd ' + Dir(top_dir).path + ' && python setup.py run_tests 2>&1 | tee test.log"')
test_depends = ['/config/common/dist/cfgm_common-0.1dev.tar.gz']
env.Depends(test_cmd, [env['TOP']+x for x in test_depends])
env.Depends(cov_cmd, [env['TOP']+x for x in test_depends])
env.Alias('controller/src/api-lib:coverage', cov_cmd)