@@ -592,94 +592,102 @@ def _jar_path_based_on_java_bin(ctx):
592
592
593
593
def _write_executable (ctx , executable , rjars , main_class , jvm_flags , wrapper , use_jacoco ):
594
594
if (_is_windows (ctx )):
595
- classpath = ";" .join (
596
- [("external/%s" % (j .short_path [3 :]) if j .short_path .startswith ("../" ) else j .short_path ) for j in rjars .to_list ()],
595
+ return _write_executable_windows (ctx , executable , rjars , main_class , jvm_flags , wrapper , use_jacoco )
596
+ else :
597
+ return _write_executable_non_windows (ctx , executable , rjars , main_class , jvm_flags , wrapper , use_jacoco )
598
+
599
+ def _write_executable_windows (ctx , executable , rjars , main_class , jvm_flags , wrapper , use_jacoco ):
600
+ # NOTE: `use_jacoco` is currently ignored on Windows.
601
+ # TODO: tests coverage support for Windows
602
+ classpath = ";" .join (
603
+ [("external/%s" % (j .short_path [3 :]) if j .short_path .startswith ("../" ) else j .short_path ) for j in rjars .to_list ()],
604
+ )
605
+ jvm_flags_str = ";" .join (jvm_flags )
606
+ java_for_exe = str (ctx .attr ._java_runtime [java_common .JavaRuntimeInfo ].java_executable_exec_path )
607
+
608
+ cpfile = ctx .actions .declare_file ("%s.classpath" % ctx .label .name )
609
+ ctx .actions .write (cpfile , classpath )
610
+
611
+ ctx .actions .run (
612
+ outputs = [executable ],
613
+ inputs = [cpfile ],
614
+ executable = ctx .attr ._exe .files_to_run .executable ,
615
+ arguments = [executable .path , ctx .workspace_name , java_for_exe , main_class , cpfile .path , jvm_flags_str ],
616
+ mnemonic = "ExeLauncher" ,
617
+ progress_message = "Creating exe launcher" ,
618
+ )
619
+ return []
620
+
621
+ def _write_executable_non_windows (ctx , executable , rjars , main_class , jvm_flags , wrapper , use_jacoco ):
622
+ template = ctx .attr ._java_stub_template .files .to_list ()[0 ]
623
+
624
+ jvm_flags = " " .join (
625
+ [ctx .expand_location (f , ctx .attr .data ) for f in jvm_flags ],
626
+ )
627
+
628
+ javabin = "export REAL_EXTERNAL_JAVA_BIN=${JAVABIN};JAVABIN=%s/%s" % (
629
+ _runfiles_root (ctx ),
630
+ wrapper .short_path ,
631
+ )
632
+
633
+ if use_jacoco and _coverage_replacements_provider .is_enabled (ctx ):
634
+ classpath = ":" .join (
635
+ ["${RUNPATH}%s" % (j .short_path ) for j in rjars .to_list () + ctx .files ._jacocorunner + ctx .files ._lcov_merger ],
597
636
)
598
- jvm_flags_str = ";" .join (jvm_flags )
599
- java_for_exe = str (ctx .attr ._java_runtime [java_common .JavaRuntimeInfo ].java_executable_exec_path )
600
-
601
- cpfile = ctx .actions .declare_file ("%s.classpath" % ctx .label .name )
602
- ctx .actions .write (cpfile , classpath )
603
-
604
- ctx .actions .run (
605
- outputs = [executable ],
606
- inputs = [cpfile ],
607
- executable = ctx .attr ._exe .files_to_run .executable ,
608
- arguments = [executable .path , ctx .workspace_name , java_for_exe , main_class , cpfile .path , jvm_flags_str ],
609
- mnemonic = "ExeLauncher" ,
610
- progress_message = "Creating exe launcher" ,
637
+ jacoco_metadata_file = ctx .actions .declare_file (
638
+ "%s.jacoco_metadata.txt" % ctx .attr .name ,
639
+ sibling = executable ,
611
640
)
612
- return []
641
+ ctx .actions .write (jacoco_metadata_file , "\n " .join ([
642
+ jar .short_path .replace ("../" , "external/" )
643
+ for jar in rjars
644
+ ]))
645
+ ctx .actions .expand_template (
646
+ template = template ,
647
+ output = executable ,
648
+ substitutions = {
649
+ "%classpath%" : classpath ,
650
+ "%javabin%" : javabin ,
651
+ "%jarbin%" : _jar_path_based_on_java_bin (ctx ),
652
+ "%jvm_flags%" : jvm_flags ,
653
+ "%needs_runfiles%" : "" ,
654
+ "%runfiles_manifest_only%" : "" ,
655
+ "%workspace_prefix%" : ctx .workspace_name + "/" ,
656
+ "%java_start_class%" : "com.google.testing.coverage.JacocoCoverageRunner" ,
657
+ "%set_jacoco_metadata%" : "export JACOCO_METADATA_JAR=\" $JAVA_RUNFILES/{}/{}\" " .format (ctx .workspace_name , jacoco_metadata_file .short_path ),
658
+ "%set_jacoco_main_class%" : """export JACOCO_MAIN_CLASS={}""" .format (main_class ),
659
+ "%set_jacoco_java_runfiles_root%" : """export JACOCO_JAVA_RUNFILES_ROOT=$JAVA_RUNFILES/{}/""" .format (ctx .workspace_name ),
660
+ "%set_java_coverage_new_implementation%" : """export JAVA_COVERAGE_NEW_IMPLEMENTATION=YES""" ,
661
+ },
662
+ is_executable = True ,
663
+ )
664
+ return [jacoco_metadata_file ]
613
665
else :
614
- template = ctx . attr . _java_stub_template . files . to_list ()[ 0 ]
615
-
616
- jvm_flags = " " .join (
617
- [ctx . expand_location ( f , ctx . attr . data ) for f in jvm_flags ],
666
+ # RUNPATH is defined here:
667
+ # https://github.com/bazelbuild/bazel/blob/0.4.5/src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt#L227
668
+ classpath = ": " .join (
669
+ ["${RUNPATH}%s" % ( j . short_path ) for j in rjars . to_list () ],
618
670
)
619
-
620
- javabin = "export REAL_EXTERNAL_JAVA_BIN=${JAVABIN};JAVABIN=%s/%s" % (
621
- _runfiles_root (ctx ),
622
- wrapper .short_path ,
671
+ ctx .actions .expand_template (
672
+ template = template ,
673
+ output = executable ,
674
+ substitutions = {
675
+ "%classpath%" : classpath ,
676
+ "%java_start_class%" : main_class ,
677
+ "%javabin%" : javabin ,
678
+ "%jarbin%" : _jar_path_based_on_java_bin (ctx ),
679
+ "%jvm_flags%" : jvm_flags ,
680
+ "%needs_runfiles%" : "" ,
681
+ "%runfiles_manifest_only%" : "" ,
682
+ "%set_jacoco_metadata%" : "" ,
683
+ "%set_jacoco_main_class%" : "" ,
684
+ "%set_jacoco_java_runfiles_root%" : "" ,
685
+ "%workspace_prefix%" : ctx .workspace_name + "/" ,
686
+ "%set_java_coverage_new_implementation%" : """export JAVA_COVERAGE_NEW_IMPLEMENTATION=NO""" ,
687
+ },
688
+ is_executable = True ,
623
689
)
624
-
625
- if use_jacoco and _coverage_replacements_provider .is_enabled (ctx ):
626
- classpath = ":" .join (
627
- ["${RUNPATH}%s" % (j .short_path ) for j in rjars .to_list () + ctx .files ._jacocorunner + ctx .files ._lcov_merger ],
628
- )
629
- jacoco_metadata_file = ctx .actions .declare_file (
630
- "%s.jacoco_metadata.txt" % ctx .attr .name ,
631
- sibling = executable ,
632
- )
633
- ctx .actions .write (jacoco_metadata_file , "\n " .join ([
634
- jar .short_path .replace ("../" , "external/" )
635
- for jar in rjars
636
- ]))
637
- ctx .actions .expand_template (
638
- template = template ,
639
- output = executable ,
640
- substitutions = {
641
- "%classpath%" : classpath ,
642
- "%javabin%" : javabin ,
643
- "%jarbin%" : _jar_path_based_on_java_bin (ctx ),
644
- "%jvm_flags%" : jvm_flags ,
645
- "%needs_runfiles%" : "" ,
646
- "%runfiles_manifest_only%" : "" ,
647
- "%workspace_prefix%" : ctx .workspace_name + "/" ,
648
- "%java_start_class%" : "com.google.testing.coverage.JacocoCoverageRunner" ,
649
- "%set_jacoco_metadata%" : "export JACOCO_METADATA_JAR=\" $JAVA_RUNFILES/{}/{}\" " .format (ctx .workspace_name , jacoco_metadata_file .short_path ),
650
- "%set_jacoco_main_class%" : """export JACOCO_MAIN_CLASS={}""" .format (main_class ),
651
- "%set_jacoco_java_runfiles_root%" : """export JACOCO_JAVA_RUNFILES_ROOT=$JAVA_RUNFILES/{}/""" .format (ctx .workspace_name ),
652
- "%set_java_coverage_new_implementation%" : """export JAVA_COVERAGE_NEW_IMPLEMENTATION=YES""" ,
653
- },
654
- is_executable = True ,
655
- )
656
- return [jacoco_metadata_file ]
657
- else :
658
- # RUNPATH is defined here:
659
- # https://github.com/bazelbuild/bazel/blob/0.4.5/src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt#L227
660
- classpath = ":" .join (
661
- ["${RUNPATH}%s" % (j .short_path ) for j in rjars .to_list ()],
662
- )
663
- ctx .actions .expand_template (
664
- template = template ,
665
- output = executable ,
666
- substitutions = {
667
- "%classpath%" : classpath ,
668
- "%java_start_class%" : main_class ,
669
- "%javabin%" : javabin ,
670
- "%jarbin%" : _jar_path_based_on_java_bin (ctx ),
671
- "%jvm_flags%" : jvm_flags ,
672
- "%needs_runfiles%" : "" ,
673
- "%runfiles_manifest_only%" : "" ,
674
- "%set_jacoco_metadata%" : "" ,
675
- "%set_jacoco_main_class%" : "" ,
676
- "%set_jacoco_java_runfiles_root%" : "" ,
677
- "%workspace_prefix%" : ctx .workspace_name + "/" ,
678
- "%set_java_coverage_new_implementation%" : """export JAVA_COVERAGE_NEW_IMPLEMENTATION=NO""" ,
679
- },
680
- is_executable = True ,
681
- )
682
- return []
690
+ return []
683
691
684
692
def _declare_executable (ctx ):
685
693
if (_is_windows (ctx )):
@@ -1166,7 +1174,7 @@ def scala_test_impl(ctx):
1166
1174
ctx = ctx ,
1167
1175
executable = executable ,
1168
1176
jvm_flags = [
1169
- "-DRULES_SCALA_WS =%s" % ctx .workspace_name ,
1177
+ "-DRULES_SCALA_MAIN_WS_NAME =%s" % ctx .workspace_name ,
1170
1178
"-DRULES_SCALA_ARGS_FILE=%s" % argsFile .short_path
1171
1179
] + ctx .attr .jvm_flags ,
1172
1180
main_class = ctx .attr .main_class ,
0 commit comments