diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/Android.bp | 19 | ||||
| -rwxr-xr-x | scripts/build-rustdocs.sh | 31 | ||||
| -rw-r--r-- | scripts/conv_classpaths_proto.py | 76 | ||||
| -rw-r--r-- | scripts/hiddenapi/Android.bp | 15 | ||||
| -rwxr-xr-x | scripts/hiddenapi/verify_overlaps.py | 69 |
5 files changed, 115 insertions, 95 deletions
diff --git a/scripts/Android.bp b/scripts/Android.bp index b0a8669c2..1c02bd0b8 100644 --- a/scripts/Android.bp +++ b/scripts/Android.bp @@ -265,22 +265,3 @@ python_binary_host { "linker_config_proto", ], } - -python_binary_host { - name: "conv_classpaths_proto", - srcs: [ - "conv_classpaths_proto.py", - ], - version: { - py2: { - enabled: false, - }, - py3: { - enabled: true, - embedded_launcher: true, - }, - }, - libs: [ - "classpaths_proto_python", - ], -} diff --git a/scripts/build-rustdocs.sh b/scripts/build-rustdocs.sh new file mode 100755 index 000000000..ad8ba16d5 --- /dev/null +++ b/scripts/build-rustdocs.sh @@ -0,0 +1,31 @@ +#!/bin/bash -ex + +# Copyright 2021 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Builds the platform rustdocs and copies them to the dist directory to provide +# online docs for each build. + +if [ -z "${OUT_DIR}" ]; then + echo Must set OUT_DIR + exit 1 +fi + +source build/envsetup.sh +m rustdoc + +if [ -n "${DIST_DIR}" ]; then + mkdir -p ${DIST_DIR} + cp -r ${OUT_DIR}/soong/rustdoc $DIST_DIR/rustdoc +fi diff --git a/scripts/conv_classpaths_proto.py b/scripts/conv_classpaths_proto.py deleted file mode 100644 index f49fbbb6b..000000000 --- a/scripts/conv_classpaths_proto.py +++ /dev/null @@ -1,76 +0,0 @@ -# Copyright (C) 2021 The Android Open Source Project -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import argparse - -import classpaths_pb2 - -import google.protobuf.json_format as json_format -import google.protobuf.text_format as text_format - - -def encode(args): - pb = classpaths_pb2.ExportedClasspathsJars() - if args.format == 'json': - json_format.Parse(args.input.read(), pb) - else: - text_format.Parse(args.input.read(), pb) - args.output.write(pb.SerializeToString()) - args.input.close() - args.output.close() - - -def decode(args): - pb = classpaths_pb2.ExportedClasspathsJars() - pb.ParseFromString(args.input.read()) - if args.format == 'json': - args.output.write(json_format.MessageToJson(pb)) - else: - args.output.write(text_format.MessageToString(pb).encode('utf_8')) - args.input.close() - args.output.close() - - -def main(): - parser = argparse.ArgumentParser('Convert classpaths.proto messages between binary and ' - 'human-readable formats.') - parser.add_argument('-f', '--format', default='textproto', - help='human-readable format, either json or text(proto), ' - 'defaults to textproto') - parser.add_argument('-i', '--input', - nargs='?', type=argparse.FileType('rb'), default=sys.stdin.buffer) - parser.add_argument('-o', '--output', - nargs='?', type=argparse.FileType('wb'), - default=sys.stdout.buffer) - - subparsers = parser.add_subparsers() - - parser_encode = subparsers.add_parser('encode', - help='convert classpaths protobuf message from ' - 'JSON to binary format', - parents=[parser], add_help=False) - - parser_encode.set_defaults(func=encode) - - parser_decode = subparsers.add_parser('decode', - help='print classpaths config in JSON format', - parents=[parser], add_help=False) - parser_decode.set_defaults(func=decode) - - args = parser.parse_args() - args.func(args) - - -if __name__ == '__main__': - main() diff --git a/scripts/hiddenapi/Android.bp b/scripts/hiddenapi/Android.bp index af7e7fe6b..7472f528b 100644 --- a/scripts/hiddenapi/Android.bp +++ b/scripts/hiddenapi/Android.bp @@ -47,3 +47,18 @@ python_binary_host { }, }, } + +python_binary_host { + name: "verify_overlaps", + main: "verify_overlaps.py", + srcs: ["verify_overlaps.py"], + version: { + py2: { + enabled: false, + }, + py3: { + enabled: true, + embedded_launcher: true, + }, + }, +} diff --git a/scripts/hiddenapi/verify_overlaps.py b/scripts/hiddenapi/verify_overlaps.py new file mode 100755 index 000000000..c8e387931 --- /dev/null +++ b/scripts/hiddenapi/verify_overlaps.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python +# +# Copyright (C) 2018 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +""" +Verify that one set of hidden API flags is a subset of another. +""" + +import argparse +import csv + +args_parser = argparse.ArgumentParser(description='Verify that one set of hidden API flags is a subset of another.') +args_parser.add_argument('all', help='All the flags') +args_parser.add_argument('subsets', nargs=argparse.REMAINDER, help='Subsets of the flags') +args = args_parser.parse_args() + + +def dict_reader(input): + return csv.DictReader(input, delimiter=',', quotechar='|', fieldnames=['signature']) + +# Read in all the flags into a dict indexed by signature +allFlagsBySignature = {} +with open(args.all, 'r') as allFlagsFile: + allFlagsReader = dict_reader(allFlagsFile) + for row in allFlagsReader: + signature = row['signature'] + allFlagsBySignature[signature]=row + +failed = False +for subsetPath in args.subsets: + mismatchingSignatures = [] + with open(subsetPath, 'r') as subsetFlagsFile: + subsetReader = dict_reader(subsetFlagsFile) + for row in subsetReader: + signature = row['signature'] + if signature in allFlagsBySignature: + allFlags = allFlagsBySignature.get(signature) + if allFlags != row: + mismatchingSignatures.append((signature, row[None], allFlags[None])) + else: + mismatchingSignatures.append((signature, row[None], [])) + + + if mismatchingSignatures: + failed = True + print("ERROR: Hidden API flags are inconsistent:") + print("< " + subsetPath) + print("> " + args.all) + for mismatch in mismatchingSignatures: + print() + print("< " + mismatch[0] + "," + ",".join(mismatch[1])) + if mismatch[2] != None: + print("> " + mismatch[0] + "," + ",".join(mismatch[2])) + else: + print("> " + mismatch[0] + " - missing") + +if failed: + sys.exit(1) |