| # 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 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 = "//buildtools/${host_platform}/dump_breakpad_symbols" |
| |
| deps = [ |
| ":concatenate_ids_txts", |
| ] |
| |
| inputs = [ |
| "//buildtools/${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("//buildtools/${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") |
| host_out_dir = get_label_info("//anything($host_toolchain)", "root_out_dir") |
| 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", |
| ] |
| } |