blob: eba26ad02a90fd4e29ef5bc52c69981f06c09dca [file] [log] [blame]
# Copyright 2016 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/compiled_action.gni")
# Generates breakpad symbol data for unstripped binaries.
#
# This symbol data is consumed by infrastructure tools and uploaded to Crash
# servers to enable crash reporting. These files are uniquely important for
# release builds and this step may take a few minutes to complete, so it is
# not recommended that this be included in the default build.
#
# We also include build-ids from archives downloaded from CIPD; these
# archives are unpacked into a single directory.
prebuilt_build_ids = "$target_gen_dir/prebuilt_build_ids"
action("unpack_build_id_archives") {
testonly = true
script = "unpack_build_id_archives.sh"
# We list the jiri snapshot as input to force ninja to run the action
# if the snapshot has changed, which is what people want as we always
# want to unpack the latest build-id archives.
#
# Ideally, we would list explicitly all the archives downloaded from CIPD,
# but those aren't available from jiri so today, we glob `prebuilt_build_ids`
# inside `script` so the best approximation is a jiri snapshot change.
inputs = [
"//.jiri_root/update_history/latest",
]
# We output a text list of the build-id archives, as actions
# require outputs, though it is not needed.
_build_id_manifest = "$target_gen_dir/prebuilt-build-id-archives.txt"
args = [
rebase_path("//prebuilt/build_ids/$target_cpu"),
rebase_path(prebuilt_build_ids),
rebase_path(_build_id_manifest),
]
outputs = [
_build_id_manifest,
]
}
prebuilt_ids_txt = "$target_gen_dir/prebuilt_ids.txt"
action("prebuilt_ids.txt") {
testonly = true
script = "//scripts/build_id_conv.py"
args = [
"--output-format",
"ids.txt",
rebase_path(prebuilt_build_ids),
rebase_path(prebuilt_ids_txt),
]
outputs = [
prebuilt_ids_txt,
]
deps = [
":unpack_build_id_archives",
]
}
extended_ids_txt = "$root_build_dir/extended_ids.txt"
action("concatenate_ids_txts") {
testonly = true
script = "/bin/sh"
sources = [
"$root_build_dir/ids.txt",
prebuilt_ids_txt,
]
_sources = rebase_path(sources)
_extended = rebase_path(extended_ids_txt)
args = [
"-c",
"cat ${_sources[0]} ${_sources[1]} > $_extended",
]
outputs = [
extended_ids_txt,
]
deps = [
":prebuilt_ids.txt",
"//build/images:ids.txt",
]
}
action("breakpad_symbols") {
testonly = true
script = "$host_out_dir/dump_breakpad_symbols"
deps = [
":concatenate_ids_txts",
"//tools/debug/dump_breakpad_symbols($host_toolchain)",
]
inputs = [
"//prebuilt/third_party/breakpad/${host_platform}/dump_syms/dump_syms",
]
sources = [
extended_ids_txt,
]
# This action generates a single xxx.sym file for each binary in the ids file
# and produces an archived output of them all.
outputs = [
"$root_out_dir/breakpad_symbols/breakpad_symbols.tar.gz",
]
depfile = "${outputs[0]}.d"
args = [
"-out-dir",
rebase_path("$root_out_dir/breakpad_symbols"),
"-dump-syms-path",
rebase_path(
"//prebuilt/third_party/breakpad/${host_platform}/dump_syms/dump_syms"),
"-depfile",
rebase_path(depfile, root_build_dir),
"-tar-file",
rebase_path(outputs[0], root_build_dir),
rebase_path(sources[0], root_build_dir),
]
}
# Generates an archive of package metadata.
amber_files = rebase_path("$root_build_dir/amber-files")
pm_tool = rebase_path("$host_out_dir/pm")
pkg_archive_contents = [
"amber-files/repository=$amber_files/repository",
# TODO(IN-915): this should never contain the root key. In the future, this
# should contain no keys, once infra is managing key material itself.
# These keys are consumed by the infra train promote scripts.
"amber-files/keys=$amber_files/keys",
"pm=$pm_tool",
]
pkg_archive_manifest = "$target_gen_dir/package_archive_manifest"
write_file(pkg_archive_manifest, pkg_archive_contents)
# NOTE: This is consumed by the system OTA tests. Please check in with the
# software delivery team if you need to change this.
pkg_archive = "$root_build_dir/packages.tar.gz"
compiled_action("package_archive") {
testonly = true
tool = "//build/tools/tar_maker"
inputs = [
pkg_archive_manifest,
]
outputs = [
pkg_archive,
]
args = [
"-manifest",
rebase_path(pkg_archive_manifest),
"-output",
rebase_path(pkg_archive),
]
deps = [
"//build/images:updates",
]
}