@@ -366,7 +366,7 @@ def _run_merge_jdeps_action(kctx, jdeps, outputs):
366366 if not kctx .toolchains .kt .experimental_report_unused_deps == "off" :
367367 # For sandboxing to work, and for this action to be deterministic, the compile jars need to be passed as inputs
368368 inputs = depset (jdeps , transitive = [
369- depset ([], transitive = [dep .transitive_compile_time_jars for dep in kctx .compile_deps . deps ]),
369+ depset ([], transitive = [dep .transitive_compile_time_jars for dep in _java_infos ( kctx .deps ) + kctx . additional_deps ]),
370370 ])
371371
372372 kctx .actions .run (
@@ -422,6 +422,38 @@ def _run_ksp_builder_actions(
422422 mnemonic = "KotlinKsp" ,
423423 )
424424
425+ def _java_infos (target_list ):
426+ return [target [JavaInfo ] for target in target_list if JavaInfo in target ]
427+
428+ # copied from kotlin/internal/jvm/jvm_deps.bzl
429+ def _classpath (kctx ):
430+ dep_infos = (
431+ kctx .additional_deps +
432+ _java_infos (kctx .deps ) +
433+ _java_infos (kctx .associates .deps )
434+ )
435+
436+ # Reduced classpath, exclude transitive deps from compilation
437+ if (kctx .toolchains .kt .experimental_prune_transitive_deps and
438+ not "kt_experimental_prune_transitive_deps_incompatible" in kctx .attr .tags ):
439+ transitive = [
440+ d .compile_jars
441+ for d in dep_infos
442+ ]
443+ else :
444+ transitive = [
445+ d .compile_jars
446+ for d in dep_infos
447+ ] + [
448+ d .transitive_compile_time_jars
449+ for d in dep_infos
450+ ]
451+
452+ compile_depset_list = depset (transitive = transitive + [kctx .associates .jars ]).to_list ()
453+ compile_depset_list_filtered = [jar for jar in compile_depset_list if not _sets .contains (kctx .associates .abi_jar_set , jar )]
454+
455+ return depset (compile_depset_list_filtered )
456+
425457def _run_kt_builder_action (
426458 kctx ,
427459 mnemonic ,
@@ -436,13 +468,15 @@ def _run_kt_builder_action(
436468 if build_kotlin and annotation_processors :
437469 fail ("Error: The `_run_kt_builder_action` should either be called to build or to process annotations~" )
438470
471+ classpath = _classpath (kctx )
472+
439473 args = kctx .actions .args ()
440474 args .set_param_file_format ("multiline" )
441475 args .use_param_file ("--flagfile=%s" , use_always = True )
442476
443477 args .add ("--target_label" , kctx .label )
444478 args .add ("--rule_kind" , kctx .rule_kind )
445- args .add ("--kotlin_module_name" , kctx .compile_deps . module_name )
479+ args .add ("--kotlin_module_name" , kctx .module_name )
446480
447481 kotlin_jvm_target = kctx .kotlinc_options .jvm_target if (kctx .kotlinc_options and kctx .kotlinc_options .jvm_target ) else kctx .toolchains .kt .jvm_target
448482 args .add ("--kotlin_jvm_target" , kotlin_jvm_target )
@@ -463,15 +497,15 @@ def _run_kt_builder_action(
463497 # Unwrap kotlinc_options/javac_options options or default to the ones being provided by the toolchain
464498 args .add_all ("--kotlin_passthrough_flags" , kotlinc_options_to_flags (kctx .kotlinc_options ))
465499 args .add_all ("--javacopts" , javac_options_to_flags (kctx .javac_options ))
466- args .add_all ("--direct_dependencies" , _java_infos_to_compile_jars (kctx .compile_deps . deps ))
500+ args .add_all ("--direct_dependencies" , _java_infos_to_compile_jars (_java_infos ( kctx .deps ) + kctx . additional_deps ))
467501 args .add ("--strict_kotlin_deps" , kctx .toolchains .kt .experimental_strict_kotlin_deps )
468- args .add_all ("--classpath" , kctx . compile_deps . compile_jars )
502+ args .add_all ("--classpath" , classpath )
469503 args .add ("--reduced_classpath_mode" , kctx .toolchains .kt .experimental_reduce_classpath_mode )
470504 args .add ("--build_tools_api" , kctx .toolchains .kt .experimental_build_tools_api )
471505 args .add_all ("--sources" , kctx .srcs .all_srcs , omit_if_empty = True )
472506 args .add_all ("--source_jars" , kctx .srcs .src_jars + generated_src_jars , omit_if_empty = True )
473507 args .add_all ("--deps_artifacts" , kctx .deps_artifacts , omit_if_empty = True )
474- args .add_all ("--kotlin_friend_paths" , kctx .compile_deps . associate_jars , omit_if_empty = True )
508+ args .add_all ("--kotlin_friend_paths" , kctx .associates . jars , omit_if_empty = True )
475509 args .add ("--instrument_coverage" , kctx .coverage_instrumented )
476510
477511 plugins = _new_plugins_from (kctx .plugins + _exported_plugins (kctx .deps ))
@@ -551,8 +585,8 @@ def _run_kt_builder_action(
551585 inputs = depset (
552586 kctx .srcs .all_srcs + kctx .srcs .src_jars + generated_src_jars ,
553587 transitive = [
554- kctx . compile_deps . associate_jars ,
555- kctx .compile_deps . compile_jars ,
588+ classpath ,
589+ kctx .associates . jars ,
556590 kctx .transitive_runtime_jars ,
557591 kctx .deps_artifacts ,
558592 plugins .stubs_phase .classpath ,
@@ -588,7 +622,7 @@ def _kt_compilation_ctx(
588622 java_runtime ,
589623 kotlinc_options ,
590624 javac_options ,
591- compile_deps , # TODO: create this here as well and override in android rules
625+ compile_deps ,
592626 srcs , # TODO: passed in as file, migrate to targets instead
593627 deps ,
594628 associates ,
@@ -617,11 +651,15 @@ def _kt_compilation_ctx(
617651 kotlinc_options = kotlinc_options or toolchains .kt .kotlinc_options ,
618652 javac_options = javac_options or toolchains .kt .javac_options ,
619653 srcs = _partitioned_srcs (srcs ),
620- deps = deps ,
654+ deps = deps + associates ,
655+ additional_deps = compile_deps .additional_deps + [toolchains .kt .jvm_stdlibs ], # TODO: add dedicated api for stdlibs
656+ runtime_deps = compile_deps .runtime_deps ,
657+ exports = compile_deps .exports ,
621658 plugins = plugins ,
659+ associates = compile_deps .associates ,
660+ module_name = compile_deps .module_name ,
622661 transitive_runtime_jars = _plugin_mappers .targets_to_transitive_runtime_jars (plugins + deps ),
623662 deps_artifacts = _deps_artifacts (toolchains , deps + associates ),
624- compile_deps = compile_deps ,
625663 coverage_instrumented = ctx .coverage_instrumented (),
626664 target_cpu = ctx .var .get ("TARGET_CPU" , "UNKNOWN CPU" ), # required for progress message, worth the dependency?
627665 workspace_name = ctx .workspace_name , # required for kotlin builder's REPOSITORY_NAME env variable
@@ -754,10 +792,10 @@ def _kt_jvm_produce_output_jar_actions(
754792 compile_jar = compile_jar ,
755793 source_jar = source_jar ,
756794 jdeps = output_jdeps ,
757- deps = compile_deps .deps ,
758- runtime_deps = compile_deps .runtime_deps ,
759- exports = compile_deps .exports ,
760- neverlink = getattr ( ctx . attr , " neverlink" , False ) ,
795+ deps = _java_infos ( kctx .deps ) + kctx . additional_deps ,
796+ runtime_deps = _java_infos ( kctx .runtime_deps ) ,
797+ exports = _java_infos ( kctx .exports ) ,
798+ neverlink = kctx . neverlink ,
761799 generated_source_jar = generated_source_jar ,
762800 generated_class_jar = generated_class_jar ,
763801 )
@@ -775,7 +813,7 @@ def _kt_jvm_produce_output_jar_actions(
775813 kt = _KtJvmInfo (
776814 srcs = ctx .files .srcs ,
777815 module_name = compile_deps .module_name ,
778- module_jars = compile_deps .associate_jars ,
816+ module_jars = compile_deps .associates . jars ,
779817 language_version = kctx .toolchains .kt .api_version ,
780818 exported_compiler_plugins = _collect_plugins_for_export (
781819 getattr (ctx .attr , "exported_compiler_plugins" , []),
@@ -895,9 +933,9 @@ def _run_kt_java_builder_actions(
895933 output_jar = kt_runtime_jar ,
896934 compile_jar = kt_compile_jar ,
897935 jdeps = kt_jdeps ,
898- deps = kctx .compile_deps . deps ,
899- runtime_deps = kctx .compile_deps . runtime_deps ,
900- exports = kctx .compile_deps . exports ,
936+ deps = _java_infos ( kctx .deps ) + kctx . additional_deps ,
937+ runtime_deps = _java_infos ( kctx .runtime_deps ) ,
938+ exports = _java_infos ( kctx .exports ) ,
901939 neverlink = kctx .neverlink ,
902940 )
903941 java_infos .append (kt_java_info )
@@ -924,7 +962,7 @@ def _run_kt_java_builder_actions(
924962 source_files = kctx .srcs .java ,
925963 source_jars = generated_kapt_src_jars + kctx .srcs .src_jars + generated_ksp_src_jars ,
926964 output = kctx .actions .declare_file (kctx .label .name + "-java.jar" ),
927- deps = kctx .compile_deps . deps + kt_stubs_for_java + [ p [ JavaInfo ] for p in kctx .plugins if JavaInfo in p ] ,
965+ deps = kt_stubs_for_java + _java_infos ( kctx .deps + kctx .plugins ) + kctx . additional_deps ,
928966 java_toolchain = kctx .toolchains .java ,
929967 plugins = _plugin_mappers .targets_to_annotation_processors_java_plugin_info (kctx .plugins ),
930968 javac_opts = javac_opts ,
0 commit comments