|  | @@ -14,20 +14,20 @@
 | 
	
		
			
				|  |  |  # limitations under the License.
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  from __future__ import print_function
 | 
	
		
			
				|  |  | -from collections import OrderedDict
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import json
 | 
	
		
			
				|  |  |  import shutil
 | 
	
		
			
				|  |  |  import sys
 | 
	
		
			
				|  |  |  import os
 | 
	
		
			
				|  |  |  import yaml
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +sys.dont_write_bytecode = True
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +boring_ssl_root = os.path.abspath(
 | 
	
		
			
				|  |  | +    os.path.join(os.path.dirname(sys.argv[0]),
 | 
	
		
			
				|  |  | +                 '../../third_party/boringssl-with-bazel/src'))
 | 
	
		
			
				|  |  | +sys.path.append(os.path.join(boring_ssl_root, 'util'))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  try:
 | 
	
		
			
				|  |  | -    sources_path = os.path.abspath(
 | 
	
		
			
				|  |  | -        os.path.join(os.path.dirname(sys.argv[0]),
 | 
	
		
			
				|  |  | -                     '../../third_party/boringssl-with-bazel/sources.json'))
 | 
	
		
			
				|  |  | -    with open(sources_path, 'r') as s:
 | 
	
		
			
				|  |  | -        sources = json.load(s)
 | 
	
		
			
				|  |  | +    import generate_build_files
 | 
	
		
			
				|  |  |  except ImportError:
 | 
	
		
			
				|  |  |      print(yaml.dump({}))
 | 
	
		
			
				|  |  |      sys.exit()
 | 
	
	
		
			
				|  | @@ -38,18 +38,12 @@ def map_dir(filename):
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  class Grpc(object):
 | 
	
		
			
				|  |  | -    """ Adapter for boring-SSL json sources files. """
 | 
	
		
			
				|  |  | +    """Implements a "platform" in the sense of boringssl's generate_build_files.py"""
 | 
	
		
			
				|  |  | +    yaml = None
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    def __init__(self, sources):
 | 
	
		
			
				|  |  | -        self.yaml = None
 | 
	
		
			
				|  |  | -        self.WriteFiles(sources)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    def WriteFiles(self, files):
 | 
	
		
			
				|  |  | +    def WriteFiles(self, files, asm_outputs):
 | 
	
		
			
				|  |  |          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',
 | 
	
	
		
			
				|  | @@ -126,5 +120,29 @@ class Grpc(object):
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -grpc_platform = Grpc(sources)
 | 
	
		
			
				|  |  | -print(yaml.dump(grpc_platform.yaml))
 | 
	
		
			
				|  |  | +os.chdir(os.path.dirname(sys.argv[0]))
 | 
	
		
			
				|  |  | +os.mkdir('src')
 | 
	
		
			
				|  |  | +try:
 | 
	
		
			
				|  |  | +    for f in os.listdir(boring_ssl_root):
 | 
	
		
			
				|  |  | +        os.symlink(os.path.join(boring_ssl_root, f), os.path.join('src', f))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    grpc_platform = Grpc()
 | 
	
		
			
				|  |  | +    # We use a hack to run boringssl's util/generate_build_files.py as part of this script.
 | 
	
		
			
				|  |  | +    # The call will populate "grpc_platform" with boringssl's source file metadata.
 | 
	
		
			
				|  |  | +    # As a side effect this script generates err_data.c and crypto_test_data.cc (requires golang)
 | 
	
		
			
				|  |  | +    # Both of these files are already available under third_party/boringssl-with-bazel
 | 
	
		
			
				|  |  | +    # so we don't need to generate them again, but there's no option to disable that behavior.
 | 
	
		
			
				|  |  | +    # - crypto_test_data.cc is required to run boringssl_crypto_test but we already
 | 
	
		
			
				|  |  | +    #   use the copy under third_party/boringssl-with-bazel so we just delete it
 | 
	
		
			
				|  |  | +    # - err_data.c is already under third_party/boringssl-with-bazel so we just delete it
 | 
	
		
			
				|  |  | +    generate_build_files.main([grpc_platform])
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    print(yaml.dump(grpc_platform.yaml))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +finally:
 | 
	
		
			
				|  |  | +    # we don't want err_data.c and crypto_test_data.cc (see comment above)
 | 
	
		
			
				|  |  | +    if os.path.exists('err_data.c'):
 | 
	
		
			
				|  |  | +        os.remove('err_data.c')
 | 
	
		
			
				|  |  | +    if os.path.exists('crypto_test_data.cc'):
 | 
	
		
			
				|  |  | +        os.remove('crypto_test_data.cc')
 | 
	
		
			
				|  |  | +    shutil.rmtree('src')
 |