summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYifan Hong <elsk@google.com>2024-03-14 12:38:16 -0700
committerYifan Hong <elsk@google.com>2024-03-15 13:47:20 -0700
commitd48d664d2fbc7e441bed9f97ddb47dd3eaffeab5 (patch)
tree7024091ed55f4718c2196539a0368b104e31b036
parente4e0899e79a15723b6c7831da7b4a2ddc725c60a (diff)
downloadbuild-d48d664d2fbc7e441bed9f97ddb47dd3eaffeab5.tar.gz
kleaf: Add platforms to kernel_filegroup.
This is to mimic _kernel_build (the internal rule). kernel_build() macro creates _platform_target and _platform_host targets before passing them to kernel_env. This change allows kernel_filegroup to accept the two platform targets. Test: TH Bug: 291918087 Change-Id: Id342b21284f10f9e4cc1b18779c0798e6ff35006
-rw-r--r--kleaf/docs/api_reference/kernel.md8
-rw-r--r--kleaf/impl/BUILD.bazel6
-rw-r--r--kleaf/impl/common_providers.bzl1
-rw-r--r--kleaf/impl/kernel_build.bzl3
-rw-r--r--kleaf/impl/kernel_filegroup.bzl2
-rw-r--r--kleaf/impl/kernel_filegroup_declaration.bzl23
-rw-r--r--kleaf/tests/kernel_build_test/kernel_toolchain_test.bzl2
-rw-r--r--kleaf/tests/merged_kernel_uapi_headers_test/order_test.bzl2
8 files changed, 44 insertions, 3 deletions
diff --git a/kleaf/docs/api_reference/kernel.md b/kleaf/docs/api_reference/kernel.md
index 7cb80cd..2b37f7e 100644
--- a/kleaf/docs/api_reference/kernel.md
+++ b/kleaf/docs/api_reference/kernel.md
@@ -259,9 +259,9 @@ Define an executable that creates `compile_commands.json` from a `kernel_build`.
<pre>
kernel_filegroup(<a href="#kernel_filegroup-name">name</a>, <a href="#kernel_filegroup-deps">deps</a>, <a href="#kernel_filegroup-srcs">srcs</a>, <a href="#kernel_filegroup-collect_unstripped_modules">collect_unstripped_modules</a>, <a href="#kernel_filegroup-ddk_module_defconfig_fragments">ddk_module_defconfig_fragments</a>,
- <a href="#kernel_filegroup-debug">debug</a>, <a href="#kernel_filegroup-gki_artifacts">gki_artifacts</a>, <a href="#kernel_filegroup-images">images</a>, <a href="#kernel_filegroup-kasan">kasan</a>, <a href="#kernel_filegroup-kasan_generic">kasan_generic</a>, <a href="#kernel_filegroup-kasan_sw_tags">kasan_sw_tags</a>, <a href="#kernel_filegroup-kcsan">kcsan</a>,
- <a href="#kernel_filegroup-kernel_release">kernel_release</a>, <a href="#kernel_filegroup-kernel_uapi_headers">kernel_uapi_headers</a>, <a href="#kernel_filegroup-lto">lto</a>, <a href="#kernel_filegroup-module_outs_file">module_outs_file</a>, <a href="#kernel_filegroup-protected_modules_list">protected_modules_list</a>,
- <a href="#kernel_filegroup-trim_nonlisted_kmi">trim_nonlisted_kmi</a>)
+ <a href="#kernel_filegroup-debug">debug</a>, <a href="#kernel_filegroup-exec_platform">exec_platform</a>, <a href="#kernel_filegroup-gki_artifacts">gki_artifacts</a>, <a href="#kernel_filegroup-images">images</a>, <a href="#kernel_filegroup-kasan">kasan</a>, <a href="#kernel_filegroup-kasan_generic">kasan_generic</a>, <a href="#kernel_filegroup-kasan_sw_tags">kasan_sw_tags</a>,
+ <a href="#kernel_filegroup-kcsan">kcsan</a>, <a href="#kernel_filegroup-kernel_release">kernel_release</a>, <a href="#kernel_filegroup-kernel_uapi_headers">kernel_uapi_headers</a>, <a href="#kernel_filegroup-lto">lto</a>, <a href="#kernel_filegroup-module_outs_file">module_outs_file</a>,
+ <a href="#kernel_filegroup-protected_modules_list">protected_modules_list</a>, <a href="#kernel_filegroup-target_platform">target_platform</a>, <a href="#kernel_filegroup-trim_nonlisted_kmi">trim_nonlisted_kmi</a>)
</pre>
**EXPERIMENTAL.** The API of `kernel_filegroup` rapidly changes and
@@ -288,6 +288,7 @@ It can be used in the `base_kernel` attribute of a [`kernel_build`](#kernel_buil
| <a id="kernel_filegroup-collect_unstripped_modules"></a>collect_unstripped_modules | See [`kernel_build.collect_unstripped_modules`](#kernel_build-collect_unstripped_modules).<br><br>Unlike `kernel_build`, this has default value `True` because [`kernel_abi`](#kernel_abi) sets [`define_abi_targets`](#kernel_abi-define_abi_targets) to `True` by default, which in turn sets `collect_unstripped_modules` to `True` by default. | Boolean | optional | `True` |
| <a id="kernel_filegroup-ddk_module_defconfig_fragments"></a>ddk_module_defconfig_fragments | Additional defconfig fragments for dependant DDK modules. | <a href="https://bazel.build/concepts/labels">List of labels</a> | optional | `[]` |
| <a id="kernel_filegroup-debug"></a>debug | - | <a href="https://bazel.build/concepts/labels">Label</a> | optional | `"@kleaf//build/kernel/kleaf:debug"` |
+| <a id="kernel_filegroup-exec_platform"></a>exec_platform | Execution platform, where the build is executed.<br><br>See https://bazel.build/extending/platforms. | <a href="https://bazel.build/concepts/labels">Label</a> | required | |
| <a id="kernel_filegroup-gki_artifacts"></a>gki_artifacts | A list of files that were built from the [`gki_artifacts`](#gki_artifacts) target. The `gki-info.txt` file should be part of that list.<br><br>If `kernel_release` is set, this attribute has no effect. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | `None` |
| <a id="kernel_filegroup-images"></a>images | A label providing files similar to a [`kernel_images`](#kernel_images) target. | <a href="https://bazel.build/concepts/labels">Label</a> | optional | `None` |
| <a id="kernel_filegroup-kasan"></a>kasan | - | <a href="https://bazel.build/concepts/labels">Label</a> | optional | `"@kleaf//build/kernel/kleaf:kasan"` |
@@ -299,6 +300,7 @@ It can be used in the `base_kernel` attribute of a [`kernel_build`](#kernel_buil
| <a id="kernel_filegroup-lto"></a>lto | - | String | optional | `"default"` |
| <a id="kernel_filegroup-module_outs_file"></a>module_outs_file | A file containing `module_outs` of the original [`kernel_build`](#kernel_build) target. | <a href="https://bazel.build/concepts/labels">Label</a> | required | |
| <a id="kernel_filegroup-protected_modules_list"></a>protected_modules_list | - | <a href="https://bazel.build/concepts/labels">Label</a> | optional | `None` |
+| <a id="kernel_filegroup-target_platform"></a>target_platform | Target platform that describes characteristics of the target device.<br><br>See https://bazel.build/extending/platforms. | <a href="https://bazel.build/concepts/labels">Label</a> | required | |
| <a id="kernel_filegroup-trim_nonlisted_kmi"></a>trim_nonlisted_kmi | - | Boolean | optional | `False` |
diff --git a/kleaf/impl/BUILD.bazel b/kleaf/impl/BUILD.bazel
index a2845ed..51964f9 100644
--- a/kleaf/impl/BUILD.bazel
+++ b/kleaf/impl/BUILD.bazel
@@ -427,6 +427,9 @@ platform(
"@platforms//os:linux",
"@platforms//cpu:x86_64",
],
+ visibility = [
+ "//build/kernel/kleaf/tests:__subpackages__",
+ ],
)
# 32-bit
@@ -444,6 +447,9 @@ platform(
"@platforms//os:android",
"@platforms//cpu:arm64",
],
+ visibility = [
+ "//build/kernel/kleaf/tests:__subpackages__",
+ ],
)
platform(
diff --git a/kleaf/impl/common_providers.bzl b/kleaf/impl/common_providers.bzl
index 8754d04..435331c 100644
--- a/kleaf/impl/common_providers.bzl
+++ b/kleaf/impl/common_providers.bzl
@@ -306,6 +306,7 @@ KernelBuildFilegroupDeclInfo = provider(
"kernel_uapi_headers": """[depset](https://bazel.build/extending/depsets) of
[`File`](https://bazel.build/rules/lib/File)s containing
archives of UAPI headers.""",
+ "arch": "[`kernel_build.arch`](#kernel_build-arch)",
},
)
diff --git a/kleaf/impl/kernel_build.bzl b/kleaf/impl/kernel_build.bzl
index 6057268..6e5b253 100644
--- a/kleaf/impl/kernel_build.bzl
+++ b/kleaf/impl/kernel_build.bzl
@@ -618,6 +618,7 @@ def kernel_build(
pack_module_env = pack_module_env,
sanitizers = sanitizers,
ddk_module_defconfig_fragments = ddk_module_defconfig_fragments,
+ arch = arch,
**kwargs
)
@@ -1990,6 +1991,7 @@ def _create_infos(
src_protected_modules_list = ctx.file.src_protected_modules_list,
ddk_module_defconfig_fragments = ddk_module_defconfig_fragments,
kernel_uapi_headers = kernel_uapi_headers_depset,
+ arch = ctx.attr.arch,
)
default_info_files = all_output_files["outs"].values() + all_output_files["module_outs"].values()
@@ -2201,6 +2203,7 @@ _kernel_build = rule(
allow_empty = True,
allow_files = True,
),
+ "arch": attr.string(),
} | _kernel_build_additional_attrs(),
toolchains = [hermetic_toolchain.type],
)
diff --git a/kleaf/impl/kernel_filegroup.bzl b/kleaf/impl/kernel_filegroup.bzl
index 17fe35c..bc6dd10 100644
--- a/kleaf/impl/kernel_filegroup.bzl
+++ b/kleaf/impl/kernel_filegroup.bzl
@@ -38,6 +38,7 @@ load(
load(":debug.bzl", "debug")
load(":hermetic_toolchain.bzl", "hermetic_toolchain")
load(":kernel_config_settings.bzl", "kernel_config_settings")
+load(":kernel_toolchains_utils.bzl", "kernel_toolchains_utils")
load(
":utils.bzl",
"utils",
@@ -205,6 +206,7 @@ def _kernel_filegroup_impl(ctx):
def _kernel_filegroup_additional_attrs():
return dicts.add(
kernel_config_settings.of_kernel_env(),
+ kernel_toolchains_utils.attrs(),
)
kernel_filegroup = rule(
diff --git a/kleaf/impl/kernel_filegroup_declaration.bzl b/kleaf/impl/kernel_filegroup_declaration.bzl
index fe50191..99f68fd 100644
--- a/kleaf/impl/kernel_filegroup_declaration.bzl
+++ b/kleaf/impl/kernel_filegroup_declaration.bzl
@@ -55,6 +55,24 @@ def _kernel_filegroup_declaration_impl(ctx):
kernel_uapi_headers = kernel_uapi_headers_lst[0]
fragment = """\
+platform(
+ name = {target_platform_repr},
+ constraint_values = [
+ "@platforms//os:android",
+ "@platforms//cpu:{arch}",
+ ],
+ visibility = ["//visibility:private"],
+)
+
+platform(
+ name = {exec_platform_repr},
+ constraint_values = [
+ "@platforms//os:linux",
+ "@platforms//cpu:x86_64",
+ ],
+ visibility = ["//visibility:private"],
+)
+
kernel_filegroup(
name = {name_repr},
srcs = {srcs_repr},
@@ -65,6 +83,8 @@ kernel_filegroup(
kernel_release = {kernel_release_repr},
protected_modules_list = {protected_modules_repr},
ddk_module_defconfig_fragments = {ddk_module_defconfig_fragments_repr},
+ target_platform = {target_platform_repr},
+ exec_platform = {exec_platform_repr},
visibility = ["//visibility:public"],
)
""".format(
@@ -80,6 +100,9 @@ kernel_filegroup(
ddk_module_defconfig_fragments_repr = files_to_pkg_label(
info.ddk_module_defconfig_fragments.to_list(),
),
+ target_platform_repr = repr(ctx.attr.kernel_build.label.name + "_platform_target"),
+ exec_platform_repr = repr(ctx.attr.kernel_build.label.name + "_platform_exec"),
+ arch = info.arch,
)
filegroup_decl_file = ctx.actions.declare_file("{}/{}".format(
diff --git a/kleaf/tests/kernel_build_test/kernel_toolchain_test.bzl b/kleaf/tests/kernel_build_test/kernel_toolchain_test.bzl
index e2ecd13..089d4b9 100644
--- a/kleaf/tests/kernel_build_test/kernel_toolchain_test.bzl
+++ b/kleaf/tests/kernel_build_test/kernel_toolchain_test.bzl
@@ -109,6 +109,8 @@ def kernel_toolchain_test(name):
],
module_outs_file = filegroup_name + "_module_outs_file",
gki_artifacts = filegroup_name + "_gki_info",
+ target_platform = Label("//build/kernel/kleaf/impl:android_arm64"),
+ exec_platform = Label("//build/kernel/kleaf/impl:linux_x86_64"),
tags = ["manual"],
)
diff --git a/kleaf/tests/merged_kernel_uapi_headers_test/order_test.bzl b/kleaf/tests/merged_kernel_uapi_headers_test/order_test.bzl
index 2f4cba6..f179a00 100644
--- a/kleaf/tests/merged_kernel_uapi_headers_test/order_test.bzl
+++ b/kleaf/tests/merged_kernel_uapi_headers_test/order_test.bzl
@@ -140,6 +140,8 @@ def order_test(name):
kernel_uapi_headers = name + "_base_uapi_headers",
module_outs_file = name + "_module_outs_file",
gki_artifacts = name + "_gki_info",
+ target_platform = Label("//build/kernel/kleaf/impl:android_arm64"),
+ exec_platform = Label("//build/kernel/kleaf/impl:linux_x86_64"),
tags = ["manual"],
)