xref: /aosp_15_r20/external/perfetto/tools/package-prebuilts-for-github-release (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
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