diff options
author | Yifan Hong <elsk@google.com> | 2022-10-12 15:55:17 -0700 |
---|---|---|
committer | Yifan Hong <elsk@google.com> | 2022-10-17 13:40:36 -0700 |
commit | df81c9ebc4fece230520e660e713f04ca472ccf0 (patch) | |
tree | 4bf1742c3fb087d8ed940d25f5129f34cf1b6f56 | |
parent | 2269b53c6b7d8b32a680b4bee8b80f82db119708 (diff) | |
download | build-df81c9ebc4fece230520e660e713f04ca472ccf0.tar.gz |
kleaf: Do not use Target's in KernelUnstrippedModulesInfo
It is not "Bazellic" to contain Target's in infos, but
better to put necessary information only.
Bug: 247622808
Bug: 247624301
Test: manual (check order in srcs in kernel_unstripped_modules_archive.bzl)
Change-Id: Ic1891d99ec7bd24b07d30873e4f223263c1add38
-rw-r--r-- | kleaf/impl/abi/abi_dump.bzl | 7 | ||||
-rw-r--r-- | kleaf/impl/common_providers.bzl | 9 | ||||
-rw-r--r-- | kleaf/impl/kernel_build.bzl | 9 | ||||
-rw-r--r-- | kleaf/impl/kernel_filegroup.bzl | 4 | ||||
-rw-r--r-- | kleaf/impl/kernel_module.bzl | 2 | ||||
-rw-r--r-- | kleaf/impl/kernel_unstripped_modules_archive.bzl | 16 |
6 files changed, 25 insertions, 22 deletions
diff --git a/kleaf/impl/abi/abi_dump.bzl b/kleaf/impl/abi/abi_dump.bzl index 8583415..e1fde94 100644 --- a/kleaf/impl/abi/abi_dump.bzl +++ b/kleaf/impl/abi/abi_dump.bzl @@ -49,10 +49,13 @@ def _abi_dump_full(ctx): unstripped_dir_provider_targets = [ctx.attr.kernel_build] + ctx.attr.kernel_modules unstripped_dir_providers = [target[KernelUnstrippedModulesInfo] for target in unstripped_dir_provider_targets] + + unstripped_dirs = [] for prov, target in zip(unstripped_dir_providers, unstripped_dir_provider_targets): - if not prov.directory: + dirs_for_target = prov.directories.to_list() + if not dirs_for_target: fail("{}: Requires dep {} to set collect_unstripped_modules = True".format(ctx.label, target.label)) - unstripped_dirs = [prov.directory for prov in unstripped_dir_providers] + unstripped_dirs += dirs_for_target inputs = [vmlinux, ctx.file._dump_abi] inputs += ctx.files._dump_abi_scripts diff --git a/kleaf/impl/common_providers.bzl b/kleaf/impl/common_providers.bzl index 5dc7822..e5fa786 100644 --- a/kleaf/impl/common_providers.bzl +++ b/kleaf/impl/common_providers.bzl @@ -85,9 +85,12 @@ KernelBuildInTreeModulesInfo = provider( KernelUnstrippedModulesInfo = provider( doc = "A provider that provides unstripped modules", fields = { - "base_kernel": "the `base_kernel` target, if exists", - "directory": """A [`File`](https://bazel.build/rules/lib/File) that -points to a directory containing unstripped modules. + "directories": """A [depset](https://bazel.build/extending/depsets) of +[`File`](https://bazel.build/rules/lib/File)s, where +each item points to a directory containing unstripped modules. + +Order matters; earlier elements in the traverse order has higher priority. Hence, +this depset must have `order` argument specified. For [`kernel_build()`](#kernel_build), this is a directory containing unstripped in-tree modules. - This is `None` if and only if `collect_unstripped_modules = False` diff --git a/kleaf/impl/kernel_build.bzl b/kleaf/impl/kernel_build.bzl index fc37e10..afa1683 100644 --- a/kleaf/impl/kernel_build.bzl +++ b/kleaf/impl/kernel_build.bzl @@ -815,9 +815,14 @@ def _kernel_build_impl(ctx): module_outs_file = all_module_names_file, ) + # TODO(b/250097199): the device GKI modules should be prioritized over generic modules + unstripped_modules_depsets = [] + if ctx.attr.base_kernel: + unstripped_modules_depsets.append(ctx.attr.base_kernel[KernelUnstrippedModulesInfo].directories) + if unstripped_dir: + unstripped_modules_depsets.append(depset([unstripped_dir])) kernel_unstripped_modules_info = KernelUnstrippedModulesInfo( - base_kernel = ctx.attr.base_kernel, - directory = unstripped_dir, + directories = depset(transitive = unstripped_modules_depsets, order = "postorder"), ) in_tree_modules_info = KernelBuildInTreeModulesInfo( diff --git a/kleaf/impl/kernel_filegroup.bzl b/kleaf/impl/kernel_filegroup.bzl index 957f776..7853bdc 100644 --- a/kleaf/impl/kernel_filegroup.bzl +++ b/kleaf/impl/kernel_filegroup.bzl @@ -75,7 +75,9 @@ def _kernel_filegroup_impl(ctx): progress_message = "Extracting unstripped_modules_archive {}".format(ctx.label), mnemonic = "KernelFilegroupUnstrippedModulesArchive", ) - unstripped_modules_info = KernelUnstrippedModulesInfo(directory = unstripped_dir) + unstripped_modules_info = KernelUnstrippedModulesInfo( + directories = depset([unstripped_dir], order = "postorder"), + ) abi_info = KernelBuildAbiInfo(module_outs_file = ctx.file.module_outs_file) in_tree_modules_info = KernelBuildInTreeModulesInfo(module_outs_file = ctx.file.module_outs_file) diff --git a/kleaf/impl/kernel_module.bzl b/kleaf/impl/kernel_module.bzl index e5a0c4d..bcd72ed 100644 --- a/kleaf/impl/kernel_module.bzl +++ b/kleaf/impl/kernel_module.bzl @@ -429,7 +429,7 @@ def _kernel_module_impl(ctx): files = ctx.outputs.outs, ), KernelUnstrippedModulesInfo( - directory = unstripped_dir, + directories = depset([unstripped_dir], order = "postorder"), ), ] diff --git a/kleaf/impl/kernel_unstripped_modules_archive.bzl b/kleaf/impl/kernel_unstripped_modules_archive.bzl index e7b3950..45e008e 100644 --- a/kleaf/impl/kernel_unstripped_modules_archive.bzl +++ b/kleaf/impl/kernel_unstripped_modules_archive.bzl @@ -20,22 +20,12 @@ load( load(":debug.bzl", "debug") def _kernel_unstripped_modules_archive_impl(ctx): - kernel_build = ctx.attr.kernel_build - base_kernel = kernel_build[KernelUnstrippedModulesInfo].base_kernel if kernel_build else None - # Early elements = higher priority. In-tree modules from base_kernel has highest priority, # then in-tree modules of the device kernel_build, then external modules (in an undetermined # order). - srcs = [] - for kernel_build_object in (base_kernel, kernel_build): - if not kernel_build_object: - continue - directory = kernel_build_object[KernelUnstrippedModulesInfo].directory - if not directory: - fail("{} does not have collect_unstripped_modules = True.".format(kernel_build_object.label)) - srcs.append(directory) - for kernel_module in ctx.attr.kernel_modules: - srcs.append(kernel_module[KernelUnstrippedModulesInfo].directory) + directories_depsets = [ctx.attr.kernel_build[KernelUnstrippedModulesInfo].directories] + directories_depsets += [kernel_module[KernelUnstrippedModulesInfo].directories for kernel_module in ctx.attr.kernel_modules] + srcs = depset(transitive = directories_depsets, order = "postorder").to_list() inputs = ctx.attr._hermetic_tools[HermeticToolsInfo].deps + srcs |