Starlarkify `collect_native_deps_dirs` This is an ~exact transliteration of https://github.com/bazelbuild/bazel/blob/4e0cdee77065995b0acdadc0fb75a277880844f2/src/main/java/com/google/devtools/build/lib/rules/java/JavaStarlarkCommon.java#L295-L333 Once this lands in a rules_java release and Bazel uses that version, the native code can be deleted. PiperOrigin-RevId: 992197433 Change-Id: Ifaa2eaab91312c697f04e71273c1a89fe33a1a75
diff --git a/java/common/rules/impl/java_binary_impl.bzl b/java/common/rules/impl/java_binary_impl.bzl index 691d66d..6308ec3 100644 --- a/java/common/rules/impl/java_binary_impl.bzl +++ b/java/common/rules/impl/java_binary_impl.bzl
@@ -22,7 +22,6 @@ load("//java/private:java_common.bzl", "java_common") load( "//java/private:java_common_internal.bzl", - "collect_native_deps_dirs", "get_runtime_classpath_for_archive", ) load("//java/private:java_info.bzl", "JavaCompilationInfo", "JavaInfo", "to_java_binary_info") @@ -166,7 +165,7 @@ native_libs_depsets.append(dep[CcInfo]._legacy_transitive_native_libraries) else: native_libs_depsets.append(dep[CcInfo].transitive_native_libraries()) - native_libs_dirs = collect_native_deps_dirs(depset(transitive = native_libs_depsets)) + native_libs_dirs = _collect_native_deps_dirs(depset(transitive = native_libs_depsets)) if native_libs_dirs: prefix = "${JAVA_RUNFILES}/" + ctx.workspace_name + "/" separator = ";" if helper.is_target_platform_windows(ctx) else ":" @@ -469,6 +468,22 @@ ) return output +def _collect_native_deps_dirs(libraries): + result = {} + for library_to_link in libraries.to_list(): + candidate = None + if library_to_link.interface_library: + candidate = library_to_link.interface_library + elif library_to_link.dynamic_library: + candidate = library_to_link.dynamic_library + if candidate: + ext = "." + candidate.extension + if ext in cc_helper.extensions.INTERFACE_SHARED_LIBRARY: + continue + parent_dir = candidate.short_path[:-(1 + len(candidate.basename))] + result[parent_dir] = None + return result.keys() + def _test_providers(ctx): test_providers = [] if helper.has_target_constraints(ctx, ctx.attr._apple_constraints):
diff --git a/java/private/java_common_internal.bzl b/java/private/java_common_internal.bzl index 30d9533..4c5b603 100644 --- a/java/private/java_common_internal.bzl +++ b/java/private/java_common_internal.bzl
@@ -507,17 +507,6 @@ """ return get_internal_java_common().target_kind(target) -def collect_native_deps_dirs(libraries): - """Collect the set of root-relative paths containing native libraries - - Args: - libraries: (depset[LibraryToLink]) set of native libraries - - Returns: - ([String]) A set of root-relative paths as a list - """ - return get_internal_java_common().collect_native_deps_dirs(libraries) - def get_runtime_classpath_for_archive(jars, excluded_jars): """Filters a classpath to remove certain entries