xref: /aosp_15_r20/development/vndk/snapshot/multi_update.py (revision 90c8c64db3049935a07c6143d7fd006e26f8ecca)
1*90c8c64dSAndroid Build Coastguard Worker#!/usr/bin/env python3
2*90c8c64dSAndroid Build Coastguard Worker#
3*90c8c64dSAndroid Build Coastguard Worker# Copyright (C) 2022 The Android Open Source Project
4*90c8c64dSAndroid Build Coastguard Worker#
5*90c8c64dSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
6*90c8c64dSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
7*90c8c64dSAndroid Build Coastguard Worker# You may obtain a copy of the License at
8*90c8c64dSAndroid Build Coastguard Worker#
9*90c8c64dSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
10*90c8c64dSAndroid Build Coastguard Worker#
11*90c8c64dSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
12*90c8c64dSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
13*90c8c64dSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*90c8c64dSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
15*90c8c64dSAndroid Build Coastguard Worker# limitations under the License.
16*90c8c64dSAndroid Build Coastguard Worker#
17*90c8c64dSAndroid Build Coastguard Worker
18*90c8c64dSAndroid Build Coastguard Workerimport argparse
19*90c8c64dSAndroid Build Coastguard Workerimport logging
20*90c8c64dSAndroid Build Coastguard Worker
21*90c8c64dSAndroid Build Coastguard Workerimport update
22*90c8c64dSAndroid Build Coastguard Workerimport utils
23*90c8c64dSAndroid Build Coastguard Worker
24*90c8c64dSAndroid Build Coastguard WorkerVNDK_SNAPSHOT_SOURCE_BRANCHES = {
25*90c8c64dSAndroid Build Coastguard Worker    29: 'qt-gsi-release',
26*90c8c64dSAndroid Build Coastguard Worker    30: 'android11-gsi',
27*90c8c64dSAndroid Build Coastguard Worker    31: 'android12-gsi',
28*90c8c64dSAndroid Build Coastguard Worker    32: 'android12L-gsi',
29*90c8c64dSAndroid Build Coastguard Worker    33: 'android13-gsi',
30*90c8c64dSAndroid Build Coastguard Worker}
31*90c8c64dSAndroid Build Coastguard Worker
32*90c8c64dSAndroid Build Coastguard Workerdef fetch_and_update_snapshots(versions, args):
33*90c8c64dSAndroid Build Coastguard Worker    for version in versions:
34*90c8c64dSAndroid Build Coastguard Worker        if version not in VNDK_SNAPSHOT_SOURCE_BRANCHES:
35*90c8c64dSAndroid Build Coastguard Worker            raise ValueError ('Unknown VNDK version: {}'.format(version))
36*90c8c64dSAndroid Build Coastguard Worker        logging.info('Updating snapshot version {}'.format(version))
37*90c8c64dSAndroid Build Coastguard Worker        branch = VNDK_SNAPSHOT_SOURCE_BRANCHES[version]
38*90c8c64dSAndroid Build Coastguard Worker        bid = utils.get_latest_vndk_bid(branch)
39*90c8c64dSAndroid Build Coastguard Worker
40*90c8c64dSAndroid Build Coastguard Worker        update.run(version, branch, bid, None, args.use_current_branch,
41*90c8c64dSAndroid Build Coastguard Worker                   args.remote, args.verbose)
42*90c8c64dSAndroid Build Coastguard Worker
43*90c8c64dSAndroid Build Coastguard Workerdef get_args(parser):
44*90c8c64dSAndroid Build Coastguard Worker    parser.add_argument(
45*90c8c64dSAndroid Build Coastguard Worker        'versions',
46*90c8c64dSAndroid Build Coastguard Worker        metavar='vndk_version',
47*90c8c64dSAndroid Build Coastguard Worker        type=int,
48*90c8c64dSAndroid Build Coastguard Worker        nargs='*',
49*90c8c64dSAndroid Build Coastguard Worker        help='list of versions to fetch and update')
50*90c8c64dSAndroid Build Coastguard Worker    parser.add_argument(
51*90c8c64dSAndroid Build Coastguard Worker        '--all',
52*90c8c64dSAndroid Build Coastguard Worker        action='store_true',
53*90c8c64dSAndroid Build Coastguard Worker        help='fetch all vndk snapshots')
54*90c8c64dSAndroid Build Coastguard Worker    parser.add_argument(
55*90c8c64dSAndroid Build Coastguard Worker        '--use-current-branch',
56*90c8c64dSAndroid Build Coastguard Worker        action='store_true',
57*90c8c64dSAndroid Build Coastguard Worker        help='Perform the update in the current branch. Do not repo start.')
58*90c8c64dSAndroid Build Coastguard Worker    parser.add_argument(
59*90c8c64dSAndroid Build Coastguard Worker        '--remote',
60*90c8c64dSAndroid Build Coastguard Worker        default='aosp',
61*90c8c64dSAndroid Build Coastguard Worker        help=('Remote name to fetch and check if the revision of VNDK snapshot '
62*90c8c64dSAndroid Build Coastguard Worker              'is included in the source to conform GPL license. default=aosp'))
63*90c8c64dSAndroid Build Coastguard Worker    parser.add_argument(
64*90c8c64dSAndroid Build Coastguard Worker        '-v',
65*90c8c64dSAndroid Build Coastguard Worker        '--verbose',
66*90c8c64dSAndroid Build Coastguard Worker        action='count',
67*90c8c64dSAndroid Build Coastguard Worker        default=0,
68*90c8c64dSAndroid Build Coastguard Worker        help='Increase output verbosity, e.g. "-v", "-vv"')
69*90c8c64dSAndroid Build Coastguard Worker    return parser.parse_args()
70*90c8c64dSAndroid Build Coastguard Worker
71*90c8c64dSAndroid Build Coastguard Workerdef main():
72*90c8c64dSAndroid Build Coastguard Worker    parser = argparse.ArgumentParser()
73*90c8c64dSAndroid Build Coastguard Worker    args = get_args(parser)
74*90c8c64dSAndroid Build Coastguard Worker    utils.set_logging_config(args.verbose)
75*90c8c64dSAndroid Build Coastguard Worker
76*90c8c64dSAndroid Build Coastguard Worker    if args.all:
77*90c8c64dSAndroid Build Coastguard Worker        versions = VNDK_SNAPSHOT_SOURCE_BRANCHES.keys()
78*90c8c64dSAndroid Build Coastguard Worker        fetch_and_update_snapshots(versions, args)
79*90c8c64dSAndroid Build Coastguard Worker        return
80*90c8c64dSAndroid Build Coastguard Worker
81*90c8c64dSAndroid Build Coastguard Worker    if not args.versions:
82*90c8c64dSAndroid Build Coastguard Worker        parser.print_help()
83*90c8c64dSAndroid Build Coastguard Worker        return
84*90c8c64dSAndroid Build Coastguard Worker
85*90c8c64dSAndroid Build Coastguard Worker    fetch_and_update_snapshots(args.versions, args)
86*90c8c64dSAndroid Build Coastguard Worker
87*90c8c64dSAndroid Build Coastguard Workerif __name__ == '__main__':
88*90c8c64dSAndroid Build Coastguard Worker    main()
89