blob: 576c0cf8ebc4986bc39e395440d306634392fba3 [file] [log] [blame]
# Copyright 2018 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.
# Generate a group of packages
#
# Parameters
# deps (required)
# List of packages or package_groups to depend on.
#
# testonly (optional)
# visibilty (optional)
template("package_group") {
pkg_target_name = target_name
response_files = [
"system",
"blob",
"pkgsvr_index",
"amber_index",
]
intermediate_targets = []
forward_variables_from(invoker,
[
"testonly",
"visibility",
])
foreach(rsp, response_files) {
rsp_name = "${pkg_target_name}.${rsp}.rsp"
action(rsp_name) {
visibility = [
":$pkg_target_name",
"//build/images:$rsp",
"//build/images:$rsp.manifest",
"//build/images:update_packages.manifest",
]
script = "//build/cat.sh"
output_name = "${target_out_dir}/${rsp_name}"
outputs = [
output_name,
]
args = [ rebase_path(output_name) ]
inputs = []
deps = []
foreach(pkg_label, invoker.deps) {
pkg_target_name = get_label_info(pkg_label, "name")
pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
pkg_rspfile = "$pkg_target_out_dir/${pkg_target_name}.${rsp}.rsp"
args += [ rebase_path(pkg_rspfile) ]
inputs += [ pkg_rspfile ]
if (rsp == "system") {
deps += [ pkg_label ]
} else {
deps += [ get_label_info(pkg_label, "dir") +
":${pkg_target_name}.${rsp}.rsp" ]
}
}
}
intermediate_targets += [ ":${rsp_name}" ]
}
manifest_target_name = pkg_target_name + ".manifest"
action(manifest_target_name) {
visibility = [
":$pkg_target_name",
"//build/images:ids.txt",
]
script = "//build/cat.sh"
output_name = "${target_out_dir}/${manifest_target_name}.ids.txt"
args = [ rebase_path(output_name) ]
inputs = []
deps = []
foreach(pkg_label, invoker.deps) {
pkg_target_name = get_label_info(pkg_label, "name")
pkg_target_out_dir = get_label_info(pkg_label, "target_out_dir")
pkg_ids = "$pkg_target_out_dir/${pkg_target_name}.manifest.ids.txt"
args += [ rebase_path(pkg_ids) ]
inputs += [ pkg_ids ]
deps +=
[ get_label_info(pkg_label, "dir") + ":${pkg_target_name}.manifest" ]
}
outputs = [
output_name,
]
}
intermediate_targets += [ ":${manifest_target_name}" ]
group(pkg_target_name) {
public_deps = intermediate_targets
}
}