1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#!/usr/bin/env python 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Copyright 2017 Google Inc. 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# Use of this source code is governed by a BSD-style license that can be 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot# found in the LICENSE file. 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot"""Create the asset.""" 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport argparse 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport common 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport grp 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport os 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport pwd 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport shutil 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport subprocess 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport sys 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport tempfile 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport urllib2 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotimport utils 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotVALGRIND = 'valgrind-3.13.0' 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotTARBALL = '%s.tar.bz2' % VALGRIND 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotDOWNLOAD_URL = 'ftp://sourceware.org/pub/valgrind/%s' % TARBALL 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotTEMP_DIR = os.path.join(tempfile.gettempdir(), 'skia-%s' % VALGRIND) 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotINSTALL_DIR = os.path.join(TEMP_DIR, 'valgrind_install') 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef download_tarball(): 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with utils.chdir(TEMP_DIR): 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if os.path.isfile(TARBALL): 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with open(TARBALL, 'wb') as f: 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot f.write(urllib2.urlopen(DOWNLOAD_URL).read()) 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef unzip_tarball(): 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with utils.chdir(TEMP_DIR): 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if os.path.isdir(VALGRIND): 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot subprocess.check_call(['tar', 'xvjf', TARBALL]) 45fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 46fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 47fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef create_install_dir(): 48fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if os.path.isdir(INSTALL_DIR): 49fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return 50fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.makedirs(INSTALL_DIR) 51fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 52fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 53fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef build_valgrind(): 54fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if os.path.isfile(os.path.join(INSTALL_DIR, 'bin', 'valgrind')): 55fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return 56fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with utils.chdir(os.path.join(TEMP_DIR, VALGRIND)): 57fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot subprocess.check_call(['./configure', '--prefix=%s' % INSTALL_DIR]) 58fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot subprocess.check_call(['make']) 59fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot subprocess.check_call(['make', 'install']) 60fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 61fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 62fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef copy_files(target_dir): 63fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot with utils.chdir(os.path.join(TEMP_DIR, VALGRIND)): 64fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.mkdir(os.path.join(target_dir, 'bin')) 65fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot shutil.copy(os.path.join(INSTALL_DIR, 'bin', 'valgrind'), 66fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.path.join(target_dir, 'bin', 'valgrind')) 67fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.mkdir(os.path.join(target_dir, 'lib')) 68fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.mkdir(os.path.join(target_dir, 'lib', 'valgrind')) 69fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot for lib in ['memcheck-amd64-linux']: 70fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot shutil.copy(os.path.join(INSTALL_DIR, 'lib', 'valgrind', lib), 71fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.path.join(target_dir, 'lib', 'valgrind', lib)) 72fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot for lib in ['core', 'memcheck']: 73fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot libname = 'vgpreload_%s-amd64-linux.so' % lib 74fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot shutil.copy(os.path.join(INSTALL_DIR, 'lib', 'valgrind', libname), 75fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.path.join(target_dir, 'lib', 'valgrind', libname)) 76fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 77fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot shutil.copy('default.supp', 78fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.path.join(target_dir, 'lib', 'valgrind', 'default.supp')) 79fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 80fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 81fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef create_asset(target_dir): 82fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot """Create the asset.""" 83fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if os.name == 'nt': 84fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot print 'This script does not run on Windows.' 85fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot sys.exit(1) 86fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 87fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot create_install_dir() 88fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if not os.path.isdir(TEMP_DIR): 89fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot os.makedirs(TEMP_DIR) 90fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot download_tarball() 91fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot unzip_tarball() 92fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot build_valgrind() 93fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot copy_files(target_dir) 94fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 95fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 96fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotdef main(): 97fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot parser = argparse.ArgumentParser() 98fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot parser.add_argument('--target_dir', '-t', required=True) 99fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot args = parser.parse_args() 100fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot create_asset(args.target_dir) 101fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 102fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 103fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotif __name__ == '__main__': 104fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot main() 105