diff options
author | Alex Márquez Pérez Muñíz Díaz Púras Thaureaux <alexmarquez@google.com> | 2022-04-21 16:15:37 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-04-21 16:15:37 +0000 |
commit | 9898ac01c9525bf91d23a1c2b83fc401603cb6d3 (patch) | |
tree | 74393ec5dcc68491e5308c0f4d3bdc3fa1f58fcb | |
parent | e93f4df1af433ed9fd8dde71d09885b0c4409874 (diff) | |
parent | da779c297139918058ddda747c0730d9e609ddd5 (diff) | |
download | bazel-android-13.0.0_r80.tar.gz |
Subsume prebuilt_etc through prebuilt_file usage am: 3dc924bdb4 am: 6234e86c39 am: a4ecd7a1d0 am: c7d5439fbb am: da779c2971android-13.0.0_r83android-13.0.0_r82android-13.0.0_r81android-13.0.0_r80android-13.0.0_r79android-13.0.0_r78android-13.0.0_r77android-13.0.0_r76android-13.0.0_r75android-13.0.0_r74android-13.0.0_r73android-13.0.0_r72android-13.0.0_r71android-13.0.0_r70android-13.0.0_r69android-13.0.0_r68android-13.0.0_r67android-13.0.0_r66android-13.0.0_r65android-13.0.0_r64android-13.0.0_r63android-13.0.0_r62android-13.0.0_r61android-13.0.0_r60android-13.0.0_r59android-13.0.0_r58android-13.0.0_r56android-13.0.0_r54android-13.0.0_r53android-13.0.0_r52android-13.0.0_r51android-13.0.0_r50android-13.0.0_r49android-13.0.0_r48android-13.0.0_r47android-13.0.0_r46android-13.0.0_r45android-13.0.0_r44android-13.0.0_r43android-13.0.0_r42android-13.0.0_r41android-13.0.0_r40android-13.0.0_r39android-13.0.0_r38android-13.0.0_r37android-13.0.0_r36android-13.0.0_r35android-13.0.0_r34android-13.0.0_r33android-13.0.0_r32android13-qpr3-s9-releaseandroid13-qpr3-s8-releaseandroid13-qpr3-s7-releaseandroid13-qpr3-s6-releaseandroid13-qpr3-s5-releaseandroid13-qpr3-s4-releaseandroid13-qpr3-s3-releaseandroid13-qpr3-s2-releaseandroid13-qpr3-s14-releaseandroid13-qpr3-s13-releaseandroid13-qpr3-s12-releaseandroid13-qpr3-s11-releaseandroid13-qpr3-s10-releaseandroid13-qpr3-s1-releaseandroid13-qpr3-releaseandroid13-qpr3-c-s8-releaseandroid13-qpr3-c-s7-releaseandroid13-qpr3-c-s6-releaseandroid13-qpr3-c-s5-releaseandroid13-qpr3-c-s4-releaseandroid13-qpr3-c-s3-releaseandroid13-qpr3-c-s2-releaseandroid13-qpr3-c-s12-releaseandroid13-qpr3-c-s11-releaseandroid13-qpr3-c-s10-releaseandroid13-qpr3-c-s1-releaseandroid13-qpr2-s9-releaseandroid13-qpr2-s8-releaseandroid13-qpr2-s7-releaseandroid13-qpr2-s6-releaseandroid13-qpr2-s5-releaseandroid13-qpr2-s3-releaseandroid13-qpr2-s2-releaseandroid13-qpr2-s12-releaseandroid13-qpr2-s11-releaseandroid13-qpr2-s10-releaseandroid13-qpr2-s1-releaseandroid13-qpr2-releaseandroid13-qpr2-b-s1-releaseandroid13-d4-s2-releaseandroid13-d4-s1-releaseandroid13-d4-release
Original change: https://android-review.googlesource.com/c/platform/build/bazel/+/1980706
Change-Id: Iceb6d053350e286071490ca36c408909b13086ca
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
-rw-r--r-- | rules/apex.bzl | 17 | ||||
-rw-r--r-- | rules/prebuilt_file.bzl | 42 |
2 files changed, 38 insertions, 21 deletions
diff --git a/rules/apex.bzl b/rules/apex.bzl index 70e14a72..e5fc11ef 100644 --- a/rules/apex.bzl +++ b/rules/apex.bzl @@ -52,19 +52,12 @@ def _prepare_apexer_wrapper_inputs(ctx): # Handle prebuilts for dep in ctx.attr.prebuilts: - # TODO: Support more prebuilts than just PrebuiltEtc - prebuilt_etc_info = dep[PrebuiltFileInfo] - - directory = "etc" - if prebuilt_etc_info.sub_dir != None and prebuilt_etc_info.sub_dir != "": - directory = "/".join([directory, prebuilt_etc_info.sub_dir]) - - if prebuilt_etc_info.filename != None and prebuilt_etc_info.filename != "": - filename = prebuilt_etc_info.filename + prebuilt_file_info = dep[PrebuiltFileInfo] + if prebuilt_file_info.filename: + filename = prebuilt_file_info.filename else: filename = dep.label.name - - apex_manifest[(directory, filename)] = prebuilt_etc_info.src + apex_manifest[(prebuilt_file_info.dir, filename)] = prebuilt_file_info.src # Handle binaries for dep in ctx.attr.binaries: @@ -350,7 +343,7 @@ _apex = rule( ], cfg = apex_transition, ), - "prebuilts": attr.label_list(providers = [PrebuiltEtcInfo], cfg = apex_transition), + "prebuilts": attr.label_list(providers = [PrebuiltFileInfo], cfg = apex_transition), "apex_output": attr.output(doc = "signed .apex output"), "capex_output": attr.output(doc = "signed .capex output"), diff --git a/rules/prebuilt_file.bzl b/rules/prebuilt_file.bzl index 210a42fa..12e69824 100644 --- a/rules/prebuilt_file.bzl +++ b/rules/prebuilt_file.bzl @@ -18,27 +18,50 @@ PrebuiltFileInfo = provider( "Info needed for prebuilt_file modules", fields = { "src": "Source file of this prebuilt", - "sub_dir": "Optional subdirectory into which to install", + "dir": "Directory into which to install", "filename": "Optional name for the installed file", "installable": "Whether this is directly installable into one of the partitions", }, ) +_handled_dirs = ["etc", "usr/share"] def _prebuilt_file_rule_impl(ctx): + srcs = ctx.files.src + if len(srcs) != 1: + fail("src for", ctx.label.name, "is expected to be singular, but is of len", len(srcs), ":\n", srcs) + + # Is this an acceptable directory, or a subdir under one? + dir = ctx.attr.dir + acceptable = False + for d in _handled_dirs: + if dir == d or dir.startswith(d + "/"): + acceptable = True + break + if not acceptable: + fail("dir for", ctx.label.name, "is `", dir, "`, but we only handle these:\n", _handled_dirs) + return [ PrebuiltFileInfo( - src = ctx.file.src, - sub_dir = ctx.attr.sub_dir, + src = srcs[0], + dir = dir, filename = ctx.attr.filename, installable = ctx.attr.installable, ), + DefaultInfo( + files = depset(srcs), + ), ] _prebuilt_file = rule( implementation = _prebuilt_file_rule_impl, attrs = { - "src": attr.label(mandatory = True, allow_single_file = True), - "sub_dir": attr.string(), + "src": attr.label( + mandatory = True, + allow_files = True, + # TODO(b/217908237): reenable allow_single_file + # allow_single_file = True, + ), + "dir": attr.string(mandatory = True), "filename": attr.string(), "installable": attr.bool(default = True), }, @@ -47,18 +70,19 @@ _prebuilt_file = rule( def prebuilt_file( name, src, - sub_dir = None, + dir, filename = None, installable = True, - # TODO(b/207489266): Fully support; data is currently simply dropped to prevent breakages. + # TODO(b/207489266): Fully support; + # data is currently dropped to prevent breakages from e.g. prebuilt_etc data = [], **kwargs): - "Bazel macro to correspond with the prebuilt_etc Soong module." + "Bazel macro to correspond with the e.g. prebuilt_etc and prebuilt_usr_share Soong modules." _prebuilt_file( name = name, src = src, - sub_dir = sub_dir, + dir = dir, filename = filename, installable = installable, **kwargs |