1 # Copyright 2018 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 """Shared utilities for the build recipe module.""" 7 8 9 BUILD_PRODUCTS_ISOLATE_WHITELIST = [ 10 'bookmaker', 11 'dm', 12 'dm.exe', 13 'dm.app', 14 'nanobench.app', 15 'get_images_from_skps', 16 'get_images_from_skps.exe', 17 'hello-opencl', 18 'hello-opencl.exe', 19 'nanobench', 20 'nanobench.exe', 21 'skpbench', 22 'skpbench.exe', 23 '*.so', 24 '*.dll', 25 '*.dylib', 26 'skia_launcher', 27 'skiaserve', 28 'lib/*.so', 29 'run_testlab', 30 'skqp-universal-debug.apk', 31 'whitelist_devices.json', 32 ] 33 34 35 def copy_whitelisted_build_products(api, src, dst): 36 """Copy whitelisted build products from src to dst.""" 37 api.python.inline( 38 name='copy build products', 39 program='''import errno 40 import glob 41 import os 42 import shutil 43 import sys 44 45 src = sys.argv[1] 46 dst = sys.argv[2] 47 build_products_whitelist = %s 48 49 try: 50 os.makedirs(dst) 51 except OSError as e: 52 if e.errno != errno.EEXIST: 53 raise 54 55 for pattern in build_products_whitelist: 56 path = os.path.join(src, pattern) 57 for f in glob.glob(path): 58 dst_path = os.path.join(dst, os.path.relpath(f, src)) 59 if not os.path.isdir(os.path.dirname(dst_path)): 60 os.makedirs(os.path.dirname(dst_path)) 61 print 'Copying build product %%s to %%s' %% (f, dst_path) 62 shutil.move(f, dst_path) 63 ''' % str(BUILD_PRODUCTS_ISOLATE_WHITELIST), 64 args=[src, dst], 65 infra_step=True) 66