blob: 39504a7fb7ad52f177461b45e9e6833e30c39bc5 [file] [log] [blame]
#!/usr/bin/env python3
# This tool generates `eligible-list-${ver}.csv` and
# `eligible-list-${ver}-properties.csv`.
import argparse
import os
import subprocess
import sys
import tempfile
UPDATE_DATASET = os.path.abspath(os.path.join(
__file__, '..', 'update_dataset.py'))
LIST_VNDK_MODULE = os.path.abspath(os.path.join(
__file__, '..', '..', '..', 'sourcedr', 'blueprint', 'list_vndk_module.py'))
def update_eligible_list(path, make_vars, module_info):
dirname, basename = os.path.split(path)
tmp_fd, tmp_path = tempfile.mkstemp(prefix=basename + '-', dir=dirname)
os.close(tmp_fd)
cmd = [sys.executable, UPDATE_DATASET]
cmd.extend(['--make-vars', make_vars])
cmd.extend(['--module-info', module_info])
cmd.extend(['-o', tmp_path])
cmd.append(path)
print('command:', ' '.join(cmd))
subprocess.check_call(cmd)
os.rename(tmp_path, path)
def update_eligible_list_properties(path, build_top):
dirname, basename = os.path.split(path)
tmp_fd, tmp_path = tempfile.mkstemp(prefix=basename + '-', dir=dirname)
os.close(tmp_fd)
cmd = [sys.executable, LIST_VNDK_MODULE]
cmd.extend(['--exclude', '(?:device/)|(?:vendor/)'])
cmd.extend(['--namespace', 'hardware/google/av'])
cmd.extend(['--namespace', 'hardware/google/interfaces'])
cmd.extend(['-o', tmp_path])
cmd.append(os.path.join(build_top, 'Android.bp'))
print('command:', ' '.join(cmd))
subprocess.check_call(cmd)
os.rename(tmp_path, path)
def _get_eligible_list_properties_path(eligible_list_path):
root, ext = os.path.splitext(eligible_list_path)
return root + '-properties' + ext
def _parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('eligible_list',
help='Path to eligible list to be updated')
return parser.parse_args()
def main():
args = _parse_args()
# Read Android product environment variables.
try:
build_top = os.environ['ANDROID_BUILD_TOP']
product = os.environ['TARGET_PRODUCT']
product_out = os.environ['ANDROID_PRODUCT_OUT']
except KeyError as e:
print('error: Failed to read the environment variable', e.args[0],
file=sys.stderr)
print('error: Did you lunch an Android target?', file=sys.stderr)
sys.exit(1)
print('----------------------------------------')
print('build_top:', build_top)
print('product:', product)
print('product_out:', product_out)
out_dir = os.path.normpath(os.path.join(product_out, '..', '..', '..'))
make_vars = os.path.join(out_dir, 'soong', 'make_vars-' + product + '.mk')
module_info = os.path.join(product_out, 'module-info.json')
print('----------------------------------------')
print('make_vars:', make_vars)
print('module_info:', module_info)
print('----------------------------------------')
# Run the commands to update the files.
update_eligible_list(args.eligible_list, make_vars, module_info)
update_eligible_list_properties(
_get_eligible_list_properties_path(args.eligible_list), build_top)
if __name__ == '__main__':
sys.exit(main())