| # 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__", | |
| ], | |
| ) |