1*6dbdd20aSAndroid Build Coastguard Worker#!/usr/bin/env python3 2*6dbdd20aSAndroid Build Coastguard Worker# Copyright (C) 2021 The Android Open Source Project 3*6dbdd20aSAndroid Build Coastguard Worker# 4*6dbdd20aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 5*6dbdd20aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 6*6dbdd20aSAndroid Build Coastguard Worker# You may obtain a copy of the License at 7*6dbdd20aSAndroid Build Coastguard Worker# 8*6dbdd20aSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 9*6dbdd20aSAndroid Build Coastguard Worker# 10*6dbdd20aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 11*6dbdd20aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 12*6dbdd20aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*6dbdd20aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 14*6dbdd20aSAndroid Build Coastguard Worker# limitations under the License. 15*6dbdd20aSAndroid Build Coastguard Worker"""Pulls LUCI-generated binaries and generates .zip files for GitHub releases. 16*6dbdd20aSAndroid Build Coastguard Worker 17*6dbdd20aSAndroid Build Coastguard WorkerUsage: ./tools/package_prebuilts_for_github_release v20.0 18*6dbdd20aSAndroid Build Coastguard Worker 19*6dbdd20aSAndroid Build Coastguard WorkerThis will generate one .zip file for every os-arch combo (e.g. android-arm.zip) 20*6dbdd20aSAndroid Build Coastguard Workerinto /tmp/perfetto-prebuilts-v20.0/ . 21*6dbdd20aSAndroid Build Coastguard Worker""" 22*6dbdd20aSAndroid Build Coastguard Worker 23*6dbdd20aSAndroid Build Coastguard Workerimport argparse 24*6dbdd20aSAndroid Build Coastguard Workerimport subprocess 25*6dbdd20aSAndroid Build Coastguard Workerimport os 26*6dbdd20aSAndroid Build Coastguard Workerimport sys 27*6dbdd20aSAndroid Build Coastguard Worker 28*6dbdd20aSAndroid Build Coastguard Worker 29*6dbdd20aSAndroid Build Coastguard Workerdef exec(*args): 30*6dbdd20aSAndroid Build Coastguard Worker print(' '.join(args)) 31*6dbdd20aSAndroid Build Coastguard Worker subprocess.check_call(args) 32*6dbdd20aSAndroid Build Coastguard Worker 33*6dbdd20aSAndroid Build Coastguard Worker 34*6dbdd20aSAndroid Build Coastguard Workerdef main(): 35*6dbdd20aSAndroid Build Coastguard Worker parser = argparse.ArgumentParser(epilog='Example %s v19.0' % __file__) 36*6dbdd20aSAndroid Build Coastguard Worker parser.add_argument('version') 37*6dbdd20aSAndroid Build Coastguard Worker 38*6dbdd20aSAndroid Build Coastguard Worker args = parser.parse_args() 39*6dbdd20aSAndroid Build Coastguard Worker tmpdir = '/tmp/perfetto-prebuilts-' + args.version 40*6dbdd20aSAndroid Build Coastguard Worker src = 'gs://perfetto-luci-artifacts/%s/' % args.version 41*6dbdd20aSAndroid Build Coastguard Worker os.makedirs(tmpdir, exist_ok=True) 42*6dbdd20aSAndroid Build Coastguard Worker os.chdir(tmpdir) 43*6dbdd20aSAndroid Build Coastguard Worker exec('gsutil', '-m', 'rsync', '-rc', src, tmpdir + '/') 44*6dbdd20aSAndroid Build Coastguard Worker zips = [] 45*6dbdd20aSAndroid Build Coastguard Worker for arch in os.listdir(tmpdir): 46*6dbdd20aSAndroid Build Coastguard Worker if not os.path.isdir(arch): 47*6dbdd20aSAndroid Build Coastguard Worker continue 48*6dbdd20aSAndroid Build Coastguard Worker exec('zip', '-9r', '%s.zip' % arch, arch) 49*6dbdd20aSAndroid Build Coastguard Worker zips.append(arch + '.zip') 50*6dbdd20aSAndroid Build Coastguard Worker print('') 51*6dbdd20aSAndroid Build Coastguard Worker print('%d zip files saved in %s (%s)' % (len(zips), tmpdir, ','.join(zips))) 52*6dbdd20aSAndroid Build Coastguard Worker 53*6dbdd20aSAndroid Build Coastguard Worker 54*6dbdd20aSAndroid Build Coastguard Workerif __name__ == '__main__': 55*6dbdd20aSAndroid Build Coastguard Worker sys.exit(main()) 56