Skip to content

Commit de26712

Browse files
committed
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 7456a0b commit de26712

File tree

11 files changed

+67
-43
lines changed

11 files changed

+67
-43
lines changed

WORKSPACE

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,22 +24,22 @@ specs2_junit_repositories()
2424
maven_jar(
2525
name = "com_twitter__scalding_date",
2626
artifact = scala_mvn_artifact("com.twitter:scalding-date:0.17.0"),
27-
sha1 = "420fb0c4f737a24b851c4316ee0362095710caa5"
27+
sha1 = "4fede78a279539a9aa394e54d654b2da8f072eb2"
2828
)
2929

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

3737

3838
# test of a plugin
3939
maven_jar(
4040
name = "org_psywerx_hairyfotr__linter",
41-
artifact = scala_mvn_artifact("org.psywerx.hairyfotr:linter:0.1.13"),
42-
sha1 = "e5b3e2753d0817b622c32aedcb888bcf39e275b4")
41+
artifact = scala_mvn_artifact("org.psywerx.hairyfotr:linter:0.1.17"),
42+
sha1 = "4496d757ce23ce84ff91567bb3328f35c52138af")
4343

4444
# test of strict deps (scalac plugin UT + E2E)
4545
maven_jar(

scala/scala.bzl

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,10 @@ StatsfileOutput: {statsfile_output}
213213
""".format(
214214
out=ctx.outputs.jar.path,
215215
manifest=ctx.outputs.manifest.path,
216-
scala_opts=",".join(scalacopts),
216+
# always append -YdisableFlatCpCaching, workaround for
217+
# https://github.com/bazelbuild/rules_scala/issues/305
218+
# remove once we upgrade to Scala 2.12.4
219+
scala_opts=",".join(scalacopts + ["-YdisableFlatCpCaching"]),
217220
print_compile_time=ctx.attr.print_compile_time,
218221
plugin_arg=plugin_arg,
219222
cp=compiler_classpath,
@@ -1108,13 +1111,13 @@ SCALA_BUILD_FILE = """
11081111
# scala.BUILD
11091112
java_import(
11101113
name = "scala-xml",
1111-
jars = ["lib/scala-xml_2.11-1.0.5.jar"],
1114+
jars = ["lib/scala-xml_2.12-1.0.6.jar"],
11121115
visibility = ["//visibility:public"],
11131116
)
11141117
11151118
java_import(
11161119
name = "scala-parser-combinators",
1117-
jars = ["lib/scala-parser-combinators_2.11-1.0.4.jar"],
1120+
jars = ["lib/scala-parser-combinators_2.12-1.0.6.jar"],
11181121
visibility = ["//visibility:public"],
11191122
)
11201123
@@ -1135,22 +1138,35 @@ java_import(
11351138
jars = ["lib/scala-reflect.jar"],
11361139
visibility = ["//visibility:public"],
11371140
)
1141+
1142+
java_library(
1143+
name = "transitive_scalatest",
1144+
exports = ["@scalatest//jar", "@scalactic//jar"],
1145+
visibility = ["//visibility:public"],
1146+
)
11381147
"""
11391148

11401149
def scala_repositories():
11411150
native.new_http_archive(
11421151
name = "scala",
1143-
strip_prefix = "scala-2.11.11",
1144-
sha256 = "12037ca64c68468e717e950f47fc77d5ceae5e74e3bdca56f6d02fd5bfd6900b",
1145-
url = "https://downloads.lightbend.com/scala/2.11.11/scala-2.11.11.tgz",
1152+
strip_prefix = "scala-2.12.3",
1153+
sha256 = "2b796ab773fbedcc734ba881a6486d54180b699ade8ba7493e91912044267c8c",
1154+
url = "https://downloads.lightbend.com/scala/2.12.3/scala-2.12.3.tgz",
11461155
build_file_content = SCALA_BUILD_FILE,
11471156
)
11481157

11491158
# scalatest has macros, note http_jar is invoking ijar
11501159
native.http_jar(
11511160
name = "scalatest",
1152-
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",
1153-
sha256 = "f198967436a5e7a69cfd182902adcfbcb9f2e41b349e1a5c8881a2407f615962",
1161+
url = "http://oss.sonatype.org/content/groups/public/org/scalatest/scalatest_2.12/3.0.3/scalatest_2.12-3.0.3.jar",
1162+
sha256 = "353f7c2bdde22c4286ee6a3ae0e425a9463b102f4c4cf76055a24f4666996762",
1163+
)
1164+
1165+
# scalatest has macros, note http_jar is invoking ijar
1166+
native.http_jar(
1167+
name = "scalactic",
1168+
url = "https://oss.sonatype.org/content/groups/public/org/scalactic/scalactic_2.12/3.0.3/scalactic_2.12-3.0.3.jar",
1169+
sha256 = "245ad1baab6661aee70c137c5e1625771c2624596b349b305801d94618673292",
11541170
)
11551171

11561172
native.maven_server(
@@ -1201,7 +1217,7 @@ def scala_repositories():
12011217

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

1204-
native.bind(name = "io_bazel_rules_scala/dependency/scalatest/scalatest", actual = "@scalatest//jar")
1220+
native.bind(name = "io_bazel_rules_scala/dependency/scalatest/scalatest", actual = "@scala//:transitive_scalatest")
12051221

12061222
def _sanitize_string_for_usage(s):
12071223
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
@@ -25,7 +25,7 @@ def scala_proto_repositories():
2525
native.maven_jar(
2626
name = "scala_proto_rules_scalapb_plugin",
2727
artifact = scala_mvn_artifact("com.trueaccord.scalapb:compilerplugin:0.6.5"),
28-
sha1 = "290094c632c95b36b6f66d7dbfdc15242b9a247f",
28+
sha1 = "d119bb24e976dacae8f55a678a027d59bc50ffac",
2929
server = "scala_proto_deps_maven_server",
3030
)
3131

@@ -37,7 +37,7 @@ def scala_proto_repositories():
3737
native.maven_jar(
3838
name = "scala_proto_rules_protoc_bridge",
3939
artifact = scala_mvn_artifact("com.trueaccord.scalapb:protoc-bridge:0.3.0-M1"),
40-
sha1 = "73d38f045ea8f09cc1264991d1064add6eac9e00",
40+
sha1 = "1de84a8176cf0192b68b2873364e26cb4da61a7a",
4141
server = "scala_proto_deps_maven_server",
4242
)
4343

@@ -49,7 +49,7 @@ def scala_proto_repositories():
4949
native.maven_jar(
5050
name = "scala_proto_rules_scalapbc",
5151
artifact = scala_mvn_artifact("com.trueaccord.scalapb:scalapbc:0.6.5"),
52-
sha1 = "b204d6d56a042b973af5b6fe28f81ece232d1fe4",
52+
sha1 = "7dd00d1d5b03be9879194bf917738d69b0126fab",
5353
server = "scala_proto_deps_maven_server",
5454
)
5555

@@ -61,7 +61,7 @@ def scala_proto_repositories():
6161
native.maven_jar(
6262
name = "scala_proto_rules_scalapb_runtime",
6363
artifact = scala_mvn_artifact("com.trueaccord.scalapb:scalapb-runtime:0.6.5"),
64-
sha1 = "ac9287ff48c632df525773570ee4842e3ddf40e9",
64+
sha1 = "5375ad64f0cc26b8e8a9377811f9b97645d24bac",
6565
server = "scala_proto_deps_maven_server",
6666
)
6767

@@ -73,7 +73,7 @@ def scala_proto_repositories():
7373
native.maven_jar(
7474
name = "scala_proto_rules_scalapb_runtime_grpc",
7575
artifact = scala_mvn_artifact("com.trueaccord.scalapb:scalapb-runtime-grpc:0.6.5"),
76-
sha1 = "9dc3374001f4190548db36a7dc87bd4f9bca6f9c",
76+
sha1 = "64885c5d96be6ecdfccdb27ca2bdef3ed9ce9fb4",
7777
server = "scala_proto_deps_maven_server",
7878
)
7979

@@ -85,7 +85,7 @@ def scala_proto_repositories():
8585
native.maven_jar(
8686
name = "scala_proto_rules_scalapb_lenses",
8787
artifact = scala_mvn_artifact("com.trueaccord.lenses:lenses:0.4.12"),
88-
sha1 = "c5fbf5b872ce99d9a16d3392ccc0d15a0e43d823",
88+
sha1 = "d97d2958814bcfe2f19e1ed2f0f03fd9da5a3961",
8989
server = "scala_proto_deps_maven_server",
9090
)
9191

@@ -97,7 +97,7 @@ def scala_proto_repositories():
9797
native.maven_jar(
9898
name = "scala_proto_rules_scalapb_fastparse",
9999
artifact = scala_mvn_artifact("com.lihaoyi:fastparse:0.4.4"),
100-
sha1 = "f065fe0afe6fd2b4557d985c37362c36f08f9947",
100+
sha1 = "aaf2048f9c6223220eac28c9b6a442f27ba83c55",
101101
server = "scala_proto_deps_maven_server",
102102
)
103103

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 = ""

tut_rule/tut.bzl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def tut_repositories():
1010
native.maven_jar(
1111
name = "io_bazel_rules_scala_org_tpolecat_tut_core",
1212
artifact = scala_mvn_artifact("org.tpolecat:tut-core:0.4.8"),
13-
sha1 = "fc723eb822494580cc05d6b3b3a6039d2280a5a0",
13+
sha1 = "b68b5a52474bf249d1156f5002033498054b813c",
1414
server = "tut_repositories_maven_server",
1515
)
1616
native.bind(name = 'io_bazel_rules_scala/dependency/tut/tut_core', actual = '@io_bazel_rules_scala_org_tpolecat_tut_core//jar')

twitter_scrooge/twitter_scrooge.bzl

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ _jar_filetype = FileType([".jar"])
1212
def twitter_scrooge():
1313
native.maven_server(
1414
name = "twitter_scrooge_maven_server",
15-
url = "http://mirror.bazel.build/repo1.maven.org/maven2/",
15+
url = "http://repo1.maven.org/maven2/",
1616
)
1717

1818
native.maven_jar(
@@ -25,33 +25,33 @@ def twitter_scrooge():
2525

2626
native.maven_jar(
2727
name = "scrooge_core",
28-
artifact = scala_mvn_artifact("com.twitter:scrooge-core:4.6.0"),
29-
sha1 = "84b86c2e082aba6e0c780b3c76281703b891a2c8",
28+
artifact = scala_mvn_artifact("com.twitter:scrooge-core:4.18.0"),
29+
sha1 = "8a10e4da9fd636a8225a5068aa0b57072142a30b",
3030
server = "twitter_scrooge_maven_server",
3131
)
3232
native.bind(name = 'io_bazel_rules_scala/dependency/thrift/scrooge_core', actual = '@scrooge_core//jar')
3333

3434
#scrooge-generator related dependencies
3535
native.maven_jar(
3636
name = "scrooge_generator",
37-
artifact = scala_mvn_artifact("com.twitter:scrooge-generator:4.6.0"),
38-
sha1 = "cacf72eedeb5309ca02b2d8325c587198ecaac82",
37+
artifact = scala_mvn_artifact("com.twitter:scrooge-generator:4.18.0"),
38+
sha1 = "d456f18b5c478b6356e2e09f4be4784cd4f05765",
3939
server = "twitter_scrooge_maven_server",
4040
)
4141
native.bind(name = 'io_bazel_rules_scala/dependency/thrift/scrooge_generator', actual = '@scrooge_generator//jar')
4242

4343
native.maven_jar(
4444
name = "util_core",
45-
artifact = scala_mvn_artifact("com.twitter:util-core:6.33.0"),
46-
sha1 = "bb49fa66a3ca9b7db8cd764d0b26ce498bbccc83",
45+
artifact = scala_mvn_artifact("com.twitter:util-core:6.45.0"),
46+
sha1 = "d7bbc819d90d06dfd4c76c25b82869b27048c886",
4747
server = "twitter_scrooge_maven_server",
4848
)
4949
native.bind(name = 'io_bazel_rules_scala/dependency/thrift/util_core', actual = '@util_core//jar')
5050

5151
native.maven_jar(
5252
name = "util_logging",
53-
artifact = scala_mvn_artifact("com.twitter:util-logging:6.33.0"),
54-
sha1 = "3d28e46f8ee3b7ad1b98a51b98089fc01c9755dd",
53+
artifact = scala_mvn_artifact("com.twitter:util-logging:6.45.0"),
54+
sha1 = "b83552e8980557b5dd767de40db1d44c3a39c400",
5555
server = "twitter_scrooge_maven_server",
5656
)
5757
native.bind(name = 'io_bazel_rules_scala/dependency/thrift/util_logging', actual = '@util_logging//jar')
@@ -255,11 +255,13 @@ def scrooge_scala_library(name, deps=[], remote_jars=[], jvm_flags=[], visibilit
255255
deps = deps + remote_jars + [
256256
srcjar,
257257
"//external:io_bazel_rules_scala/dependency/thrift/libthrift",
258-
"//external:io_bazel_rules_scala/dependency/thrift/scrooge_core"
258+
"//external:io_bazel_rules_scala/dependency/thrift/scrooge_core",
259+
"//external:io_bazel_rules_scala/dependency/thrift/util_core",
259260
],
260261
exports = deps + remote_jars + [
261262
"//external:io_bazel_rules_scala/dependency/thrift/libthrift",
262263
"//external:io_bazel_rules_scala/dependency/thrift/scrooge_core",
264+
"//external:io_bazel_rules_scala/dependency/thrift/util_core",
263265
],
264266
jvm_flags = jvm_flags,
265267
visibility = visibility,

0 commit comments

Comments
 (0)