summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYifan Hong <elsk@google.com>2022-10-12 15:55:17 -0700
committerYifan Hong <elsk@google.com>2022-10-17 13:40:36 -0700
commitdf81c9ebc4fece230520e660e713f04ca472ccf0 (patch)
tree4bf1742c3fb087d8ed940d25f5129f34cf1b6f56
parent2269b53c6b7d8b32a680b4bee8b80f82db119708 (diff)
downloadbuild-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.bzl7
-rw-r--r--kleaf/impl/common_providers.bzl9
-rw-r--r--kleaf/impl/kernel_build.bzl9
-rw-r--r--kleaf/impl/kernel_filegroup.bzl4
-rw-r--r--kleaf/impl/kernel_module.bzl2
-rw-r--r--kleaf/impl/kernel_unstripped_modules_archive.bzl16
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