diff options
author | Yifan Hong <elsk@google.com> | 2024-03-14 12:38:16 -0700 |
---|---|---|
committer | Yifan Hong <elsk@google.com> | 2024-03-15 13:47:20 -0700 |
commit | d48d664d2fbc7e441bed9f97ddb47dd3eaffeab5 (patch) | |
tree | 7024091ed55f4718c2196539a0368b104e31b036 | |
parent | e4e0899e79a15723b6c7831da7b4a2ddc725c60a (diff) | |
download | build-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.md | 8 | ||||
-rw-r--r-- | kleaf/impl/BUILD.bazel | 6 | ||||
-rw-r--r-- | kleaf/impl/common_providers.bzl | 1 | ||||
-rw-r--r-- | kleaf/impl/kernel_build.bzl | 3 | ||||
-rw-r--r-- | kleaf/impl/kernel_filegroup.bzl | 2 | ||||
-rw-r--r-- | kleaf/impl/kernel_filegroup_declaration.bzl | 23 | ||||
-rw-r--r-- | kleaf/tests/kernel_build_test/kernel_toolchain_test.bzl | 2 | ||||
-rw-r--r-- | kleaf/tests/merged_kernel_uapi_headers_test/order_test.bzl | 2 |
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"], ) |