blob: ec9c4eb3f91b6a8417fa0775901bdb04259824e6 [file] [log] [blame]
# Copyright 2021 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/host.gni")
import("//build/rust/rustc_binary.gni")
import("//build/zircon/tools.gni")
import("//src/developer/ffx/build/ffx_plugin.gni")
import("//src/developer/ffx/build/ffx_tool.gni")
assert(is_host)
group("tests") {
testonly = true
deps = [ ":ffx_assembly_test" ]
}
ffx_plugin("ffx_assembly") {
version = "0.1.0"
edition = "2021"
with_unit_tests = true
args_with_unit_tests = true
args_sources = [ "src/args.rs" ]
sources = [
"src/base_package.rs",
"src/blobfs.rs",
"src/compiled_package.rs",
"src/extra_hash_descriptor.rs",
"src/fvm.rs",
"src/fxfs.rs",
"src/lib.rs",
"src/operations.rs",
"src/operations/board.rs",
"src/operations/create_system.rs",
"src/operations/create_update.rs",
"src/operations/product.rs",
"src/operations/product/assembly_builder.rs",
"src/operations/size_check.rs",
"src/operations/size_check/breakdown.rs",
"src/operations/size_check/common.rs",
"src/operations/size_check/diff.rs",
"src/operations/size_check/package.rs",
"src/operations/size_check/product.rs",
"src/operations/size_check/visualization.rs",
"src/subpackage_blobs_package.rs",
"src/vbmeta.rs",
"src/vfs.rs",
"src/zbi.rs",
]
inputs = [
"src/operations/size_check/index.html",
"src/operations/size_check/D3BlobTreeMap.js",
"//scripts/third_party/d3_v3/d3.js",
"//scripts/third_party/d3_v3/LICENSE",
]
args_deps = [
"//src/lib/assembly/images_config",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:camino",
]
deps = [
"//src/developer/ffx/lib/errors:lib",
"//src/developer/ffx/lib/fho:lib",
"//src/developer/ffx/lib/pbms:lib",
"//src/lib/assembly/assembly_manifest",
"//src/lib/assembly/base_package",
"//src/lib/assembly/blob_size",
"//src/lib/assembly/blobfs",
"//src/lib/assembly/components",
"//src/lib/assembly/config_capabilities",
"//src/lib/assembly/config_data",
"//src/lib/assembly/config_schema",
"//src/lib/assembly/domain_config",
"//src/lib/assembly/driver_manifest",
"//src/lib/assembly/file_relative_path",
"//src/lib/assembly/fvm",
"//src/lib/assembly/fxfs",
"//src/lib/assembly/images_config",
"//src/lib/assembly/named_file_map",
"//src/lib/assembly/package_copy",
"//src/lib/assembly/package_list",
"//src/lib/assembly/package_utils",
"//src/lib/assembly/partitions_config",
"//src/lib/assembly/platform_configuration",
"//src/lib/assembly/shell_commands",
"//src/lib/assembly/structured_config",
"//src/lib/assembly/subpackage_blobs_package",
"//src/lib/assembly/tool",
"//src/lib/assembly/update_package",
"//src/lib/assembly/update_packages_manifest",
"//src/lib/assembly/util",
"//src/lib/assembly/validate_product",
"//src/lib/assembly/vbmeta",
"//src/lib/assembly/zbi",
"//src/lib/fuchsia-url",
"//src/lib/gcs",
"//src/lib/structured_ui",
"//src/lib/utf8_path",
"//src/sys/pkg/lib/epoch",
"//src/sys/pkg/lib/fuchsia-hash",
"//src/sys/pkg/lib/fuchsia-merkle",
"//src/sys/pkg/lib/fuchsia-pkg",
"//third_party/rust_crates:anyhow",
"//third_party/rust_crates:async-trait",
"//third_party/rust_crates:camino",
"//third_party/rust_crates:hex",
"//third_party/rust_crates:itertools",
"//third_party/rust_crates:serde",
"//third_party/rust_crates:serde_json",
"//third_party/rust_crates:textwrap",
"//third_party/rust_crates:tracing",
"//third_party/rust_crates:url",
]
test_deps = [
"//src/lib/assembly/test_keys",
"//src/lib/assembly/test_util",
"//src/lib/fuchsia-async",
"//src/storage/blobfs/tools:blobfs",
"//src/sys/pkg/lib/far/rust:fuchsia-archive",
"//third_party/rust_crates:assert_matches",
"//third_party/rust_crates:camino",
"//third_party/rust_crates:pretty_assertions",
"//third_party/rust_crates:regex",
"//third_party/rust_crates:tempfile",
]
configs = [ "//build/config/rust/lints:clippy_warn_all" ]
}
ffx_tool("ffx_assembly_tool") {
edition = "2021"
output_name = "ffx-assembly"
deps = [
":ffx_assembly",
"//src/developer/ffx/lib/fho:lib",
"//src/lib/fuchsia-async",
]
sources = [ "src/main.rs" ]
sdk_target_name = "sdk"
sdk_category = "partner"
# We avoid instrumenting assembly for certain builds as this negatively impacts performance.
exclude_toolchain_tags = [
"asan",
"coverage",
"profile",
]
}
group("assembly") {
public_deps = [
":ffx_assembly_tool",
":ffx_assembly_tool_host_tool",
]
}
group("bin") {
public_deps = [ ":ffx_assembly_tool_versioned" ]
}