Skip to content

Commit 054d6a7

Browse files
committed
Filter abi jar from jdeps classpath
1 parent 43be561 commit 054d6a7

File tree

3 files changed

+23
-15
lines changed

3 files changed

+23
-15
lines changed

kotlin/internal/jvm/associates.bzl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,11 @@ def _get_associates(ctx, toolchains, associates):
9595
dep_infos = java_infos,
9696
)
9797

98+
def _filter_abi_associate_jar(transitive, associates):
99+
compile_depset_list = depset(transitive = transitive).to_list()
100+
return [jar for jar in compile_depset_list if not _sets.contains(associates.abi_jar_set, jar)]
101+
98102
associate_utils = struct(
99103
get_associates = _get_associates,
104+
filter_abi_associate_jar = _filter_abi_associate_jar,
100105
)

kotlin/internal/jvm/compile.bzl

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,6 @@ def _fail_if_invalid_associate_deps(associate_deps, deps):
114114
",\n ".join([" %s" % x for x in list(diff)]),
115115
)
116116

117-
def _java_infos_to_compile_jars(java_infos):
118-
return depset(transitive = [j.compile_jars for j in java_infos])
119-
120117
def _exported_plugins(deps):
121118
"""Encapsulates compiler dependency metadata."""
122119
plugins = []
@@ -469,7 +466,7 @@ def _run_kt_builder_action(
469466
# Unwrap kotlinc_options/javac_options options or default to the ones being provided by the toolchain
470467
args.add_all("--kotlin_passthrough_flags", kotlinc_options_to_flags(kotlinc_options))
471468
args.add_all("--javacopts", javac_options_to_flags(javac_options))
472-
args.add_all("--direct_dependencies", _java_infos_to_compile_jars(compile_deps.deps))
469+
args.add_all("--direct_dependencies", compile_deps.direct_dep_jars)
473470
args.add("--strict_kotlin_deps", toolchains.kt.experimental_strict_kotlin_deps)
474471
args.add_all("--classpath", compile_deps.compile_jars)
475472
args.add("--reduced_classpath_mode", toolchains.kt.experimental_reduce_classpath_mode)

kotlin/internal/jvm/jvm_deps.bzl

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ load(
1616
"JavaInfo",
1717
)
1818
load("//kotlin/internal/jvm:associates.bzl", _associate_utils = "associate_utils")
19-
load("//kotlin/internal/utils:sets.bzl", _sets = "sets")
2019

2120
def _java_info(target):
2221
return target[JavaInfo] if JavaInfo in target else None
@@ -35,24 +34,30 @@ def _jvm_deps(ctx, toolchains, associate_deps, deps = [], deps_java_infos = [],
3534
[_java_info(d) for d in deps]
3635
)
3736

37+
direct_dep_jars = [associates.jars] + [
38+
d.compile_jars
39+
for d in dep_infos
40+
]
41+
3842
# Reduced classpath, exclude transitive deps from compilation
3943
if (toolchains.kt.experimental_prune_transitive_deps and
4044
not "kt_experimental_prune_transitive_deps_incompatible" in ctx.attr.tags):
41-
transitive = [
42-
d.compile_jars
43-
for d in dep_infos
44-
]
45+
transitive = direct_dep_jars
4546
else:
46-
transitive = [
47-
d.compile_jars
48-
for d in dep_infos
49-
] + [
47+
transitive = direct_dep_jars + [
5048
d.transitive_compile_time_jars
5149
for d in dep_infos
5250
]
5351

54-
compile_depset_list = depset(transitive = transitive + [associates.jars]).to_list()
55-
compile_depset_list_filtered = [jar for jar in compile_depset_list if not _sets.contains(associates.abi_jar_set, jar)]
52+
compile_depset_list_filtered = _associate_utils.filter_abi_associate_jar(transitive, associates)
53+
54+
if (toolchains.kt.experimental_prune_transitive_deps and
55+
not "kt_experimental_prune_transitive_deps_incompatible" in ctx.attr.tags):
56+
# then compile_depset_list_filtered already contains just the compile jars
57+
direct_depset_list_filtered = compile_depset_list_filtered
58+
else:
59+
# otherwise we need to create a list of compile jars with the associates abi jar replaced
60+
direct_depset_list_filtered = _associate_utils.filter_abi_associate_jar(direct_dep_jars, associates)
5661

5762
return struct(
5863
module_name = associates.module_name,
@@ -61,6 +66,7 @@ def _jvm_deps(ctx, toolchains, associate_deps, deps = [], deps_java_infos = [],
6166
associate_jars = associates.jars,
6267
compile_jars = depset(direct = compile_depset_list_filtered),
6368
runtime_deps = [_java_info(d) for d in runtime_deps],
69+
direct_dep_jars = direct_depset_list_filtered,
6470
)
6571

6672
jvm_deps_utils = struct(

0 commit comments

Comments
 (0)