blob: ec1fb87eb7ed68827400da6a66c9153f54e205c3 [file] [log] [blame]
Kevin Lubick402bf742019-02-12 08:28:12 -05001# Copyright 2019 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5
6"""Creates a .tar.gz file containing an HTML treemap displaying the codesize.
7
8 Requires docker to be installed.
9
10 Example usage:
11 python make_treemap.py $SKIA_ROOT/out/Release/skottie_tool /tmp/size
12
13"""
14
15
16import os
17import subprocess
18import sys
19import tempfile
20
21DOCKER_IMAGE = 'gcr.io/skia-public/binary-size:v1'
22DOCKER_SCRIPT = '/opt/binary_size/src/run_binary_size_analysis.py'
23
24def main():
25 input_file = sys.argv[1]
26 out_dir = sys.argv[2]
27
28 input_base = os.path.basename(input_file)
29 input_dir = os.path.dirname(input_file)
30 temp_out = tempfile.mkdtemp('treemap')
31
32 subprocess.check_call(['docker', 'run', '--volume', '%s:/IN' % input_dir,
33 '--volume', '%s:/OUT' % temp_out,
34 DOCKER_IMAGE, DOCKER_SCRIPT,
35 '--library', '/IN/%s' % input_base,
36 '--destdir', '/OUT'])
37
38 subprocess.check_call(['tar', '--directory=%s' % temp_out, '-zcf',
39 '%s/%s_tree.tar.gz' % (out_dir, input_base),
40 '.'])
41
42
43if __name__ == '__main__':
44 main()