| # Copyright 2020 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/assembly/assembled_system.gni") |
| import("//build/images/args.gni") |
| import("//build/images/custom_signing.gni") |
| import("//build/images/vboot/vboot.gni") |
| |
| assert(current_toolchain == target_toolchain) |
| |
| bringup_base = { |
| testonly = true |
| output_dir = root_build_dir |
| generate_fvm = false |
| |
| include_component_id_index = true |
| include_shell_commands = false |
| include_config_data = false |
| |
| cmdline_deps = [ "//build/input:bootfs" ] |
| |
| base_packages = [] |
| base_driver_packages = [ |
| "//:developer_base_driver_packages", |
| "//:legacy_base_driver_packages", |
| ] |
| |
| bootfs_labels = base_driver_packages + [ |
| "//build/input:bootfs", |
| "//build/input/board:system_image_deps", |
| "//:developer_base_packages", |
| "//:developer_cache_packages", |
| "//:developer_universe_packages", |
| ] |
| |
| _ignored = { |
| import("//build/dev.gni") |
| import("//build/product.gni") |
| all_empty = true |
| if (dev_system_image_deps != []) { |
| print("dev_system_image_deps not empty: ${dev_system_image_deps}") |
| all_empty = false |
| } |
| if (product_system_image_deps != []) { |
| print("product_system_image_deps not empty: ${product_system_image_deps}") |
| all_empty = false |
| } |
| assert(all_empty) |
| } |
| } |
| |
| # This target generates a (potentially signed) bringup ZBI and a corresponding |
| # Vbmeta. Unfortunately, the resulting ZBI cannot be passed directly into a |
| # fastboot boot invocation, as this command expects the image it is passed to |
| # be a concatenation of the ZBI and Vbmeta. The bringup_fastboot target below |
| # is responsible for generating that image. |
| assembled_system("bringup_non_fastboot") { |
| forward_variables_from(bringup_base, "*") |
| image_name = "bringup" |
| if (custom_signing_script != "") { |
| zbi_signing_script = custom_signing_script |
| zbi_signing_script_deps = [ "//build/images/custom_signing:deps" ] |
| } else if (use_vboot) { |
| zbi_signing_script = vboot_action.script |
| zbi_signing_args = vboot_action.args |
| zbi_signing_script_deps = vboot_action.deps |
| inputs = vboot_action.inputs |
| } |
| |
| metadata = { |
| images = [ |
| { |
| label = get_label_info(":$target_name", "label_with_toolchain") |
| name = "zircon-a" |
| path = "bringup.zbi" |
| type = "zbi" |
| |
| archive = true |
| bootserver_pave = [] |
| |
| # Bringup builds always mexec from the paver |
| bootserver_pave += [ "--boot" ] |
| |
| if (custom_signing_script == "" && !use_vboot) { |
| bootserver_pave += [ |
| "--zircona", |
| # TODO(fxbug.dev/32475): `dm reboot-recovery` boots from zircon-b instead of |
| # zircon-r, so for now zedboot is being paved to this slot. |
| # "--zirconb", |
| ] |
| } |
| }, |
| ] |
| |
| if (use_vbmeta) { |
| images += [ |
| { |
| label = get_label_info(":$target_name", "label_with_toolchain") |
| name = "zircon-a" |
| path = "bringup.vbmeta" |
| type = "vbmeta" |
| |
| archive = true |
| bootserver_pave = [ "--vbmetaa" ] |
| }, |
| ] |
| } |
| |
| image_paths = [ |
| "IMAGE_ZIRCONA_ZBI=bringup.zbi", |
| |
| # TODO(mcgrathr): The complete ZBI can be used with a separate |
| # kernel too, the kernel image in it will just be ignored. So |
| # just use the primary ZBI for this until all uses are |
| # converted to using the ZBI alone. Then remove this as |
| # IMAGE_BOOT_RAM variable should no longer be in use. |
| "IMAGE_BOOT_RAM=bringup.zbi", |
| ] |
| |
| images += [ |
| { |
| archive = true |
| bootserver_netboot = [ "--boot" ] |
| name = "fuchsia" |
| path = "bringup.zbi" |
| type = "zbi" |
| }, |
| ] |
| image_paths += [ |
| "IMAGE_NETBOOT_RAM=bringup.zbi", |
| "IMAGE_NETBOOT_ZBI=bringup.zbi", |
| ] |
| } |
| } |
| |
| # Builds a bringup image that we can RAM boot with fastboot boot. |
| assembled_system("bringup_fastboot") { |
| forward_variables_from(bringup_base, "*") |
| zbi_signing_script = "concat_zbi_and_vbmeta.sh" |
| zbi_signing_args = [] |
| if (use_vbmeta || use_vboot) { |
| assembly_out_dir = rebase_path(target_out_dir, root_build_dir) |
| zbi_signing_args = [ |
| "-v", |
| "${assembly_out_dir}/${target_name}/bringup_fastboot.vbmeta", |
| ] |
| } |
| if (custom_signing_script != "") { |
| rebased_script = rebase_path(custom_signing_script, root_build_dir) |
| zbi_signing_args += [ "-s ${rebased_script}" ] |
| zbi_signing_script_deps = [ "//build/images/custom_signing:deps" ] |
| } else if (use_vboot) { |
| rebased_script = rebase_path(vboot_action.script, root_build_dir) |
| zbi_signing_args += [ "-s ${rebased_script}" ] + vboot_action.args |
| zbi_signing_script_deps = vboot_action.deps |
| inputs = vboot_action.inputs |
| } |
| |
| metadata = { |
| images = [ |
| { |
| fastboot_boot = [ "boot" ] |
| name = "fuchsia" |
| path = "bringup_fastboot.zbi.signed" |
| type = "zbi_fastboot" |
| }, |
| ] |
| } |
| } |
| |
| group("bringup") { |
| testonly = true |
| deps = [ ":bringup_fastboot" ] |
| public_deps = [ ":bringup_non_fastboot" ] |
| } |