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