disable remote
diff --git a/lib/tests/tar/BUILD.bazel b/lib/tests/tar/BUILD.bazel
index 0be7390..a0da599 100644
--- a/lib/tests/tar/BUILD.bazel
+++ b/lib/tests/tar/BUILD.bazel
@@ -165,6 +165,16 @@
tar(
name = "tar_runfiles",
srcs = [":cat_src_file"],
+ tags = [
+ # bsdtar does an optimization where it canonicalizes files in the archive with same dev/inode
+ # by hardlinking them to make the archive smaller. This is an unhermetic behavior because
+ # bazel uses different sandboxing mechanisms depending on the platform and they don't suffer
+ # from this problem.
+ # However, on some RBE implementations like buildbuddy where everything is a hardlink (assuming)
+ # this doesn't work as it allows bsdtar to optimize archive by canonicalizing entries.
+ # See: https://github.com/aspect-build/bazel-lib/issues/620
+ "no-remote-exec",
+ ],
)
genrule(
diff --git a/lib/tests/tar/asserts.bzl b/lib/tests/tar/asserts.bzl
index a3ce57e..8dd944f 100644
--- a/lib/tests/tar/asserts.bzl
+++ b/lib/tests/tar/asserts.bzl
@@ -4,7 +4,7 @@
load("@bazel_skylib//rules:write_file.bzl", "write_file")
# buildifier: disable=function-docstring
-def assert_tar_listing(name, actual, expected):
+def assert_tar_listing(name, actual, expected, tags = []):
actual_listing = "_{}_listing".format(name)
expected_listing = "_{}_expected".format(name)
@@ -14,12 +14,14 @@
outs = ["_{}.listing".format(name)],
cmd = "$(BSDTAR_BIN) -tvf $(execpath {}) >$@".format(actual),
toolchains = ["@bsd_tar_toolchains//:resolved_toolchain"],
+ tags = tags,
)
write_file(
name = expected_listing,
out = "_{}.expected".format(name),
content = expected + [""],
+ tags = tags,
)
diff_test(
@@ -27,4 +29,5 @@
file1 = actual_listing,
file2 = expected_listing,
timeout = "short",
+ tags = tags,
)