]> git.proxmox.com Git - ceph.git/blob - ceph/src/rocksdb/buckifier/targets_builder.py
update sources to ceph Nautilus 14.2.1
[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
7 def pretty_list(lst, indent=8):
8 if lst is None or len(lst) == 0:
9 return ""
10
11 if len(lst) == 1:
12 return "\"%s\"" % lst[0]
13
14 separator = "\",\n%s\"" % (" " * indent)
15 res = separator.join(sorted(lst))
16 res = "\n" + (" " * indent) + "\"" + res + "\",\n" + (" " * (indent - 4))
17 return res
18
19
20 class TARGETSBuilder:
21 def __init__(self, path):
22 self.path = path
23 self.targets_file = open(path, 'w')
24 self.targets_file.write(targets_cfg.rocksdb_target_header)
25 self.total_lib = 0
26 self.total_bin = 0
27 self.total_test = 0
28 self.tests_cfg = ""
29
30 def __del__(self):
31 self.targets_file.close()
32
33 def add_library(self, name, srcs, deps=None, headers=None):
34 headers_attr_prefix = ""
35 if headers is None:
36 headers_attr_prefix = "auto_"
37 headers = "AutoHeaders.RECURSIVE_GLOB"
38 self.targets_file.write(targets_cfg.library_template.format(
39 name=name,
40 srcs=pretty_list(srcs),
41 headers_attr_prefix=headers_attr_prefix,
42 headers=headers,
43 deps=pretty_list(deps)))
44 self.total_lib = self.total_lib + 1
45
46 def add_binary(self, name, srcs, deps=None):
47 self.targets_file.write(targets_cfg.binary_template % (
48 name,
49 pretty_list(srcs),
50 pretty_list(deps)))
51 self.total_bin = self.total_bin + 1
52
53 def register_test(self, test_name, src, is_parallel):
54 exec_mode = "serial"
55 if is_parallel:
56 exec_mode = "parallel"
57 self.tests_cfg += targets_cfg.test_cfg_template % (
58 test_name,
59 str(src),
60 str(exec_mode))
61
62 self.total_test = self.total_test + 1
63
64 def flush_tests(self):
65 self.targets_file.write(targets_cfg.unittests_template % self.tests_cfg)
66 self.tests_cfg = ""