blob: 6654280990878e84ac611567e515dc86c8aa9654 [file] [log] [blame]
# Copyright 2024 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import("//build/components/fuchsia_package_archive.gni")
# A variant of fuchsia_package_archive also exposes itself in the
# `exported_package_archives` build api module.
#
# Parameters
#
# package (required)
# A fuchsia_package() target defined earlier in the same file.
# Type: label
#
# api_level (optional)
# The minimum required API level for the components in this package.
# Defaults to -1, denoting an unspecified API level.
# Type: int
#
# testonly
# visibility
template("exported_fuchsia_package_archive") {
if (current_toolchain == default_toolchain) {
assert(defined(invoker.package), "package is required")
_package_label = invoker.package
_api_level = -1
if (defined(invoker.api_level)) {
api_level = invoker.api_level
}
_archive_label = ":${target_name}_archive"
fuchsia_package_archive("${target_name}_archive") {
forward_variables_from(invoker, "*")
}
# LINT.IfChange
_input_far = get_label_info(_archive_label, "target_out_dir") + "/" +
get_label_info(_package_label, "name") + ".far"
# LINT.ThenChange(//src/sys/pkg/bin/package-tool/package-tool.gni)
# LINT.IfChange
_input_package_manifest =
get_label_info(_package_label, "target_out_dir") + "/" +
get_label_info(_package_label, "name") + "/package_manifest.json"
# LINT.ThenChange(//build/components/fuchsia_package.gni)
_output_metadata = "$target_out_dir/${target_name}_metadata.json"
action(target_name) {
forward_variables_from(invoker, "*", [ "package" ])
metadata = {
exported_package_archives =
[ rebase_path(_output_metadata, root_build_dir) ]
}
script = "//build/packages/generate_package_archive_metadata.py"
inputs = [
_input_far,
_input_package_manifest,
]
outputs = [ _output_metadata ]
args = [
"--far",
rebase_path(_input_far, root_build_dir),
"--package-manifest",
rebase_path(_input_package_manifest, root_build_dir),
"--cpu",
target_cpu,
"--api-level",
"$_api_level",
"--out",
rebase_path(_output_metadata, root_build_dir),
]
deps = [
_archive_label,
_package_label,
]
}
} else {
group(target_name) {
public_deps = [ ":${target_name}($default_toolchain)" ]
}
}
}