xref: /aosp_15_r20/external/googletest/fake_fuchsia_sdk.bzl (revision 481dde660366d6f317d242b6974ef1b20adb843c)
1*481dde66SAndroid Build Coastguard Worker"""Provides a fake @fuchsia_sdk implementation that's used when the real one isn't available.
2*481dde66SAndroid Build Coastguard Worker
3*481dde66SAndroid Build Coastguard WorkerThis is needed since bazel queries on targets that depend on //:gtest (eg:
4*481dde66SAndroid Build Coastguard Worker`bazel query "deps(set(//googletest/test:gtest_all_test))"`) will fail if @fuchsia_sdk is not
5*481dde66SAndroid Build Coastguard Workerdefined when bazel is evaluating the transitive closure of the query target.
6*481dde66SAndroid Build Coastguard Worker
7*481dde66SAndroid Build Coastguard WorkerSee https://github.com/google/googletest/issues/4472.
8*481dde66SAndroid Build Coastguard Worker"""
9*481dde66SAndroid Build Coastguard Worker
10*481dde66SAndroid Build Coastguard Workerdef _fake_fuchsia_sdk_impl(repo_ctx):
11*481dde66SAndroid Build Coastguard Worker    for stub_target in repo_ctx.attr._stub_build_targets:
12*481dde66SAndroid Build Coastguard Worker        stub_package = stub_target
13*481dde66SAndroid Build Coastguard Worker        stub_target_name = stub_target.split("/")[-1]
14*481dde66SAndroid Build Coastguard Worker        repo_ctx.file("%s/BUILD.bazel" % stub_package, """
15*481dde66SAndroid Build Coastguard Workerfilegroup(
16*481dde66SAndroid Build Coastguard Worker    name = "%s",
17*481dde66SAndroid Build Coastguard Worker)
18*481dde66SAndroid Build Coastguard Worker""" % stub_target_name)
19*481dde66SAndroid Build Coastguard Worker
20*481dde66SAndroid Build Coastguard Workerfake_fuchsia_sdk = repository_rule(
21*481dde66SAndroid Build Coastguard Worker    doc = "Used to create a fake @fuchsia_sdk repository with stub build targets.",
22*481dde66SAndroid Build Coastguard Worker    implementation = _fake_fuchsia_sdk_impl,
23*481dde66SAndroid Build Coastguard Worker    attrs = {
24*481dde66SAndroid Build Coastguard Worker        "_stub_build_targets": attr.string_list(
25*481dde66SAndroid Build Coastguard Worker            doc = "The stub build targets to initialize.",
26*481dde66SAndroid Build Coastguard Worker            default = [
27*481dde66SAndroid Build Coastguard Worker                "pkg/fdio",
28*481dde66SAndroid Build Coastguard Worker                "pkg/syslog",
29*481dde66SAndroid Build Coastguard Worker                "pkg/zx",
30*481dde66SAndroid Build Coastguard Worker            ],
31*481dde66SAndroid Build Coastguard Worker        ),
32*481dde66SAndroid Build Coastguard Worker    },
33*481dde66SAndroid Build Coastguard Worker)
34