Skip to content

Commit 75701d0

Browse files
authored
Use java_common.stamp_jar to stamp scala_import jar (#1372)
* Use java_common.stamp_jar to stamp scala_import jar
1 parent 9b85aff commit 75701d0

File tree

2 files changed

+13
-38
lines changed

2 files changed

+13
-38
lines changed

scala/scala_import.bzl

Lines changed: 11 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,16 @@ load("@io_bazel_rules_scala//scala:jars_to_labels.bzl", "JarsToLabelsInfo")
22
load("//scala/settings:stamp_settings.bzl", "StampScalaImport")
33

44
def _stamp_jar(ctx, jar):
5-
stamped_jar_filename = "%s.stamp/%s-stamped.jar" % (ctx.label.name, jar.basename.rstrip(".jar"))
6-
7-
# Preferred way, but currently broken:
8-
# java toolchain's ijar incorrectly handles MANIFEST sections
9-
# https://github.com/bazelbuild/bazel/issues/12730
10-
# symlink_file = ctx.actions.declare_file(jar.basename)
11-
# ctx.actions.symlink(output = symlink_file, target_file = jar)
12-
# return java_common.stamp_jar(
13-
# actions = ctx.actions,
14-
# jar = symlink_file,
15-
# target_label = ctx.label,
16-
# java_toolchain = ctx.attr._java_toolchain[java_common.JavaToolchainInfo],
17-
# )
18-
19-
stamped_file = ctx.actions.declare_file(stamped_jar_filename)
20-
21-
ctx.actions.run(
22-
executable = ctx.executable._ijar,
23-
inputs = [jar],
24-
outputs = [stamped_file],
25-
arguments = [
26-
"--nostrip_jar",
27-
"--target_label",
28-
str(ctx.label),
29-
jar.path,
30-
stamped_file.path,
31-
],
32-
mnemonic = "StampWithIjar",
5+
stamped_jar_filename = "%s.stamp/%s" % (ctx.label.name, jar.basename)
6+
symlink_file = ctx.actions.declare_file(stamped_jar_filename)
7+
ctx.actions.symlink(output = symlink_file, target_file = jar)
8+
return java_common.stamp_jar(
9+
actions = ctx.actions,
10+
jar = symlink_file,
11+
target_label = ctx.label,
12+
java_toolchain = ctx.attr._java_toolchain[java_common.JavaToolchainInfo],
3313
)
3414

35-
return stamped_file
36-
3715
# intellij part is tested manually, tread lightly when changing there
3816
# if you change make sure to manually re-import an intellij project and see imports
3917
# are resolved (not red) and clickable
@@ -157,15 +135,12 @@ scala_import = rule(
157135
allow_single_file = True,
158136
default = Label("@io_bazel_rules_scala//scala:libPlaceHolderClassToCreateEmptyJarForScalaImport.jar"),
159137
),
160-
"_ijar": attr.label(
161-
default = Label("@bazel_tools//tools/jdk:ijar"),
162-
executable = True,
163-
cfg = "exec",
164-
allow_files = True,
165-
),
166138
"stamp": attr.label(
167139
doc = "Adds Target-Label attribute to MANIFEST.MF for dep tracking",
168140
default = Label("@io_bazel_rules_scala//scala/settings:stamp_scala_import"),
169141
),
142+
"_java_toolchain": attr.label(
143+
default = Label("@bazel_tools//tools/jdk:current_java_toolchain"),
144+
),
170145
},
171146
)

test/src/main/scala/scalarules/test/scala_import/scala_import_stamp_test.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ def _assert_compile_dep_stamped(ctx):
66
env = analysistest.begin(ctx)
77
stamping_enabled = ctx.attr.stamp
88
jar = ctx.attr.jar.files.to_list()[0].basename
9-
expected_action_mnemonic = "StampWithIjar"
9+
expected_action_mnemonic = "JavaIjar"
1010
expected_input = jar
1111
expected_stamped_output = jar.rstrip(".jar") + "-stamped.jar"
1212

1313
target_under_test = analysistest.target_under_test(env)
1414

1515
if stamping_enabled:
16-
stamp_action = analysistest.target_actions(env)[0]
16+
stamp_action = analysistest.target_actions(env)[1]
1717

1818
actual_action_mnemonic = stamp_action.mnemonic
1919
asserts.equals(env, expected_action_mnemonic, actual_action_mnemonic)

0 commit comments

Comments
 (0)