]> git.proxmox.com Git - ceph.git/blob - ceph/src/rocksdb/buckifier/targets_builder.py
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / rocksdb / buckifier / targets_builder.py
1 from __future__ import absolute_import
2 from __future__ import division
3 from __future__ import print_function
4 from __future__ import unicode_literals
5 import targets_cfg
6 import pprint
7
8 # TODO(tec): replace this with PrettyPrinter
9 def pretty_list(lst, indent=6):
10 if lst is None or len(lst) == 0:
11 return ""
12
13 if len(lst) == 1:
14 return "\"%s\"" % lst[0]
15
16 separator = "\",\n%s\"" % (" " * indent)
17 res = separator.join(lst)
18 res = "\n" + (" " * indent) + "\"" + res + "\",\n" + (" " * (indent - 2))
19 return res
20
21
22 class TARGETSBuilder:
23 def __init__(self, path):
24 self.path = path
25 self.targets_file = open(path, 'w')
26 self.targets_file.write(targets_cfg.rocksdb_target_header)
27 self.total_lib = 0
28 self.total_bin = 0
29 self.total_test = 0
30 self.tests_cfg = []
31
32 def __del__(self):
33 self.targets_file.close()
34
35 def add_library(self, name, srcs, deps=None, headers=None):
36 if headers is None:
37 headers = "AutoHeaders.RECURSIVE_GLOB"
38 self.targets_file.write(targets_cfg.library_template % (
39 name,
40 headers,
41 pretty_list(srcs),
42 pretty_list(deps)))
43 self.total_lib = self.total_lib + 1
44
45 def add_binary(self, name, srcs, deps=None):
46 self.targets_file.write(targets_cfg.binary_template % (
47 name,
48 pretty_list(srcs),
49 pretty_list(deps)))
50 self.total_bin = self.total_bin + 1
51
52 def register_test(self, test_name, src, is_parallel):
53 exec_mode = "serial"
54 if is_parallel:
55 exec_mode = "parallel"
56 self.tests_cfg.append([test_name, str(src), str(exec_mode)])
57
58 self.total_test = self.total_test + 1
59
60 def flush_tests(self):
61 self.targets_file.write(targets_cfg.unittests_template % (
62 pprint.PrettyPrinter().pformat(self.tests_cfg)
63 ))
64
65 self.tests_cfg = []