Merge "Use filegroup for notice files."
am: c78aa7e0a0
Change-Id: If4b4516b852be8cad78d1b4e6b1bf914f28ecaa1
This commit is contained in:
@@ -53,6 +53,7 @@ class GenBuildFile(object):
|
|||||||
... (other {SNAPSHOT_ARCH}/ directories)
|
... (other {SNAPSHOT_ARCH}/ directories)
|
||||||
common/
|
common/
|
||||||
Android.mk
|
Android.mk
|
||||||
|
Android.bp
|
||||||
NOTICE_FILES/
|
NOTICE_FILES/
|
||||||
(license files, e.g. libfoo.so.txt)
|
(license files, e.g. libfoo.so.txt)
|
||||||
"""
|
"""
|
||||||
@@ -77,10 +78,12 @@ class GenBuildFile(object):
|
|||||||
self._etc_paths = self._get_etc_paths()
|
self._etc_paths = self._get_etc_paths()
|
||||||
self._snapshot_archs = utils.get_snapshot_archs(install_dir)
|
self._snapshot_archs = utils.get_snapshot_archs(install_dir)
|
||||||
self._mkfile = os.path.join(install_dir, utils.ANDROID_MK_PATH)
|
self._mkfile = os.path.join(install_dir, utils.ANDROID_MK_PATH)
|
||||||
|
self._common_bpfile = os.path.join(install_dir, utils.COMMON_BP_PATH)
|
||||||
self._vndk_core = self._parse_lib_list('vndkcore.libraries.txt')
|
self._vndk_core = self._parse_lib_list('vndkcore.libraries.txt')
|
||||||
self._vndk_sp = self._parse_lib_list(
|
self._vndk_sp = self._parse_lib_list(
|
||||||
os.path.basename(self._etc_paths['vndksp.libraries.txt']))
|
os.path.basename(self._etc_paths['vndksp.libraries.txt']))
|
||||||
self._vndk_private = self._parse_lib_list('vndkprivate.libraries.txt')
|
self._vndk_private = self._parse_lib_list('vndkprivate.libraries.txt')
|
||||||
|
self._modules_with_notice = self._get_modules_with_notice()
|
||||||
|
|
||||||
def _get_etc_paths(self):
|
def _get_etc_paths(self):
|
||||||
"""Returns a map of relative file paths for each ETC module."""
|
"""Returns a map of relative file paths for each ETC module."""
|
||||||
@@ -112,6 +115,13 @@ class GenBuildFile(object):
|
|||||||
lib_map[arch] = f.read().strip().split('\n')
|
lib_map[arch] = f.read().strip().split('\n')
|
||||||
return lib_map
|
return lib_map
|
||||||
|
|
||||||
|
def _get_modules_with_notice(self):
|
||||||
|
"""Returns a list of modules that have associated notice files. """
|
||||||
|
notice_paths = glob.glob(
|
||||||
|
os.path.join(self._install_dir, utils.NOTICE_FILES_DIR_PATH,
|
||||||
|
'*.txt'))
|
||||||
|
return [os.path.splitext(os.path.basename(p))[0] for p in notice_paths]
|
||||||
|
|
||||||
def generate_android_mk(self):
|
def generate_android_mk(self):
|
||||||
"""Autogenerates Android.mk."""
|
"""Autogenerates Android.mk."""
|
||||||
|
|
||||||
@@ -137,6 +147,17 @@ class GenBuildFile(object):
|
|||||||
|
|
||||||
logging.info('Successfully generated {}'.format(self._mkfile))
|
logging.info('Successfully generated {}'.format(self._mkfile))
|
||||||
|
|
||||||
|
def generate_common_android_bp(self):
|
||||||
|
"""Autogenerates common/Android.bp."""
|
||||||
|
|
||||||
|
logging.info('Generating common/Android.bp for snapshot v{}'.format(
|
||||||
|
self._vndk_version))
|
||||||
|
with open(self._common_bpfile, 'w') as bpfile:
|
||||||
|
bpfile.write(self._gen_autogen_msg('/'))
|
||||||
|
for module in self._modules_with_notice:
|
||||||
|
bpfile.write('\n')
|
||||||
|
bpfile.write(self._gen_notice_filegroup(module))
|
||||||
|
|
||||||
def generate_android_bp(self):
|
def generate_android_bp(self):
|
||||||
"""Autogenerates Android.bp."""
|
"""Autogenerates Android.bp."""
|
||||||
|
|
||||||
@@ -259,6 +280,30 @@ class GenBuildFile(object):
|
|||||||
prebuilt, None, is_etc=True),
|
prebuilt, None, is_etc=True),
|
||||||
etc_sub_path=etc_sub_path))
|
etc_sub_path=etc_sub_path))
|
||||||
|
|
||||||
|
def _gen_notice_filegroup(self, module):
|
||||||
|
"""Generates a notice filegroup build rule for a given module.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
notice: string, module name
|
||||||
|
"""
|
||||||
|
return ('filegroup {{\n'
|
||||||
|
'{ind}name: "{filegroup_name}",\n'
|
||||||
|
'{ind}srcs: ["{notice_dir}/{module}.txt"],\n'
|
||||||
|
'}}\n'.format(
|
||||||
|
ind=self.INDENT,
|
||||||
|
filegroup_name=self._get_notice_filegroup_name(module),
|
||||||
|
module=module,
|
||||||
|
notice_dir=utils.NOTICE_FILES_DIR_NAME))
|
||||||
|
|
||||||
|
def _get_notice_filegroup_name(self, module):
|
||||||
|
""" Gets a notice filegroup module name for a given module.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
notice: string, module name.
|
||||||
|
"""
|
||||||
|
return 'vndk-v{ver}-{module}-notice'.format(
|
||||||
|
ver=self._vndk_version, module=module)
|
||||||
|
|
||||||
def _gen_bp_phony(self, arch, is_binder32=False):
|
def _gen_bp_phony(self, arch, is_binder32=False):
|
||||||
"""Generates build rule for phony package 'vndk_v{ver}_{arch}'.
|
"""Generates build rule for phony package 'vndk_v{ver}_{arch}'.
|
||||||
|
|
||||||
@@ -342,17 +387,10 @@ class GenBuildFile(object):
|
|||||||
prebuilt: string, name of prebuilt object
|
prebuilt: string, name of prebuilt object
|
||||||
"""
|
"""
|
||||||
notice = ''
|
notice = ''
|
||||||
notice_file_name = '{}.txt'.format(prebuilt)
|
if prebuilt in self._modules_with_notice:
|
||||||
notice_dir = os.path.join(self._install_dir,
|
notice = '{ind}notice: ":{notice_filegroup}",\n'.format(
|
||||||
utils.NOTICE_FILES_DIR_PATH)
|
|
||||||
notice_files = utils.find(notice_dir, [notice_file_name])
|
|
||||||
if len(notice_files) > 0:
|
|
||||||
notice_dir_relpath = os.path.relpath(
|
|
||||||
os.path.join(notice_dir), src_root)
|
|
||||||
notice = '{ind}notice: "{notice_file_path}",\n'.format(
|
|
||||||
ind=self.INDENT,
|
ind=self.INDENT,
|
||||||
notice_file_path=os.path.join(notice_dir_relpath,
|
notice_filegroup=self._get_notice_filegroup_name(prebuilt))
|
||||||
notice_files[0]))
|
|
||||||
return notice
|
return notice
|
||||||
|
|
||||||
def get_rel_install_path(prebuilt):
|
def get_rel_install_path(prebuilt):
|
||||||
@@ -487,6 +525,7 @@ def main():
|
|||||||
|
|
||||||
buildfile_generator = GenBuildFile(install_dir, vndk_version)
|
buildfile_generator = GenBuildFile(install_dir, vndk_version)
|
||||||
buildfile_generator.generate_android_mk()
|
buildfile_generator.generate_android_mk()
|
||||||
|
buildfile_generator.generate_common_android_bp()
|
||||||
buildfile_generator.generate_android_bp()
|
buildfile_generator.generate_android_bp()
|
||||||
|
|
||||||
logging.info('Done.')
|
logging.info('Done.')
|
||||||
|
|||||||
@@ -141,6 +141,9 @@ def update_buildfiles(buildfile_generator):
|
|||||||
logging.info('Generating Android.mk file...')
|
logging.info('Generating Android.mk file...')
|
||||||
buildfile_generator.generate_android_mk()
|
buildfile_generator.generate_android_mk()
|
||||||
|
|
||||||
|
logging.info('Generating common/Android.bp file...')
|
||||||
|
buildfile_generator.generate_common_android_bp()
|
||||||
|
|
||||||
logging.info('Generating Android.bp files...')
|
logging.info('Generating Android.bp files...')
|
||||||
buildfile_generator.generate_android_bp()
|
buildfile_generator.generate_android_bp()
|
||||||
|
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import sys
|
|||||||
COMMON_DIR_NAME = 'common'
|
COMMON_DIR_NAME = 'common'
|
||||||
COMMON_DIR_PATH = COMMON_DIR_NAME
|
COMMON_DIR_PATH = COMMON_DIR_NAME
|
||||||
ANDROID_MK_PATH = os.path.join(COMMON_DIR_PATH, 'Android.mk')
|
ANDROID_MK_PATH = os.path.join(COMMON_DIR_PATH, 'Android.mk')
|
||||||
|
COMMON_BP_PATH = os.path.join(COMMON_DIR_PATH, 'Android.bp')
|
||||||
CONFIG_DIR_PATH_PATTERN = '*/configs'
|
CONFIG_DIR_PATH_PATTERN = '*/configs'
|
||||||
MANIFEST_FILE_NAME = 'manifest.xml'
|
MANIFEST_FILE_NAME = 'manifest.xml'
|
||||||
MODULE_PATHS_FILE_NAME = 'module_paths.txt'
|
MODULE_PATHS_FILE_NAME = 'module_paths.txt'
|
||||||
|
|||||||
Reference in New Issue
Block a user