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