| #!/usr/bin/env python2.7 |
| # Copyright 2015 gRPC authors. |
| # |
| # 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 json |
| import os |
| import sys |
| import yaml |
| |
| run_dir = os.path.dirname(sys.argv[0]) |
| sources_path = os.path.abspath( |
| os.path.join(run_dir, "../../third_party/boringssl-with-bazel/sources.json") |
| ) |
| try: |
| with open(sources_path, "r") as s: |
| sources = json.load(s) |
| except IOError: |
| sources_path = os.path.abspath( |
| os.path.join( |
| run_dir, "../../../../third_party/openssl/boringssl/sources.json" |
| ) |
| ) |
| with open(sources_path, "r") as s: |
| sources = json.load(s) |
| |
| |
| def map_dir(filename): |
| return "third_party/boringssl-with-bazel/" + filename |
| |
| |
| class Grpc(object): |
| """Adapter for boring-SSL json sources files.""" |
| |
| def __init__(self, sources): |
| self.yaml = None |
| self.WriteFiles(sources) |
| |
| def WriteFiles(self, files): |
| test_binaries = ["ssl_test", "crypto_test"] |
| asm_outputs = { |
| key: value |
| for key, value in files.items() |
| if any(f.endswith(".S") or f.endswith(".asm") for f in value) |
| } |
| self.yaml = { |
| "#": "generated with src/boringssl/gen_build_yaml.py", |
| "raw_boringssl_build_output_for_debugging": { |
| "files": files, |
| }, |
| "libs": [ |
| { |
| "name": "boringssl", |
| "build": "private", |
| "language": "c", |
| "secure": False, |
| "src": sorted( |
| map_dir(f) for f in files["ssl"] + files["crypto"] |
| ), |
| "asm_src": { |
| k: [map_dir(f) for f in value] |
| for k, value in asm_outputs.items() |
| }, |
| "headers": sorted( |
| map_dir(f) |
| # We want to include files['fips_fragments'], but not build them as objects. |
| # See https://boringssl-review.googlesource.com/c/boringssl/+/16946 |
| for f in files["ssl_headers"] |
| + files["ssl_internal_headers"] |
| + files["crypto_headers"] |
| + files["crypto_internal_headers"] |
| + files["fips_fragments"] |
| ), |
| "boringssl": True, |
| "defaults": "boringssl", |
| }, |
| { |
| "name": "boringssl_test_util", |
| "build": "private", |
| "language": "c++", |
| "secure": False, |
| "boringssl": True, |
| "defaults": "boringssl", |
| "src": [map_dir(f) for f in sorted(files["test_support"])], |
| }, |
| ], |
| "targets": [ |
| { |
| "name": "boringssl_%s" % test, |
| "build": "test", |
| "run": False, |
| "secure": False, |
| "language": "c++", |
| "src": sorted(map_dir(f) for f in files[test]), |
| "vs_proj_dir": "test/boringssl", |
| "boringssl": True, |
| "defaults": "boringssl", |
| "deps": [ |
| "boringssl_test_util", |
| "boringssl", |
| ], |
| } |
| for test in test_binaries |
| ], |
| "tests": [ |
| { |
| "name": "boringssl_%s" % test, |
| "args": [], |
| "exclude_configs": ["asan", "ubsan"], |
| "ci_platforms": ["linux", "mac", "posix", "windows"], |
| "platforms": ["linux", "mac", "posix", "windows"], |
| "flaky": False, |
| "gtest": True, |
| "language": "c++", |
| "boringssl": True, |
| "defaults": "boringssl", |
| "cpu_cost": 1.0, |
| } |
| for test in test_binaries |
| ], |
| } |
| |
| |
| grpc_platform = Grpc(sources) |
| print(yaml.dump(grpc_platform.yaml)) |