Skip to content

Commit b2d893d

Browse files
gkk-stripenatansil
authored andcommitted
Fresh cherry-pick of the Scala 2.12 support (bazel-contrib#304)
* Scala 2.12 updates Bump dependencies to versions that support Scala 2.12. * Fix incompatible scrooge api change. They swapped the logger interface and now there's a different went to silence the logging. * Add scalactic as a transitive dep of scalatest Newer versions of scalatest have scalactic as a dependency. Let bazel know about it and add its a transitive dep. * Add a missing dependency on util_core from scrooge rule Add a missing dependency on Twitter's util_core from scrooge rule Switch to a recent nightly build that has a fix for the flat classpath caching bug that is breaking bazel's incremental compilation when worker is enabled. See bazel-contrib#251 (comment) for the details of the bug. * Disable jmh test See bazel-contrib#295 for why it's failing. * Append YdisableFlatCpCaching to scalacopts by default Append the `YdisableFlatCpCaching` compiler option by default as a workaround to bazel-contrib#305
1 parent a8ef632 commit b2d893d

File tree

12 files changed

+67
-43
lines changed

12 files changed

+67
-43
lines changed

WORKSPACE

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,22 +26,22 @@ load("//scala:scala_cross_version.bzl", "scala_mvn_artifact")
2626
maven_jar(
2727
name = "com_twitter__scalding_date",
2828
artifact = scala_mvn_artifact("com.twitter:scalding-date:0.17.0"),
29-
sha1 = "420fb0c4f737a24b851c4316ee0362095710caa5"
29+
sha1 = "4fede78a279539a9aa394e54d654b2da8f072eb2"
3030
)
3131

3232
# For testing that we don't include sources jars to the classpath
3333
maven_jar(
3434
name = "org_typelevel__cats_core",
3535
artifact = scala_mvn_artifact("org.typelevel:cats-core:0.9.0"),
36-
sha1 = "b2f8629c6ec834d8b6321288c9fe77823f1e1314"
36+
sha1 = "267cebe07afbb365b08a6e18be4b137508f16bee"
3737
)
3838

3939

4040
# test of a plugin
4141
maven_jar(
4242
name = "org_psywerx_hairyfotr__linter",
43-
artifact = scala_mvn_artifact("org.psywerx.hairyfotr:linter:0.1.13"),
44-
sha1 = "e5b3e2753d0817b622c32aedcb888bcf39e275b4")
43+
artifact = scala_mvn_artifact("org.psywerx.hairyfotr:linter:0.1.17"),
44+
sha1 = "4496d757ce23ce84ff91567bb3328f35c52138af")
4545

4646
# test of strict deps (scalac plugin UT + E2E)
4747
maven_jar(

scala/private/rule_impls.bzl

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,10 @@ StatsfileOutput: {statsfile_output}
218218
""".format(
219219
out=ctx.outputs.jar.path,
220220
manifest=ctx.outputs.manifest.path,
221-
scala_opts=",".join(scalacopts),
221+
# always append -YdisableFlatCpCaching, workaround for
222+
# https://github.com/bazelbuild/rules_scala/issues/305
223+
# remove once we upgrade to Scala 2.12.4
224+
scala_opts=",".join(scalacopts + ["-YdisableFlatCpCaching"]),
222225
print_compile_time=ctx.attr.print_compile_time,
223226
plugin_arg=plugin_arg,
224227
cp=compiler_classpath,

scala/scala.bzl

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -203,13 +203,13 @@ _SCALA_BUILD_FILE = """
203203
# scala.BUILD
204204
java_import(
205205
name = "scala-xml",
206-
jars = ["lib/scala-xml_2.11-1.0.5.jar"],
206+
jars = ["lib/scala-xml_2.12-1.0.6.jar"],
207207
visibility = ["//visibility:public"],
208208
)
209209
210210
java_import(
211211
name = "scala-parser-combinators",
212-
jars = ["lib/scala-parser-combinators_2.11-1.0.4.jar"],
212+
jars = ["lib/scala-parser-combinators_2.12-1.0.6.jar"],
213213
visibility = ["//visibility:public"],
214214
)
215215
@@ -230,22 +230,35 @@ java_import(
230230
jars = ["lib/scala-reflect.jar"],
231231
visibility = ["//visibility:public"],
232232
)
233+
234+
java_library(
235+
name = "transitive_scalatest",
236+
exports = ["@scalatest//jar", "@scalactic//jar"],
237+
visibility = ["//visibility:public"],
238+
)
233239
"""
234240

235241
def scala_repositories():
236242
native.new_http_archive(
237243
name = "scala",
238-
strip_prefix = "scala-2.11.11",
239-
sha256 = "12037ca64c68468e717e950f47fc77d5ceae5e74e3bdca56f6d02fd5bfd6900b",
240-
url = "https://downloads.lightbend.com/scala/2.11.11/scala-2.11.11.tgz",
244+
strip_prefix = "scala-2.12.3",
245+
sha256 = "2b796ab773fbedcc734ba881a6486d54180b699ade8ba7493e91912044267c8c",
246+
url = "https://downloads.lightbend.com/scala/2.12.3/scala-2.12.3.tgz",
241247
build_file_content = _SCALA_BUILD_FILE,
242248
)
243249

244250
# scalatest has macros, note http_jar is invoking ijar
245251
native.http_jar(
246252
name = "scalatest",
247-
url = "https://mirror.bazel.build/oss.sonatype.org/content/groups/public/org/scalatest/scalatest_2.11/2.2.6/scalatest_2.11-2.2.6.jar",
248-
sha256 = "f198967436a5e7a69cfd182902adcfbcb9f2e41b349e1a5c8881a2407f615962",
253+
url = "http://oss.sonatype.org/content/groups/public/org/scalatest/scalatest_2.12/3.0.3/scalatest_2.12-3.0.3.jar",
254+
sha256 = "353f7c2bdde22c4286ee6a3ae0e425a9463b102f4c4cf76055a24f4666996762",
255+
)
256+
257+
# scalatest has macros, note http_jar is invoking ijar
258+
native.http_jar(
259+
name = "scalactic",
260+
url = "https://oss.sonatype.org/content/groups/public/org/scalactic/scalactic_2.12/3.0.3/scalactic_2.12-3.0.3.jar",
261+
sha256 = "245ad1baab6661aee70c137c5e1625771c2624596b349b305801d94618673292",
249262
)
250263

251264
native.maven_server(
@@ -296,7 +309,7 @@ def scala_repositories():
296309

297310
native.bind(name = "io_bazel_rules_scala/dependency/scala/scala_xml", actual = "@scala//:scala-xml")
298311

299-
native.bind(name = "io_bazel_rules_scala/dependency/scalatest/scalatest", actual = "@scalatest//jar")
312+
native.bind(name = "io_bazel_rules_scala/dependency/scalatest/scalatest", actual = "@scala//:transitive_scalatest")
300313

301314
def _sanitize_string_for_usage(s):
302315
res_array = []

scala/scala_cross_version.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ resolution."""
1818

1919
def scala_version():
2020
"""return the scala version for use in maven coordinates"""
21-
return "2.11"
21+
return "2.12"
2222

2323
def scala_mvn_artifact(artifact):
2424
gav = artifact.split(":")

scala_proto/scala_proto.bzl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def scala_proto_repositories():
3232
native.maven_jar(
3333
name = "scala_proto_rules_scalapb_plugin",
3434
artifact = scala_mvn_artifact("com.trueaccord.scalapb:compilerplugin:0.6.5"),
35-
sha1 = "290094c632c95b36b6f66d7dbfdc15242b9a247f",
35+
sha1 = "d119bb24e976dacae8f55a678a027d59bc50ffac",
3636
server = "scala_proto_deps_maven_server",
3737
)
3838

@@ -44,7 +44,7 @@ def scala_proto_repositories():
4444
native.maven_jar(
4545
name = "scala_proto_rules_protoc_bridge",
4646
artifact = scala_mvn_artifact("com.trueaccord.scalapb:protoc-bridge:0.3.0-M1"),
47-
sha1 = "73d38f045ea8f09cc1264991d1064add6eac9e00",
47+
sha1 = "1de84a8176cf0192b68b2873364e26cb4da61a7a",
4848
server = "scala_proto_deps_maven_server",
4949
)
5050

@@ -56,7 +56,7 @@ def scala_proto_repositories():
5656
native.maven_jar(
5757
name = "scala_proto_rules_scalapbc",
5858
artifact = scala_mvn_artifact("com.trueaccord.scalapb:scalapbc:0.6.5"),
59-
sha1 = "b204d6d56a042b973af5b6fe28f81ece232d1fe4",
59+
sha1 = "7dd00d1d5b03be9879194bf917738d69b0126fab",
6060
server = "scala_proto_deps_maven_server",
6161
)
6262

@@ -68,7 +68,7 @@ def scala_proto_repositories():
6868
native.maven_jar(
6969
name = "scala_proto_rules_scalapb_runtime",
7070
artifact = scala_mvn_artifact("com.trueaccord.scalapb:scalapb-runtime:0.6.5"),
71-
sha1 = "ac9287ff48c632df525773570ee4842e3ddf40e9",
71+
sha1 = "5375ad64f0cc26b8e8a9377811f9b97645d24bac",
7272
server = "scala_proto_deps_maven_server",
7373
)
7474

@@ -80,7 +80,7 @@ def scala_proto_repositories():
8080
native.maven_jar(
8181
name = "scala_proto_rules_scalapb_runtime_grpc",
8282
artifact = scala_mvn_artifact("com.trueaccord.scalapb:scalapb-runtime-grpc:0.6.5"),
83-
sha1 = "9dc3374001f4190548db36a7dc87bd4f9bca6f9c",
83+
sha1 = "64885c5d96be6ecdfccdb27ca2bdef3ed9ce9fb4",
8484
server = "scala_proto_deps_maven_server",
8585
)
8686

@@ -92,7 +92,7 @@ def scala_proto_repositories():
9292
native.maven_jar(
9393
name = "scala_proto_rules_scalapb_lenses",
9494
artifact = scala_mvn_artifact("com.trueaccord.lenses:lenses:0.4.12"),
95-
sha1 = "c5fbf5b872ce99d9a16d3392ccc0d15a0e43d823",
95+
sha1 = "d97d2958814bcfe2f19e1ed2f0f03fd9da5a3961",
9696
server = "scala_proto_deps_maven_server",
9797
)
9898

@@ -104,7 +104,7 @@ def scala_proto_repositories():
104104
native.maven_jar(
105105
name = "scala_proto_rules_scalapb_fastparse",
106106
artifact = scala_mvn_artifact("com.lihaoyi:fastparse:0.4.4"),
107-
sha1 = "f065fe0afe6fd2b4557d985c37362c36f08f9947",
107+
sha1 = "aaf2048f9c6223220eac28c9b6a442f27ba83c55",
108108
server = "scala_proto_deps_maven_server",
109109
)
110110

specs2/specs2.bzl

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,31 +9,31 @@ def specs2_repositories():
99
native.maven_jar(
1010
name = "io_bazel_rules_scala_org_specs2_specs2_core",
1111
artifact = scala_mvn_artifact("org.specs2:specs2-core:" + specs2_version()),
12-
sha1 = "495bed00c73483f4f5f43945fde63c615d03e637",
12+
sha1 = "86cb72427e64e1423edcbf082e8767a60493bbcc",
1313
)
1414

1515
native.maven_jar(
1616
name = "io_bazel_rules_scala_org_specs2_specs2_common",
1717
artifact = scala_mvn_artifact("org.specs2:specs2-common:" + specs2_version()),
18-
sha1 = "15bc009eaae3a574796c0f558d8696b57ae903c3",
18+
sha1 = "83bd14fb54f81a886901fa7ed136bcf887322440",
1919
)
2020

2121
native.maven_jar(
2222
name = "io_bazel_rules_scala_org_specs2_specs2_matcher",
2323
artifact = scala_mvn_artifact("org.specs2:specs2-matcher:" + specs2_version()),
24-
sha1 = "d2e967737abef7421e47b8994a8c92784e624d62",
24+
sha1 = "921d9ef6bf98c3e5a59d535e1139b5522625d6ba",
2525
)
2626

2727
native.maven_jar(
2828
name = "io_bazel_rules_scala_org_scalaz_scalaz_effect",
2929
artifact = scala_mvn_artifact("org.scalaz:scalaz-effect:7.2.7"),
30-
sha1 = "824bbb83da12224b3537c354c51eb3da72c435b5",
30+
sha1 = "5d0bbd74323d8c7467cde95dcdc298eb3d9dcdb1",
3131
)
3232

3333
native.maven_jar(
3434
name = "io_bazel_rules_scala_org_scalaz_scalaz_core",
3535
artifact = scala_mvn_artifact("org.scalaz:scalaz-core:7.2.7"),
36-
sha1 = "ebf85118d0bf4ce18acebf1d8475ee7deb7f19f1",
36+
sha1 = "ee06c07e856bad6ce112b2a5b96e1df1609ad57f",
3737
)
3838

3939
native.bind(name = 'io_bazel_rules_scala/dependency/specs2/specs2', actual = "@io_bazel_rules_scala//specs2:specs2")

specs2/specs2_junit.bzl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ def specs2_junit_repositories():
77
junit_repositories()
88
# Aditional dependencies for specs2 junit runner
99
native.maven_jar(
10-
name = "io_bazel_rules_scala_org_specs2_specs2_junit_2_11",
10+
name = "io_bazel_rules_scala_org_specs2_specs2_junit_2_12",
1111
artifact = scala_mvn_artifact("org.specs2:specs2-junit:" + specs2_version()),
12-
sha1 = "1dc9e43970557c308ee313842d84094bc6c1c1b5",
12+
sha1 = "aa6af850ccd428673add3840652cdd8e82791391",
1313
)
14-
native.bind(name = 'io_bazel_rules_scala/dependency/specs2/specs2_junit', actual = '@io_bazel_rules_scala_org_specs2_specs2_junit_2_11//jar')
14+
native.bind(name = 'io_bazel_rules_scala/dependency/specs2/specs2_junit', actual = '@io_bazel_rules_scala_org_specs2_specs2_junit_2_12//jar')
1515

1616
def specs2_junit_dependencies():
1717
return specs2_dependencies() + ["//external:io_bazel_rules_scala/dependency/specs2/specs2_junit"]

src/java/io/bazel/rulesscala/scalac/BUILD

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ java_binary(
77
"Resource.java",
88
],
99
main_class = "io.bazel.rulesscala.scalac.ScalaCInvoker",
10+
# this probably should be set globally for the entire rules_scala
11+
# but I don't know how to do it
12+
javacopts = [
13+
"-source 1.8",
14+
"-target 1.8"
15+
],
1016
visibility = ["//visibility:public"],
1117
deps = [
1218
"//src/java/com/google/devtools/build/lib:worker",

src/scala/io/bazel/rules_scala/scrooge_support/Compiler.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ class Compiler {
130130
skipIncludes = false,
131131
documentCache
132132
)
133-
parser.logger.setLevel(Level.OFF) // scrooge warns on file names with "/"
133+
parser.logger.setUseParentHandlers(false) // scrooge warns on file names with "/"
134134
val doc = parser.parseFile(inputFile).mapNamespaces(namespaceMappings.toMap)
135135

136136
if (verbose) println("+ Compiling %s".format(inputFile))

test/aspect/aspect.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def _rule_impl(ctx):
2828
"scala_test" : [
2929
"//test/aspect:scala_test",
3030
"@scala//:scala-library",
31-
"@scalatest//jar:jar",
31+
"@scala//:transitive_scalatest",
3232
],
3333
"scala_junit_test" : [
3434
"//test/aspect:scala_junit_test",
@@ -48,7 +48,7 @@ def _rule_impl(ctx):
4848
"@scala//:scala-library",
4949
"@scala//:scala-reflect",
5050
# From specs2/specs2_junit.bzl:specs2_junit_dependencies()
51-
"@io_bazel_rules_scala_org_specs2_specs2_junit_2_11//jar:jar",
51+
"@io_bazel_rules_scala_org_specs2_specs2_junit_2_12//jar:jar",
5252
],
5353
}
5454
content = ""

0 commit comments

Comments
 (0)