1# 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 # Delete our temporary directory 43 subprocess.check_call(['docker', 'run', 44 '--volume', '%s:/OUT' % temp_out, 45 DOCKER_IMAGE, '/bin/sh', '-c', 'rm -rf /OUT/*']) 46 47if __name__ == '__main__': 48 main() 49