Fix regression in LtoArtifacts when using action templates
The code now matches previous native implementation. declare_shared_directory takes absolute path as an input (declare_directory takes package-relative path <- that was the first problem).
Code now also respects specific configuration that can be encoded in actions object. Same way as declare_shared_artifact. This is needed for Android and Apple builds, that are using split configurations to create fat binaries.
PiperOrigin-RevId: 817128081
Change-Id: I3bd1e34feec94e792d233fdc2de96894c12edd27
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcStarlarkInternal.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcStarlarkInternal.java
index 8befa91..387eca1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcStarlarkInternal.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcStarlarkInternal.java
@@ -415,6 +415,14 @@
String path, Object artifactRoot, StarlarkThread thread) {
return construction.create(PathFragment.create(path));
}
+
+ @StarlarkMethod(
+ name = "declare_shareable_directory",
+ parameters = {@Param(name = "path")},
+ documented = false)
+ public FileApi createShareableDirectory(String path) {
+ return construction.createTreeArtifact(PathFragment.create(path));
+ }
}
@StarlarkMethod(
diff --git a/src/main/starlark/builtins_bzl/common/cc/link/lto_backends.bzl b/src/main/starlark/builtins_bzl/common/cc/link/lto_backends.bzl
index 462b710..ccaac00 100644
--- a/src/main/starlark/builtins_bzl/common/cc/link/lto_backends.bzl
+++ b/src/main/starlark/builtins_bzl/common/cc/link/lto_backends.bzl
@@ -284,9 +284,10 @@
imports, index, dwo_file = None, None, None
if bitcode_file.is_directory:
- object_file = actions.declare_directory(obj)
+ # declare_shareable_directory is needed to create TreeArtifact in a different configuration (for Android split configurations)
+ object_file = actions.declare_shareable_directory(obj)
if not create_shared_non_lto:
- imports = actions.declare_directory(index_obj)
+ imports = actions.declare_shareable_directory(index_obj)
index = imports
# No support for dwo files for tree artifacts at the moment. This should not throw an