blob: ffe98eea3d4a8c83ab4f0cefe908f458e9db6ab1 [file]
# Copyright 2026 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.
load(
"@fuchsia_rules_common//packages:resources.bzl",
"fuchsia_package_resource_group",
"resource",
)
load(
"//build/bazel/rules/components:fx_component.bzl",
"fx_component_manifest",
)
load("//build/bazel/rules/rust:rustc_library.bzl", "rustc_library")
load("//build/bazel/rules/rust:rustc_test.bzl", "rustc_test")
package(default_applicable_licenses = ["//:license"])
rustc_library(
name = "lib",
testonly = True,
srcs = [
"src/lib.rs",
"src/mock_filesystem.rs",
],
edition = "2024",
lint_config = "//build/config/rust/lints:clippy_warn_all",
deps = [
"//sdk/fidl/fuchsia.io:fuchsia.io_rust",
"//sdk/fidl/fuchsia.logger:fuchsia.logger_rust",
"//sdk/fidl/fuchsia.metrics:fuchsia.metrics_rust",
"//sdk/fidl/fuchsia.net.http:fuchsia.net.http_rust",
"//sdk/fidl/fuchsia.net.name:fuchsia.net.name_rust",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//sdk/fidl/fuchsia.pkg.garbagecollector:fuchsia.pkg.garbagecollector_rust",
"//sdk/fidl/fuchsia.pkg.http:fuchsia.pkg.http_rust",
"//sdk/fidl/fuchsia.pkg.internal:fuchsia.pkg.internal_rust",
"//sdk/fidl/fuchsia.pkg.rewrite:fuchsia.pkg.rewrite_rust",
"//sdk/fidl/fuchsia.posix.socket:fuchsia.posix.socket_rust",
"//sdk/fidl/fuchsia.sys2:fuchsia.sys2_rust",
"//sdk/fidl/fuchsia.tracing.provider:fuchsia.tracing.provider_rust",
"//sdk/fidl/fuchsia.update:fuchsia.update_rust",
"//sdk/rust/zx",
"//src/lib/diagnostics/hierarchy/rust:diagnostics-hierarchy",
"//src/lib/diagnostics/reader/rust",
"//src/lib/diagnostics/testing/diagnostics-assertions/rust:diagnostics-assertions",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia-async",
# GN depends on the `fuchsia-component-test` group which bundles
# `realm_builder_server_component`; Bazel depends on the Rust library.
"//src/lib/fuchsia-component-test:fuchsia-component-test-lib", # @bazel2gn:path_overwrite://src/lib/fuchsia-component-test
"//src/lib/fuchsia-fs",
"//src/lib/fuchsia-sync",
"//src/lib/fuchsia-url",
"//src/storage/fxfs/fidl/fuchsia.fxfs:fuchsia.fxfs_rust",
"//src/storage/lib/vfs/rust:vfs",
"//src/sys/lib/cm_rust",
"//src/sys/lib/fidl-fuchsia-pkg-ext",
"//src/sys/lib/fidl-fuchsia-pkg-rewrite-ext",
"//src/sys/pkg/lib/fuchsia-merkle",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//src/sys/pkg/testing/blobfs-ramdisk",
"//src/sys/pkg/testing/mock-metrics",
"//third_party/cobalt/src/lib/client/rust:cobalt-client",
"//third_party/rust_crates/vendor:assert_matches",
"//third_party/rust_crates/vendor:futures",
"//third_party/rust_crates/vendor:http",
"//third_party/rust_crates/vendor:log",
"//third_party/rust_crates/vendor:serde",
"//third_party/rust_crates/vendor:serde_json",
"//third_party/rust_crates/vendor:tempfile",
],
)
# The `*-component` test components, `pkg-resolver-component`, and
# `pkg-resolver-integration-tests` stay in BUILD.gn above the bazel2gn sentinel
# because they depend on GN-only
# `//src/storage/testing/driver_test_realm/meta/client.shard.cml`,
# `//src/storage/testing:storage_driver_test_realm`,
# `//src/storage/fxfs:fxfs_component`,
# `//src/connectivity/network/dns:component`,
# `//src/connectivity/network/netstack3:component-for-tests`, and
# `//src/sys/pkg/bin/pkg-cache:production-component-and-config`.
rustc_test(
name = "dynamic_repositories_disabled",
srcs = ["src/dynamic_repositories_disabled.rs"],
crate_root = "src/dynamic_repositories_disabled.rs",
edition = "2024",
deps = [
":lib",
"//sdk/rust/zx",
"//src/lib/fuchsia",
],
)
rustc_test(
name = "persists_tuf_metadata",
srcs = ["src/persists_tuf_metadata.rs"],
crate_root = "src/persists_tuf_metadata.rs",
edition = "2024",
deps = [
":lib",
"//src/lib/fuchsia",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
],
)
rustc_test(
name = "dynamic_rewrite_disabled",
srcs = ["src/dynamic_rewrite_disabled.rs"],
crate_root = "src/dynamic_rewrite_disabled.rs",
edition = "2024",
deps = [
":lib",
"//sdk/rust/zx",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia",
"//src/sys/lib/fidl-fuchsia-pkg-rewrite-ext",
],
)
rustc_test(
name = "pkg_resolve_inspect",
srcs = ["src/pkg_resolve_inspect.rs"],
crate_root = "src/pkg_resolve_inspect.rs",
edition = "2024",
deps = [
":lib",
"//src/lib/diagnostics/inspect/rust",
"//src/lib/diagnostics/testing/diagnostics-assertions/rust:diagnostics-assertions",
"//src/lib/fuchsia",
"//src/sys/lib/fidl-fuchsia-pkg-ext",
"//src/sys/lib/fidl-fuchsia-pkg-rewrite-ext",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//third_party/rust_crates/vendor:anyhow",
"//third_party/rust_crates/vendor:assert_matches",
"//third_party/rust_crates/vendor:futures",
],
)
rustc_test(
name = "resolve_fails",
srcs = ["src/resolve_fails.rs"],
crate_root = "src/resolve_fails.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//src/lib/fuchsia",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//src/sys/pkg/lib/fuchsia-repo",
"//src/sys/pkg/lib/metrics:cobalt_sw_delivery_registry_rustlib",
"//third_party/rust_crates/vendor:hyper",
],
)
rustc_test(
name = "resolve_propagates_blobfs_failure",
srcs = ["src/resolve_propagates_blobfs_failure.rs"],
crate_root = "src/resolve_propagates_blobfs_failure.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.io:fuchsia.io_rust",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//sdk/rust/zx",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia",
"//src/lib/fuchsia-async",
"//src/storage/fxfs/fidl/fuchsia.fxfs:fuchsia.fxfs_rust",
"//src/storage/lib/vfs/rust:vfs",
"//src/sys/pkg/lib/fuchsia-merkle",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//src/sys/pkg/testing/blobfs-ramdisk",
"//third_party/rust_crates/vendor:assert_matches",
"//third_party/rust_crates/vendor:futures",
],
)
rustc_test(
name = "resolve_recovers_from_http_errors",
srcs = ["src/resolve_recovers_from_http_errors.rs"],
crate_root = "src/resolve_recovers_from_http_errors.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//src/lib/fuchsia",
"//src/sys/pkg/lib/fuchsia-merkle",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//third_party/rust_crates/vendor:assert_matches",
],
)
rustc_test(
name = "resolve_resumes_blob_gets",
srcs = ["src/resolve_resumes_blob_gets.rs"],
crate_root = "src/resolve_resumes_blob_gets.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//src/lib/fuchsia",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//src/sys/pkg/lib/fuchsia-repo",
"//third_party/rust_crates/vendor:futures",
"//third_party/rust_crates/vendor:http",
"//third_party/rust_crates/vendor:hyper",
],
)
rustc_test(
name = "resolve_succeeds_with_broken_minfs",
srcs = ["src/resolve_succeeds_with_broken_minfs.rs"],
crate_root = "src/resolve_succeeds_with_broken_minfs.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.io:fuchsia.io_rust",
"//sdk/rust/zx",
"//src/lib/fdio/rust:fdio",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-fs",
"//src/storage/lib/vfs/rust:vfs",
"//src/sys/lib/fidl-fuchsia-pkg-ext",
"//src/sys/lib/fidl-fuchsia-pkg-rewrite-ext",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//third_party/rust_crates/vendor:futures",
"//third_party/rust_crates/vendor:tempfile",
],
)
rustc_test(
name = "resolve_succeeds",
srcs = ["src/resolve_succeeds.rs"],
crate_root = "src/resolve_succeeds.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.io:fuchsia.io_rust",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//src/lib/diagnostics/testing/diagnostics-assertions/rust:diagnostics-assertions",
"//src/lib/fuchsia",
"//src/lib/fuchsia-async",
"//src/lib/http-uri-ext",
"//src/sys/lib/fidl-fuchsia-pkg-ext",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//src/sys/pkg/testing/blobfs-ramdisk",
"//third_party/rust_crates/vendor:assert_matches",
"//third_party/rust_crates/vendor:futures",
"//third_party/rust_crates/vendor:rand",
],
)
rustc_test(
name = "resolve_with_context",
srcs = ["src/resolve_with_context.rs"],
crate_root = "src/resolve_with_context.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//src/lib/fuchsia",
"//src/sys/lib/fidl-fuchsia-pkg-ext",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//third_party/rust_crates/vendor:assert_matches",
"//third_party/rust_crates/vendor:futures",
],
)
rustc_test(
name = "get_hash",
srcs = ["src/get_hash.rs"],
crate_root = "src/get_hash.rs",
edition = "2024",
deps = [
":lib",
"//sdk/rust/zx",
"//src/lib/fuchsia",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//third_party/rust_crates/vendor:assert_matches",
],
)
rustc_test(
name = "system_cache_fallback",
srcs = ["src/system_cache_fallback.rs"],
crate_root = "src/system_cache_fallback.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//sdk/rust/zx",
"//src/lib/diagnostics/testing/diagnostics-assertions/rust:diagnostics-assertions",
"//src/lib/fidl/rust/fidl",
"//src/lib/fuchsia",
"//src/sys/lib/fidl-fuchsia-pkg-rewrite-ext",
"//src/sys/pkg/lib/fuchsia-hash",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//src/sys/pkg/testing/blobfs-ramdisk",
"//third_party/rust_crates/vendor:assert_matches",
"//third_party/rust_crates/vendor:rand",
],
)
rustc_test(
name = "base_pinning",
srcs = ["src/base_pinning.rs"],
crate_root = "src/base_pinning.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//sdk/rust/zx",
"//src/lib/fuchsia",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//third_party/rust_crates/vendor:assert_matches",
"//third_party/rust_crates/vendor:futures",
],
)
rustc_test(
name = "metrics",
srcs = ["src/metrics.rs"],
crate_root = "src/metrics.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.metrics:fuchsia.metrics_rust",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//src/lib/fuchsia",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//src/sys/pkg/lib/metrics:cobalt_sw_delivery_registry_rustlib",
"//third_party/cobalt/src/lib/client/rust:cobalt-client",
"//third_party/rust_crates/vendor:assert_matches",
"//third_party/rust_crates/vendor:serde_json",
] + select({
# TODO(b/308214783): Re-enable on risc-v when flakes fixed.
"@platforms//cpu:riscv64": [],
"//conditions:default": [
"//third_party/rust_crates/vendor:test-case",
],
}),
)
rustc_test(
name = "eager_updates",
srcs = ["src/eager_updates.rs"],
crate_root = "src/eager_updates.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//src/lib/fuchsia",
"//src/lib/fuchsia-async",
"//src/lib/fuchsia-url",
"//src/sys/lib/fidl-fuchsia-pkg-ext",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//src/sys/pkg/lib/metrics:cobalt_sw_delivery_registry_rustlib",
"//third_party/rust_crates/vendor:assert_matches",
"//third_party/rust_crates/vendor:omaha_client",
"//third_party/rust_crates/vendor:serde_json",
],
)
rustc_test(
name = "ota_downloader",
srcs = ["src/ota_downloader.rs"],
crate_root = "src/ota_downloader.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//src/lib/fuchsia",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
"//third_party/rust_crates/vendor:assert_matches",
"//third_party/rust_crates/vendor:futures",
],
)
rustc_test(
name = "resolve_overwrites_blobs",
srcs = ["src/resolve_overwrites_blobs.rs"],
crate_root = "src/resolve_overwrites_blobs.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.storage.blobfs:fuchsia.storage.blobfs_rust",
"//src/lib/fuchsia",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
],
)
rustc_test(
name = "pkg_authority",
srcs = ["src/pkg_authority.rs"],
crate_root = "src/pkg_authority.rs",
edition = "2024",
deps = [
":lib",
"//sdk/fidl/fuchsia.pkg:fuchsia.pkg_rust",
"//src/lib/fuchsia",
"//src/lib/http-uri-ext",
"//src/sys/lib/fidl-fuchsia-pkg-rewrite-ext",
"//src/sys/pkg/lib/fuchsia-pkg-testing",
],
)
# @bazel2gn:skip
fx_component_manifest(
name = "pkg-resolver-manifest",
component_name = "pkg-resolver",
includes = [
"//sdk/lib/inspect:client.shard.cml",
"//sdk/lib/inspect:offer.shard.cml",
"//sdk/lib/inspect:use.shard.cml",
"//sdk/lib/syslog:client.shard",
"//src/sys/pkg/bin/pkg-resolver:meta/pkg-resolver-common.shard.cml",
],
manifest = "meta/pkg-resolver-for-test.cml",
)
# @bazel2gn:skip
resource(
name = "ca.cert-resource",
src = "//src/sys/pkg/lib/fuchsia-pkg-testing/certs:ca.cert",
dest = "data/ssl/cert.pem",
)
# @bazel2gn:skip
fuchsia_package_resource_group(
name = "empty-repo",
testonly = True,
srcs = [
"//src/sys/pkg/tests/pkg-resolver/template:keys/root.json",
"//src/sys/pkg/tests/pkg-resolver/template:keys/snapshot.json",
"//src/sys/pkg/tests/pkg-resolver/template:keys/targets.json",
"//src/sys/pkg/tests/pkg-resolver/template:keys/timestamp.json",
"//src/sys/pkg/tests/pkg-resolver/template:repository/1.root.json",
"//src/sys/pkg/tests/pkg-resolver/template:repository/1.snapshot.json",
"//src/sys/pkg/tests/pkg-resolver/template:repository/1.targets.json",
"//src/sys/pkg/tests/pkg-resolver/template:repository/root.json",
"//src/sys/pkg/tests/pkg-resolver/template:repository/snapshot.json",
"//src/sys/pkg/tests/pkg-resolver/template:repository/targets.json",
"//src/sys/pkg/tests/pkg-resolver/template:repository/timestamp.json",
],
dest = "empty-repo",
strip_prefix = "template",
visibility = [
"//src/sys/pkg/bin/pkg-resolver:__pkg__",
"//src/sys/pkg/lib/isolated-swd:__pkg__",
"//src/sys/pkg/testing/isolated-ota-env:__pkg__",
"//src/sys/pkg/tests/isolated-ota:__pkg__",
"//src/sys/pkg/tests/pkg-cache:__pkg__",
],
)