| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #!/usr/bin/env python
- # Copyright (c) 2021 Project CHIP 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.
- """
- Writes a JSON file containing build configuration information.
- See build/chip/java/tests/expected_output/* for example build configuration
- files.
- """
- import json
- import optparse
- import os
- import sys
- def LoadBuildConfigs(paths):
- build_configs = []
- for path in paths:
- with open(path, 'r') as file:
- build_configs.append(json.load(file))
- return build_configs
- def ParseGnList(value):
- if not value:
- return []
- if value.startswith('[') and value.endswith(']'):
- gn_list = value.strip("[]").replace(
- "\"", "").replace(" ", "").split(",")
- if not gn_list[0]:
- return []
- else:
- return gn_list
- def GetAllDependentJars(deps_configs_data):
- configs_to_process = deps_configs_data
- deps_jars = set()
- while configs_to_process:
- deps_config = configs_to_process.pop()
- child_configs = LoadBuildConfigs(
- deps_config['deps_info']['deps_configs'])
- deps_jars.add(deps_config['deps_info']['jar_path'])
- configs_to_process += child_configs
- return deps_jars
- def main(argv):
- parser = optparse.OptionParser()
- parser.add_option('--build-config', help='Path to build_config output')
- parser.add_option('--deps-configs',
- help='GN-list of dependent build_config files')
- parser.add_option('--jar-path', help='Path to the .jar')
- options, args = parser.parse_args(argv)
- deps_configs_list = ParseGnList(options.deps_configs)
- deps_configs_data = LoadBuildConfigs(deps_configs_list)
- deps_jars_set = GetAllDependentJars(deps_configs_data)
- config = {
- "deps_info": {
- "name": os.path.basename(options.build_config),
- "jar_path": options.jar_path,
- # List of configs depended on by this config. Not recursive.
- "deps_configs": deps_configs_list,
- # List of all jars needed by all dependencies of this config (recursive).
- "deps_jars": list(deps_jars_set)
- }
- }
- with open(options.build_config, 'w') as file:
- json.dump(config, file)
- if __name__ == '__main__':
- sys.exit(main(sys.argv[1:]))
|