Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: third_party/instrumented_libraries/scripts/build_and_package.py

Issue 2103683002: Add GN rules for building instrumented libraries. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 #!/usr/bin/python
2 # Copyright 2016 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5 """Builds and packages instrumented libraries for dynamic tools."""
6
7 import argparse
8 import contextlib
9 import os
10 import shutil
11 import subprocess
12 import tarfile
13
14 BUILD_TYPES = {'msan-no-origins': 0, 'msan-chained-origins': 2}
15 SUPPORTED_RELEASES = frozenset(['trusty'])
16
17
18 class Error(Exception):
19 pass
20
21
22 class UnsupportedReleaseError(Error):
23 pass
24
25
26 def _get_release():
27 return subprocess.check_output(['lsb_release', '-cs']).strip()
28
29
30 def _tar_filter(tar_info):
31 if tar_info.name.endswith('.txt'):
32 return None
33 return tar_info
34
35
36 def build_libraries(build_type, ubuntu_release, jobs, use_goma):
37 archive_name = '%s-%s' % (build_type, ubuntu_release)
38 build_dir = 'out/Instrumented-%s' % archive_name
39 if not os.path.exists(build_dir):
40 os.makedirs(build_dir)
41
42 gn_args = [
43 'is_debug = false',
44 'is_msan = true',
aizatsky 2016/06/29 21:14:32 What about asan builds? I suggest you store addit
Sam McNally 2016/06/30 04:17:06 Done.
45 'use_goma = %s' % str(use_goma).lower(),
46 'instrumented_libraries_jobs = %d' % jobs,
47 'use_locally_built_instrumented_libraries = true',
48 'msan_track_origins = %d' % BUILD_TYPES[build_type],
aizatsky 2016/06/29 21:14:32 This arg should go into BUILD_TYPES map.
Sam McNally 2016/06/30 04:17:06 Done.
49 'instrumented_libraries_platform = "%s"' % ubuntu_release,
50 ]
51 with open(os.path.join(build_dir, 'args.gn'), 'w') as f:
52 f.write('\n'.join(gn_args))
53 subprocess.check_call(['gn', 'gen', build_dir])
aizatsky 2016/06/29 21:14:32 add --check
Sam McNally 2016/06/30 04:17:06 Done.
54 subprocess.check_call(['ninja', '-j2', '-C', build_dir,
55 'third_party/instrumented_libraries:locally_built'])
56 with tarfile.open('%s.tgz' % archive_name, mode='w:gz') as f:
57 f.add('%s/instrumented_libraries/msan' % build_dir,
58 arcname='msan',
59 filter=_tar_filter)
60 f.add('%s/instrumented_libraries/sources' % build_dir,
61 arcname='sources',
62 filter=_tar_filter)
63 print 'To upload, run:'
aizatsky 2016/06/29 21:14:32 This will be printed out in between runs and will
Sam McNally 2016/06/30 04:17:06 Done.
64 print('upload_to_google_storage.py -b '
65 'chromium-instrumented-libraries %s.tgz') % archive_name
66 print 'You should then commit the resulting .sha1 file.'
67
68
69 def main():
70 parser = argparse.ArgumentParser(
71 description=__doc__,
72 formatter_class=argparse.ArgumentDefaultsHelpFormatter)
73 parser.add_argument(
74 '--jobs',
75 '-j',
76 type=int,
77 default=8,
78 help='the default number of jobs to use when running make')
79 parser.add_argument('--use_goma',
80 action='store_true',
81 default=False,
82 help='whether to use goma to compile')
83 parser.add_argument('build_type',
84 nargs='*',
85 default='all',
86 choices=BUILD_TYPES.keys() + ['all'],
87 help='the type of instrumented library to build')
88 args = parser.parse_args()
89 if args.build_type == 'all' or 'all' in args.build_type:
90 args.build_type = BUILD_TYPES.keys()
91
92 ubuntu_release = _get_release()
93 if ubuntu_release not in SUPPORTED_RELEASES:
94 raise UnsupportedReleaseError('%s is not a supported release' %
95 _get_release())
96 for build_type in sorted(set(args.build_type)):
97 build_libraries(build_type, ubuntu_release, args.jobs, args.use_goma)
98
99
100 if __name__ == '__main__':
101 main()
OLDNEW
« no previous file with comments | « third_party/instrumented_libraries/BUILD.gn ('k') | third_party/instrumented_libraries/scripts/download_build_install.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698