From 705032df5329b55863c788f06f1d278d9a9b2272 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Wed, 12 Jul 2017 15:02:09 -0700 Subject: [PATCH 01/16] Scala 2.12 updates Bump dependencies to versions that support Scala 2.12. --- WORKSPACE | 8 ++++---- scala/scala.bzl | 16 ++++++++-------- specs2/specs2.bzl | 20 ++++++++++---------- specs2/specs2_junit.bzl | 8 ++++---- test/aspect/aspect.bzl | 2 +- tut_rule/tut.bzl | 4 ++-- twitter_scrooge/twitter_scrooge.bzl | 18 +++++++++--------- 7 files changed, 38 insertions(+), 38 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index 0e5d8dab4..3aaee7765 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -20,15 +20,15 @@ specs2_junit_repositories() # test adding a scala jar: maven_jar( name = "com_twitter__scalding_date", - artifact = scala_mvn_artifact("com.twitter:scalding-date:0.16.0-RC4"), - sha1 = "659eb2d42945dea37b310d96af4e12bf83f54d14" + artifact = scala_mvn_artifact("com.twitter:scalding-date:0.17.0"), + sha1 = "4fede78a279539a9aa394e54d654b2da8f072eb2" ) # test of a plugin maven_jar( name = "org_psywerx_hairyfotr__linter", - artifact = scala_mvn_artifact("org.psywerx.hairyfotr:linter:0.1.13"), - sha1 = "e5b3e2753d0817b622c32aedcb888bcf39e275b4") + artifact = scala_mvn_artifact("org.psywerx.hairyfotr:linter:0.1.17"), + sha1 = "4496d757ce23ce84ff91567bb3328f35c52138af") # test of strict deps (scalac plugin UT + E2E) maven_jar( diff --git a/scala/scala.bzl b/scala/scala.bzl index f9c966531..a59ed3758 100644 --- a/scala/scala.bzl +++ b/scala/scala.bzl @@ -956,7 +956,7 @@ scala_repl = rule( def scala_version(): """return the scala version for use in maven coordinates""" - return "2.11" + return "2.12" def scala_mvn_artifact(artifact): gav = artifact.split(":") @@ -969,13 +969,13 @@ SCALA_BUILD_FILE = """ # scala.BUILD java_import( name = "scala-xml", - jars = ["lib/scala-xml_2.11-1.0.5.jar"], + jars = ["lib/scala-xml_2.12-1.0.6.jar"], visibility = ["//visibility:public"], ) java_import( name = "scala-parser-combinators", - jars = ["lib/scala-parser-combinators_2.11-1.0.4.jar"], + jars = ["lib/scala-parser-combinators_2.12-1.0.5.jar"], visibility = ["//visibility:public"], ) @@ -1001,17 +1001,17 @@ java_import( def scala_repositories(): native.new_http_archive( name = "scala", - strip_prefix = "scala-2.11.11", - sha256 = "12037ca64c68468e717e950f47fc77d5ceae5e74e3bdca56f6d02fd5bfd6900b", - url = "https://downloads.lightbend.com/scala/2.11.11/scala-2.11.11.tgz", + strip_prefix = "scala-2.12.2", + sha256 = "196168b246fcf10e275491c5e58a50ca9eb696da95e49155b3f86f001346a6f5", + url = "https://downloads.lightbend.com/scala/2.12.2/scala-2.12.2.tgz", build_file_content = SCALA_BUILD_FILE, ) # scalatest has macros, note http_jar is invoking ijar native.http_jar( name = "scalatest", - url = "http://mirror.bazel.build/oss.sonatype.org/content/groups/public/org/scalatest/scalatest_2.11/2.2.6/scalatest_2.11-2.2.6.jar", - sha256 = "f198967436a5e7a69cfd182902adcfbcb9f2e41b349e1a5c8881a2407f615962", + url = "http://oss.sonatype.org/content/groups/public/org/scalatest/scalatest_2.12/3.0.3/scalatest_2.12-3.0.3.jar", + sha256 = "353f7c2bdde22c4286ee6a3ae0e425a9463b102f4c4cf76055a24f4666996762", ) native.maven_server( diff --git a/specs2/specs2.bzl b/specs2/specs2.bzl index bcdb5b89e..45c4558c5 100644 --- a/specs2/specs2.bzl +++ b/specs2/specs2.bzl @@ -4,36 +4,36 @@ def specs2_repositories(): native.maven_jar( name = "io_bazel_rules_scala_org_specs2_specs2_core", - artifact = "org.specs2:specs2-core_2.11:" + specs2_version(), - sha1 = "495bed00c73483f4f5f43945fde63c615d03e637", + artifact = "org.specs2:specs2-core_2.12:" + specs2_version(), + sha1 = "86cb72427e64e1423edcbf082e8767a60493bbcc", ) native.bind(name = 'io_bazel_rules_scala/dependency/specs2/specs2_core', actual = '@io_bazel_rules_scala_org_specs2_specs2_core//jar') native.maven_jar( name = "io_bazel_rules_scala_org_specs2_specs2_common", - artifact = "org.specs2:specs2-common_2.11:" + specs2_version(), - sha1 = "15bc009eaae3a574796c0f558d8696b57ae903c3", + artifact = "org.specs2:specs2-common_2.12:" + specs2_version(), + sha1 = "83bd14fb54f81a886901fa7ed136bcf887322440", ) native.bind(name = 'io_bazel_rules_scala/dependency/specs2/specs2_common', actual = '@io_bazel_rules_scala_org_specs2_specs2_common//jar') native.maven_jar( name = "io_bazel_rules_scala_org_specs2_specs2_matcher", - artifact = "org.specs2:specs2-matcher_2.11:" + specs2_version(), - sha1 = "d2e967737abef7421e47b8994a8c92784e624d62", + artifact = "org.specs2:specs2-matcher_2.12:" + specs2_version(), + sha1 = "921d9ef6bf98c3e5a59d535e1139b5522625d6ba", ) native.bind(name = 'io_bazel_rules_scala/dependency/specs2/specs2_matcher', actual = '@io_bazel_rules_scala_org_specs2_specs2_matcher//jar') native.maven_jar( name = "io_bazel_rules_scala_org_scalaz_scalaz_effect", - artifact = "org.scalaz:scalaz-effect_2.11:7.2.7", - sha1 = "824bbb83da12224b3537c354c51eb3da72c435b5", + artifact = "org.scalaz:scalaz-effect_2.12:7.2.7", + sha1 = "5d0bbd74323d8c7467cde95dcdc298eb3d9dcdb1", ) native.bind(name = 'io_bazel_rules_scala/dependency/scalaz/scalaz_effect', actual = '@io_bazel_rules_scala_org_scalaz_scalaz_effect//jar') native.maven_jar( name = "io_bazel_rules_scala_org_scalaz_scalaz_core", - artifact = "org.scalaz:scalaz-core_2.11:7.2.7", - sha1 = "ebf85118d0bf4ce18acebf1d8475ee7deb7f19f1", + artifact = "org.scalaz:scalaz-core_2.12:7.2.7", + sha1 = "ee06c07e856bad6ce112b2a5b96e1df1609ad57f", ) native.bind(name = 'io_bazel_rules_scala/dependency/scalaz/scalaz_core', actual = '@io_bazel_rules_scala_org_scalaz_scalaz_core//jar') diff --git a/specs2/specs2_junit.bzl b/specs2/specs2_junit.bzl index 4e545b9f6..6046f6c36 100644 --- a/specs2/specs2_junit.bzl +++ b/specs2/specs2_junit.bzl @@ -6,11 +6,11 @@ def specs2_junit_repositories(): junit_repositories() # Aditional dependencies for specs2 junit runner native.maven_jar( - name = "io_bazel_rules_scala_org_specs2_specs2_junit_2_11", - artifact = "org.specs2:specs2-junit_2.11:" + specs2_version(), - sha1 = "1dc9e43970557c308ee313842d84094bc6c1c1b5", + name = "io_bazel_rules_scala_org_specs2_specs2_junit_2_12", + artifact = "org.specs2:specs2-junit_2.12:" + specs2_version(), + sha1 = "aa6af850ccd428673add3840652cdd8e82791391", ) - native.bind(name = 'io_bazel_rules_scala/dependency/specs2/specs2_junit', actual = '@io_bazel_rules_scala_org_specs2_specs2_junit_2_11//jar') + native.bind(name = 'io_bazel_rules_scala/dependency/specs2/specs2_junit', actual = '@io_bazel_rules_scala_org_specs2_specs2_junit_2_12//jar') def specs2_junit_dependencies(): return specs2_dependencies() + ["//external:io_bazel_rules_scala/dependency/specs2/specs2_junit"] diff --git a/test/aspect/aspect.bzl b/test/aspect/aspect.bzl index 4b847d08f..1d9b61c24 100644 --- a/test/aspect/aspect.bzl +++ b/test/aspect/aspect.bzl @@ -52,7 +52,7 @@ def _rule_impl(ctx): "@scala//:scala-library", "@scala//:scala-reflect", # From specs2/specs2_junit.bzl:specs2_junit_dependencies() - "@io_bazel_rules_scala_org_specs2_specs2_junit_2_11//jar:jar", + "@io_bazel_rules_scala_org_specs2_specs2_junit_2_12//jar:jar", ], } content = "" diff --git a/tut_rule/tut.bzl b/tut_rule/tut.bzl index 421dec336..076d97ac4 100644 --- a/tut_rule/tut.bzl +++ b/tut_rule/tut.bzl @@ -8,8 +8,8 @@ def tut_repositories(): native.maven_jar( name = "io_bazel_rules_scala_org_tpolecat_tut_core", - artifact = "org.tpolecat:tut-core_2.11:0.4.8", - sha1 = "fc723eb822494580cc05d6b3b3a6039d2280a5a0", + artifact = "org.tpolecat:tut-core_2.12:0.4.8", + sha1 = "b68b5a52474bf249d1156f5002033498054b813c", server = "tut_repositories_maven_server", ) native.bind(name = 'io_bazel_rules_scala/dependency/tut/tut_core', actual = '@io_bazel_rules_scala_org_tpolecat_tut_core//jar') diff --git a/twitter_scrooge/twitter_scrooge.bzl b/twitter_scrooge/twitter_scrooge.bzl index 68fa1713b..e965c9f11 100644 --- a/twitter_scrooge/twitter_scrooge.bzl +++ b/twitter_scrooge/twitter_scrooge.bzl @@ -9,7 +9,7 @@ load("//scala:scala.bzl", def twitter_scrooge(): native.maven_server( name = "twitter_scrooge_maven_server", - url = "http://mirror.bazel.build/repo1.maven.org/maven2/", + url = "http://repo1.maven.org/maven2/", ) native.maven_jar( @@ -22,8 +22,8 @@ def twitter_scrooge(): native.maven_jar( name = "scrooge_core", - artifact = scala_mvn_artifact("com.twitter:scrooge-core:4.6.0"), - sha1 = "84b86c2e082aba6e0c780b3c76281703b891a2c8", + artifact = scala_mvn_artifact("com.twitter:scrooge-core:4.18.0"), + sha1 = "8a10e4da9fd636a8225a5068aa0b57072142a30b", server = "twitter_scrooge_maven_server", ) native.bind(name = 'io_bazel_rules_scala/dependency/thrift/scrooge_core', actual = '@scrooge_core//jar') @@ -31,24 +31,24 @@ def twitter_scrooge(): #scrooge-generator related dependencies native.maven_jar( name = "scrooge_generator", - artifact = scala_mvn_artifact("com.twitter:scrooge-generator:4.6.0"), - sha1 = "cacf72eedeb5309ca02b2d8325c587198ecaac82", + artifact = scala_mvn_artifact("com.twitter:scrooge-generator:4.18.0"), + sha1 = "d456f18b5c478b6356e2e09f4be4784cd4f05765", server = "twitter_scrooge_maven_server", ) native.bind(name = 'io_bazel_rules_scala/dependency/thrift/scrooge_generator', actual = '@scrooge_generator//jar') native.maven_jar( name = "util_core", - artifact = scala_mvn_artifact("com.twitter:util-core:6.33.0"), - sha1 = "bb49fa66a3ca9b7db8cd764d0b26ce498bbccc83", + artifact = scala_mvn_artifact("com.twitter:util-core:6.45.0"), + sha1 = "d7bbc819d90d06dfd4c76c25b82869b27048c886", server = "twitter_scrooge_maven_server", ) native.bind(name = 'io_bazel_rules_scala/dependency/thrift/util_core', actual = '@util_core//jar') native.maven_jar( name = "util_logging", - artifact = scala_mvn_artifact("com.twitter:util-logging:6.33.0"), - sha1 = "3d28e46f8ee3b7ad1b98a51b98089fc01c9755dd", + artifact = scala_mvn_artifact("com.twitter:util-logging:6.45.0"), + sha1 = "b83552e8980557b5dd767de40db1d44c3a39c400", server = "twitter_scrooge_maven_server", ) native.bind(name = 'io_bazel_rules_scala/dependency/thrift/util_logging', actual = '@util_logging//jar') From e4276a92b3310cea7759f8cb635cdf32914bcebb Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Wed, 12 Jul 2017 16:24:10 -0700 Subject: [PATCH 02/16] Fix incompatible scrooge api change. They swapped the logger interface and now there's a different went to silence the logging. --- src/scala/io/bazel/rules_scala/scrooge_support/Compiler.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/scala/io/bazel/rules_scala/scrooge_support/Compiler.scala b/src/scala/io/bazel/rules_scala/scrooge_support/Compiler.scala index 66849e5a8..db7b670ca 100644 --- a/src/scala/io/bazel/rules_scala/scrooge_support/Compiler.scala +++ b/src/scala/io/bazel/rules_scala/scrooge_support/Compiler.scala @@ -130,7 +130,7 @@ class Compiler { skipIncludes = false, documentCache ) - parser.logger.setLevel(Level.OFF) // scrooge warns on file names with "/" + parser.logger.setUseParentHandlers(false) // scrooge warns on file names with "/" val doc = parser.parseFile(inputFile).mapNamespaces(namespaceMappings.toMap) if (verbose) println("+ Compiling %s".format(inputFile)) From 30c0bdc97c625aeb0ccb0e2bc8f38202ec295861 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Wed, 12 Jul 2017 16:59:05 -0700 Subject: [PATCH 03/16] 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. --- scala/BUILD | 1 + scala/scala.bzl | 15 ++++++++++++++- test/aspect/aspect.bzl | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/scala/BUILD b/scala/BUILD index e69de29bb..4051c35b5 100644 --- a/scala/BUILD +++ b/scala/BUILD @@ -0,0 +1 @@ +java_library(name = "transitive_scalatest", exports = ["@scalatest//jar", "@scalactic//jar"]) diff --git a/scala/scala.bzl b/scala/scala.bzl index a59ed3758..f7bf6f5aa 100644 --- a/scala/scala.bzl +++ b/scala/scala.bzl @@ -996,6 +996,12 @@ java_import( jars = ["lib/scala-reflect.jar"], visibility = ["//visibility:public"], ) + +java_library( + name = "transitive_scalatest", + exports = ["@scalatest//jar", "@scalactic//jar"], + visibility = ["//visibility:public"], +) """ def scala_repositories(): @@ -1014,6 +1020,13 @@ def scala_repositories(): sha256 = "353f7c2bdde22c4286ee6a3ae0e425a9463b102f4c4cf76055a24f4666996762", ) + # scalatest has macros, note http_jar is invoking ijar + native.http_jar( + name = "scalactic", + url = "https://oss.sonatype.org/content/groups/public/org/scalactic/scalactic_2.12/3.0.3/scalactic_2.12-3.0.3.jar", + sha256 = "245ad1baab6661aee70c137c5e1625771c2624596b349b305801d94618673292", + ) + native.maven_server( name = "scalac_deps_maven_server", url = "http://mirror.bazel.build/repo1.maven.org/maven2/", @@ -1049,7 +1062,7 @@ def scala_repositories(): native.bind(name = "io_bazel_rules_scala/dependency/scala/scala_xml", actual = "@scala//:scala-xml") - native.bind(name = "io_bazel_rules_scala/dependency/scalatest/scalatest", actual = "@scalatest//jar") + native.bind(name = "io_bazel_rules_scala/dependency/scalatest/scalatest", actual = "@scala//:transitive_scalatest") def _sanitize_string_for_usage(s): res_array = [] diff --git a/test/aspect/aspect.bzl b/test/aspect/aspect.bzl index 1d9b61c24..9740ce513 100644 --- a/test/aspect/aspect.bzl +++ b/test/aspect/aspect.bzl @@ -28,7 +28,7 @@ def _rule_impl(ctx): "scala_test" : [ "//test/aspect:scala_test", "@scala//:scala-library", - "@scalatest//jar:jar", + "@scala//:transitive_scalatest", ], "scala_junit_test" : [ "//test/aspect:scala_junit_test", From c23c4227e823a5436bfa1a2a7480f246c9528591 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Fri, 8 Sep 2017 14:17:12 -0700 Subject: [PATCH 04/16] Add a missing dependency on util_core from scrooge rule Add a missing dependency on Twitter's util_core from scrooge rule --- twitter_scrooge/twitter_scrooge.bzl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/twitter_scrooge/twitter_scrooge.bzl b/twitter_scrooge/twitter_scrooge.bzl index e965c9f11..869e4be8d 100644 --- a/twitter_scrooge/twitter_scrooge.bzl +++ b/twitter_scrooge/twitter_scrooge.bzl @@ -260,11 +260,13 @@ def scrooge_scala_library(name, deps=[], remote_jars=[], jvm_flags=[], visibilit deps = deps + remote_jars + [ srcjar, "//external:io_bazel_rules_scala/dependency/thrift/libthrift", - "//external:io_bazel_rules_scala/dependency/thrift/scrooge_core" + "//external:io_bazel_rules_scala/dependency/thrift/scrooge_core", + "//external:io_bazel_rules_scala/dependency/thrift/util_core", ], exports = deps + remote_jars + [ "//external:io_bazel_rules_scala/dependency/thrift/libthrift", "//external:io_bazel_rules_scala/dependency/thrift/scrooge_core", + "//external:io_bazel_rules_scala/dependency/thrift/util_core", ], jvm_flags = jvm_flags, visibility = visibility, From 18c54ee1b1a20bb03d8483c321265a945f8f41e0 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Fri, 8 Sep 2017 14:20:28 -0700 Subject: [PATCH 05/16] Set -source 1.8 and -target 1.8 javac options This makes the code to compile again on my laptop. --- src/java/io/bazel/rulesscala/scalac/BUILD | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/java/io/bazel/rulesscala/scalac/BUILD b/src/java/io/bazel/rulesscala/scalac/BUILD index dee4fbb09..e56aebcc5 100644 --- a/src/java/io/bazel/rulesscala/scalac/BUILD +++ b/src/java/io/bazel/rulesscala/scalac/BUILD @@ -6,6 +6,12 @@ java_binary( "ScalacProcessor.java", ], main_class = "io.bazel.rulesscala.scalac.ScalaCInvoker", + # this probably should be set globally for the entire rules_scala + # but I don't know how to do it + javacopts = [ + "-source 1.8", + "-target 1.8" + ], visibility = ["//visibility:public"], deps = [ "//src/java/com/google/devtools/build/lib:worker", From bca505cf917b39a75f808d56afadf714a87b3a88 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Tue, 26 Sep 2017 23:03:40 -0700 Subject: [PATCH 06/16] Remove dropped args when calling java_common.create_provider The 031e73c02e0d8bfcd06c6e4086cdfc7f3a3061a8 restructured java_commmon rule and dropped both `transitive_compile_time_jars` and `transitive_runtime_jars` from that rule. Let's sync scala.bzl with that change. --- scala/scala.bzl | 4 ---- 1 file changed, 4 deletions(-) diff --git a/scala/scala.bzl b/scala/scala.bzl index 44f176d48..b05ccef4c 100644 --- a/scala/scala.bzl +++ b/scala/scala.bzl @@ -627,8 +627,6 @@ def _lib(ctx, non_macro_lib): java_provider = java_common.create_provider( compile_time_jars = scalaattr.compile_jars, runtime_jars = scalaattr.transitive_runtime_jars, - transitive_compile_time_jars = jars.transitive_compile_jars, - transitive_runtime_jars = scalaattr.transitive_runtime_jars, ) return struct( @@ -696,8 +694,6 @@ def _scala_binary_common(ctx, cjars, rjars, transitive_compile_time_jars, jars2l java_provider = java_common.create_provider( compile_time_jars = scalaattr.compile_jars, runtime_jars = scalaattr.transitive_runtime_jars, - transitive_compile_time_jars = transitive_compile_time_jars, - transitive_runtime_jars = scalaattr.transitive_runtime_jars, ) return struct( From 055b33e8c89ab68f80ffbba6363be64077b4b5e8 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Fri, 29 Sep 2017 15:14:11 -0700 Subject: [PATCH 07/16] Upgrade to Scala 2.12.3 --- WORKSPACE | 2 +- scala/scala.bzl | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/WORKSPACE b/WORKSPACE index e5fa2526c..7155db776 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -28,7 +28,7 @@ maven_jar( maven_jar( name = "org_typelevel__cats_core", artifact = scala_mvn_artifact("org.typelevel:cats-core:0.9.0"), - sha1 = "b2f8629c6ec834d8b6321288c9fe77823f1e1314" + sha1 = "267cebe07afbb365b08a6e18be4b137508f16bee" ) diff --git a/scala/scala.bzl b/scala/scala.bzl index b05ccef4c..5a89e47f7 100644 --- a/scala/scala.bzl +++ b/scala/scala.bzl @@ -995,7 +995,7 @@ java_import( java_import( name = "scala-parser-combinators", - jars = ["lib/scala-parser-combinators_2.12-1.0.5.jar"], + jars = ["lib/scala-parser-combinators_2.12-1.0.6.jar"], visibility = ["//visibility:public"], ) @@ -1027,9 +1027,9 @@ java_library( def scala_repositories(): native.new_http_archive( name = "scala", - strip_prefix = "scala-2.12.2", - sha256 = "196168b246fcf10e275491c5e58a50ca9eb696da95e49155b3f86f001346a6f5", - url = "https://downloads.lightbend.com/scala/2.12.2/scala-2.12.2.tgz", + strip_prefix = "scala-2.12.3", + sha256 = "2b796ab773fbedcc734ba881a6486d54180b699ade8ba7493e91912044267c8c", + url = "https://downloads.lightbend.com/scala/2.12.3/scala-2.12.3.tgz", build_file_content = SCALA_BUILD_FILE, ) From 55fd8078ea379bee466ce99adf9a599db2ba19a0 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Thu, 5 Oct 2017 10:09:41 -0700 Subject: [PATCH 08/16] Switch to Scala nightly build with classpath caching fix 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 https://github.com/bazelbuild/rules_scala/pull/251#issuecomment-333246940 for the details of the bug. --- scala/scala.bzl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scala/scala.bzl b/scala/scala.bzl index 5a89e47f7..878315b92 100644 --- a/scala/scala.bzl +++ b/scala/scala.bzl @@ -1027,9 +1027,9 @@ java_library( def scala_repositories(): native.new_http_archive( name = "scala", - strip_prefix = "scala-2.12.3", - sha256 = "2b796ab773fbedcc734ba881a6486d54180b699ade8ba7493e91912044267c8c", - url = "https://downloads.lightbend.com/scala/2.12.3/scala-2.12.3.tgz", + strip_prefix = "scala-2.12.4-bin-17496bd", + sha256 = "b01b4961ab74c6fec46ac783d2e28d350ced1d20d5d74f642c0b68903ab34798", + url = "http://www.scala-lang.org/files/archive/nightly/2.12.x/scala-2.12.4-bin-17496bd.tgz", build_file_content = SCALA_BUILD_FILE, ) From 31e8e1f75dee1dc6d0422d2e54ccc4722f6c9aac Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Wed, 11 Oct 2017 15:34:38 -0700 Subject: [PATCH 09/16] Crash jmh with an explanation why it doesn't work Link to an issue explaining the jmh failure is related to Java 8 and not directly caused by the Scala 2.12. --- .../io/bazel/rules_scala/jmh_support/BenchmarkGenerator.scala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/scala/io/bazel/rules_scala/jmh_support/BenchmarkGenerator.scala b/src/scala/io/bazel/rules_scala/jmh_support/BenchmarkGenerator.scala index 5cb56026e..86408f348 100644 --- a/src/scala/io/bazel/rules_scala/jmh_support/BenchmarkGenerator.scala +++ b/src/scala/io/bazel/rules_scala/jmh_support/BenchmarkGenerator.scala @@ -137,6 +137,9 @@ object BenchmarkGenerator { val generator = new JMHGenerator collectClassesFromJar(benchmarkJarPath).foreach { path => + // this would fail due to https://github.com/bazelbuild/rules_scala/issues/295 + // let's throw a useful message instead + sys.error("jmh in rules_scala doesn't work with Java 8 bytecode: https://github.com/bazelbuild/rules_scala/issues/295") source.processClass(Files.newInputStream(path)) } generator.generate(source, destination) From 5ef84d910964c26eab764c09199bbc45039e0a80 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Wed, 11 Oct 2017 15:47:33 -0700 Subject: [PATCH 10/16] Upgrade the hash of the nightly build For mysterious reasons, the hash has changed for a build that should be unique. A sign that relying on nightly builds is risky. Yolo for now, though. --- scala/scala.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scala/scala.bzl b/scala/scala.bzl index 76ad85dc8..2765eacbc 100644 --- a/scala/scala.bzl +++ b/scala/scala.bzl @@ -1024,7 +1024,7 @@ def scala_repositories(): native.new_http_archive( name = "scala", strip_prefix = "scala-2.12.4-bin-17496bd", - sha256 = "b01b4961ab74c6fec46ac783d2e28d350ced1d20d5d74f642c0b68903ab34798", + sha256 = "325c851f4de289f27544ff0bae2c888dd3e49345795fde0240ef17b7e304d852", url = "http://www.scala-lang.org/files/archive/nightly/2.12.x/scala-2.12.4-bin-17496bd.tgz", build_file_content = SCALA_BUILD_FILE, ) From 1c8cb77111507ffe8daa41a63fc203300c3cfbe6 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Wed, 11 Oct 2017 16:02:21 -0700 Subject: [PATCH 11/16] Revert "Switch to Scala nightly build with classpath caching fix" This reverts commit 55fd8078ea379bee466ce99adf9a599db2ba19a0. Switch back to 2.12.3 until 2.12.4 is released. This will make the testing easier for projects that rely on compiler plugins. --- scala/scala.bzl | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scala/scala.bzl b/scala/scala.bzl index 2765eacbc..61c633a4b 100644 --- a/scala/scala.bzl +++ b/scala/scala.bzl @@ -1023,9 +1023,9 @@ java_library( def scala_repositories(): native.new_http_archive( name = "scala", - strip_prefix = "scala-2.12.4-bin-17496bd", - sha256 = "325c851f4de289f27544ff0bae2c888dd3e49345795fde0240ef17b7e304d852", - url = "http://www.scala-lang.org/files/archive/nightly/2.12.x/scala-2.12.4-bin-17496bd.tgz", + strip_prefix = "scala-2.12.3", + sha256 = "2b796ab773fbedcc734ba881a6486d54180b699ade8ba7493e91912044267c8c", + url = "https://downloads.lightbend.com/scala/2.12.3/scala-2.12.3.tgz", build_file_content = SCALA_BUILD_FILE, ) From f903c9d514d59e84211cc5dc4fa404e63001f804 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Wed, 11 Oct 2017 16:30:40 -0700 Subject: [PATCH 12/16] Disable jmh test See https://github.com/bazelbuild/rules_scala/issues/295 for why it's failing. --- test/jmh/BUILD | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/jmh/BUILD b/test/jmh/BUILD index 1c402f9c2..bf4556866 100644 --- a/test/jmh/BUILD +++ b/test/jmh/BUILD @@ -20,8 +20,9 @@ scala_library( visibility = ["//visibility:public"], ) -scala_benchmark_jmh( - name = "test_benchmark", - srcs = ["TestBenchmark.scala"], - deps = [":add_numbers"], -) +# Disable the jmh test due to https://github.com/bazelbuild/rules_scala/issues/295 +# scala_benchmark_jmh( +# name = "test_benchmark", +# srcs = ["TestBenchmark.scala"], +# deps = [":add_numbers"], +# ) From 4e266fc3e6cb0a1be445e3e6baa97dd81d25ed8c Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Thu, 12 Oct 2017 14:55:02 -0700 Subject: [PATCH 13/16] Switch back to bazel maven mirror Not sure why I switched to the main one in the first place. --- twitter_scrooge/twitter_scrooge.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter_scrooge/twitter_scrooge.bzl b/twitter_scrooge/twitter_scrooge.bzl index 762144771..98d2b0d89 100644 --- a/twitter_scrooge/twitter_scrooge.bzl +++ b/twitter_scrooge/twitter_scrooge.bzl @@ -9,7 +9,7 @@ load("//scala:scala.bzl", def twitter_scrooge(): native.maven_server( name = "twitter_scrooge_maven_server", - url = "http://repo1.maven.org/maven2/", + url = "http://mirror.bazel.build/repo1.maven.org/maven2/", ) native.maven_jar( From f882de2cc0792f5bafdf70621ea759dd4a84d2a0 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Thu, 12 Oct 2017 15:41:18 -0700 Subject: [PATCH 14/16] Revert "Switch back to bazel maven mirror" This reverts commit 4e266fc3e6cb0a1be445e3e6baa97dd81d25ed8c. It turns out, the bazel mirror is not great for us because it misses some artifacts: ERROR: /Users/gkk/stripe/rules_scala/twitter_scrooge/twitter_scrooge.bzl:46:3: no such package '@util_core//jar': Failed to fetch Maven dependency: Could not transfer artifact com.twitter:util-core_2.12:jar:6.45.0 from/to util_core (http://mirror.bazel.build/repo1.maven.org/maven2/): Forbidden (403) and referenced by '//external:io_bazel_rules_scala/dependency/thrift/util_core'. --- twitter_scrooge/twitter_scrooge.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/twitter_scrooge/twitter_scrooge.bzl b/twitter_scrooge/twitter_scrooge.bzl index 98d2b0d89..762144771 100644 --- a/twitter_scrooge/twitter_scrooge.bzl +++ b/twitter_scrooge/twitter_scrooge.bzl @@ -9,7 +9,7 @@ load("//scala:scala.bzl", def twitter_scrooge(): native.maven_server( name = "twitter_scrooge_maven_server", - url = "http://mirror.bazel.build/repo1.maven.org/maven2/", + url = "http://repo1.maven.org/maven2/", ) native.maven_jar( From 7011a695dd2215941937f7688accc8e21ac02951 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Thu, 12 Oct 2017 16:06:55 -0700 Subject: [PATCH 15/16] Append YdisableFlatCpCaching to scalacopts by default Append the `YdisableFlatCpCaching` compiler option by default as a workaround to https://github.com/bazelbuild/rules_scala/issues/305 --- scala/scala.bzl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scala/scala.bzl b/scala/scala.bzl index 61c633a4b..2f0caebdd 100644 --- a/scala/scala.bzl +++ b/scala/scala.bzl @@ -204,7 +204,10 @@ DependencyAnalyzerMode: {dependency_analyzer_mode} """.format( out=ctx.outputs.jar.path, manifest=ctx.outputs.manifest.path, - scala_opts=",".join(ctx.attr.scalacopts), + # always append -YdisableFlatCpCaching, workaround for + # https://github.com/bazelbuild/rules_scala/issues/305 + # remove once we upgrade to Scala 2.12.4 + scala_opts=",".join(ctx.attr.scalacopts + ["-YdisableFlatCpCaching"]), print_compile_time=ctx.attr.print_compile_time, plugin_arg=plugin_arg, cp=compiler_classpath, From a8469d3a359b566b52ffae00b91c372d987f42e8 Mon Sep 17 00:00:00 2001 From: Grzegorz Kossakowski Date: Fri, 13 Oct 2017 12:34:43 -0700 Subject: [PATCH 16/16] Disable the jmh test in test_run.sh The target is already commented out in BUILD file, but test_run.sh still tries to run it. --- test_run.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test_run.sh b/test_run.sh index e5bc24f01..2f2fe9e60 100755 --- a/test_run.sh +++ b/test_run.sh @@ -551,7 +551,8 @@ $runner test_transitive_deps $runner test_scala_library_suite $runner test_repl $runner bazel run test:JavaOnlySources -$runner test_benchmark_jmh +# Disable the jmh test due to https://github.com/bazelbuild/rules_scala/issues/295 +# $runner test_benchmark_jmh $runner multiple_junit_suffixes $runner multiple_junit_prefixes $runner test_scala_junit_test_can_fail