blob: b4fbf4edceb40f7fe2bb2034de68783640bf51ae [file] [log] [blame]
load("@//tools/base/bazel:merge_archives.bzl", "merge_jars")
def setup_bin_loop_repo():
native.new_local_repository(
name = "baseline",
path = "bazel-bin",
build_file_content = """
load("@cov//:baseline.bzl", "construct_baseline_processing_graph")
construct_baseline_processing_graph()
""",
)
# correctness requires that *.coverage.baseline.srcs be deleted
# to ensure that any deleted targets do not hang around and interfere
# studio_coverage.sh does this via a `bazel clean`
# report.sh does this via an explicit `find` and `rm`
def construct_baseline_processing_graph():
srcs = native.glob(["**/*.coverage.baseline.srcs"])
# turn `package/target.coverage.baseline.srcs`
# into `package:target`
pts = [":".join(s.rsplit("/", 1)).replace(".coverage.baseline.srcs", "") for s in srcs]
native.genrule(
name = "merged-baseline-srcs",
# turn `package:target`
# into `@//package:target_coverage.baseline.srcs.filtered`
srcs = ["@//{}_coverage.baseline.srcs.filtered".format(pt) for pt in pts],
outs = ["merged-baseline-srcs.txt"],
cmd = "cat $(SRCS) | sort | uniq >$@",
visibility = ["@cov//:__pkg__", "@results//:__pkg__"],
)
merge_jars(
name = "merged-baseline-jars",
# turn `package:target`
# into `@//package:target_coverage.baseline.jar`
jars = ["@//{}_coverage.baseline.jar".format(pt) for pt in pts],
out = "merged-baseline-jars.jar",
# use this for now b/c of duplicate META-INF/plugin.xml
# theoretically allows for a duplicate class problem in Jacoco processing
# however, as these are all directly from non-transitive source class jars
# it shouldn't be a problem as we don't have overlapping source targets
allow_duplicates = True,
visibility = ["@cov//:__pkg__", "@results//:__pkg__"],
)