diff --git a/.bazelrc b/.bazelrc
index c433651c2..888a22617 100644
--- a/.bazelrc
+++ b/.bazelrc
@@ -1,3 +1,2 @@
common --config=rules
-common:v2.2 --config=rules_v2.2
import %workspace%/.bazelrc_shared
diff --git a/.bazelrc_shared b/.bazelrc_shared
index 3d0d7e82a..535ef2f73 100644
--- a/.bazelrc_shared
+++ b/.bazelrc_shared
@@ -14,16 +14,15 @@ test --test_output=all
build:rules --disk_cache=.bazel_cache
build:tests --disk_cache=../.bazel_cache
-# bazel 2.2.0
-common:rules_v2.1 --config=noop
-common:rules_v2.2 --config=noop
+common:rules_v3.2 --config=noop
+common:rules_v3.3 --config=noop
# route potentially unrouted configs to a terminating noop config
# it's a noop because we use the default value
common:rules --config=noop
common:tests --config=noop
-common:v2.1 --config=rules_v2.1
-common:v2.2 --config=rules_v2.2
+common:v3.2 --config=rules_v3.2
+common:v3.3 --config=rules_v3.3
# pick something trivial as a "noop"
common:noop --logging=3
diff --git a/.travis.yml b/.travis.yml
index 514077d82..c8584c933 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -28,36 +28,36 @@ jobs:
# Build
- stage: build
<<: *osx
- env: BAZEL_VERSION=2.1.0
+ env: BAZEL_VERSION=3.2.0
script: ./scripts/travis.sh build
- <<: *linux
- env: BAZEL_VERSION=2.1.0
+ env: BAZEL_VERSION=3.2.0
script: ./scripts/travis.sh build
- <<: *osx
- env: BAZEL_VERSION=2.2.0
+ env: BAZEL_VERSION=3.3.0
script: ./scripts/travis.sh build
- <<: *linux
- env: BAZEL_VERSION=2.2.0
+ env: BAZEL_VERSION=3.3.0
script: ./scripts/travis.sh build
# Lint
- stage: lint
<<: *osx
- env: BAZEL_VERSION=2.1.0
+ env: BAZEL_VERSION=3.2.0
script: ./scripts/travis.sh lint
- <<: *linux
- env: BAZEL_VERSION=2.2.0
+ env: BAZEL_VERSION=3.3.0
script: ./scripts/travis.sh lint
# Test
- stage: test
<<: *osx
- env: BAZEL_VERSION=2.1.0
+ env: BAZEL_VERSION=3.2.0
script: ./scripts/travis.sh test
- <<: *linux
- env: BAZEL_VERSION=2.1.0
+ env: BAZEL_VERSION=3.2.0
script: ./scripts/travis.sh test
- <<: *osx
- env: BAZEL_VERSION=2.2.0
+ env: BAZEL_VERSION=3.3.0
script: ./scripts/travis.sh test
- <<: *linux
- env: BAZEL_VERSION=2.2.0
+ env: BAZEL_VERSION=3.3.0
script: ./scripts/travis.sh test
diff --git a/docs/stardoc/scala.md b/docs/stardoc/scala.md
index c85daa1fc..023561d3a 100644
--- a/docs/stardoc/scala.md
+++ b/docs/stardoc/scala.md
@@ -72,7 +72,7 @@ configure_bootstrap_scala(name,
-scala_binary(name, data, deps, deps_used_whitelist, javacopts, jvm_flags, main_class, plugins, resource_jars, resource_strip_prefix, resources, runtime_deps, scala, scalacopts, srcs)
+scala_binary(name, data, deps, deps_unused_whitelist, deps_used_whitelist, javacopts, jvm_flags, main_class, plugins, resource_jars, resource_strip_prefix, resources, runtime_deps, scala, scalacopts, srcs)
@@ -122,6 +122,15 @@ To run the program: `bazel run `
+
+ deps_unused_whitelist |
+
+ List of labels; optional
+
+ The JVM library dependencies to always consider unused for `scala_deps_direct` checks.
+
+ |
+
deps_used_whitelist |
@@ -311,7 +320,7 @@ Use this only for libraries with macros. Otherwise, use `java_import`.
## scala_library
-scala_library(name, data, deps, deps_used_whitelist, exports, javacopts, macro, neverlink, plugins, resource_jars, resource_strip_prefix, resources, runtime_deps, scala, scalacopts, srcs)
+scala_library(name, data, deps, deps_unused_whitelist, deps_used_whitelist, exports, javacopts, macro, neverlink, plugins, resource_jars, resource_strip_prefix, resources, runtime_deps, scala, scalacopts, srcs)
Compiles a Scala JVM library.
@@ -351,6 +360,15 @@ Compiles a Scala JVM library.
|
+
+ deps_unused_whitelist |
+
+ List of labels; optional
+
+ The JVM library dependencies to always consider unused for `scala_deps_direct` checks.
+
+ |
+
deps_used_whitelist |
@@ -555,7 +573,7 @@ To run: `bazel run `
## scala_test
-scala_test(name, data, deps, deps_used_whitelist, frameworks, isolation, javacopts, jvm_flags, plugins, resource_jars, resource_strip_prefix, resources, runner, runtime_deps, scala, scalacopts, shared_deps, srcs, subprocess_runner)
+scala_test(name, data, deps, deps_unused_whitelist, deps_used_whitelist, frameworks, isolation, javacopts, jvm_flags, plugins, resource_jars, resource_strip_prefix, resources, runner, runtime_deps, scala, scalacopts, shared_deps, srcs, subprocess_runner)
@@ -604,6 +622,15 @@ To build and run a specific test: `bazel test --test_filter=
|
+
+ deps_unused_whitelist |
+
+ List of labels; optional
+
+ The JVM library dependencies to always consider unused for `scala_deps_direct` checks.
+
+ |
+
deps_used_whitelist |
diff --git a/docs/stardoc/scala_with_scalafmt.md b/docs/stardoc/scala_with_scalafmt.md
index 22fc91d4b..9f8a81b32 100644
--- a/docs/stardoc/scala_with_scalafmt.md
+++ b/docs/stardoc/scala_with_scalafmt.md
@@ -5,7 +5,7 @@
## scala_binary
-scala_binary(name, config, data, deps, deps_used_whitelist, format, javacopts, jvm_flags, main_class, plugins, resource_jars, resource_strip_prefix, resources, runtime_deps, scala, scalacopts, srcs)
+scala_binary(name, config, data, deps, deps_unused_whitelist, deps_used_whitelist, format, javacopts, jvm_flags, main_class, plugins, resource_jars, resource_strip_prefix, resources, runtime_deps, scala, scalacopts, srcs)
@@ -64,6 +64,15 @@ To run the program: `bazel run `
|
+
+ deps_unused_whitelist |
+
+ List of labels; optional
+
+ The JVM library dependencies to always consider unused for `scala_deps_direct` checks.
+
+ |
+
deps_used_whitelist |
@@ -188,7 +197,7 @@ To run the program: `bazel run `
## scala_library
-scala_library(name, config, data, deps, deps_used_whitelist, exports, format, javacopts, macro, neverlink, plugins, resource_jars, resource_strip_prefix, resources, runtime_deps, scala, scalacopts, srcs)
+scala_library(name, config, data, deps, deps_unused_whitelist, deps_used_whitelist, exports, format, javacopts, macro, neverlink, plugins, resource_jars, resource_strip_prefix, resources, runtime_deps, scala, scalacopts, srcs)
Compiles a Scala JVM library.
@@ -237,6 +246,15 @@ Compiles a Scala JVM library.
|
+
+ deps_unused_whitelist |
+
+ List of labels; optional
+
+ The JVM library dependencies to always consider unused for `scala_deps_direct` checks.
+
+ |
+
deps_used_whitelist |
@@ -370,7 +388,7 @@ Compiles a Scala JVM library.
## scala_test
-scala_test(name, config, data, deps, deps_used_whitelist, format, frameworks, isolation, javacopts, jvm_flags, plugins, resource_jars, resource_strip_prefix, resources, runner, runtime_deps, scala, scalacopts, shared_deps, srcs, subprocess_runner)
+scala_test(name, config, data, deps, deps_unused_whitelist, deps_used_whitelist, format, frameworks, isolation, javacopts, jvm_flags, plugins, resource_jars, resource_strip_prefix, resources, runner, runtime_deps, scala, scalacopts, shared_deps, srcs, subprocess_runner)
@@ -428,6 +446,15 @@ To build and run a specific test: `bazel test --test_filter=
|
+
+ deps_unused_whitelist |
+
+ List of labels; optional
+
+ The JVM library dependencies to always consider unused for `scala_deps_direct` checks.
+
+ |
+
deps_used_whitelist |
diff --git a/rules/external/third_party/bazel/tools/build_defs/repo/java.bzl b/rules/external/third_party/bazel/tools/build_defs/repo/java.bzl
index a444e421f..9f93c2772 100644
--- a/rules/external/third_party/bazel/tools/build_defs/repo/java.bzl
+++ b/rules/external/third_party/bazel/tools/build_defs/repo/java.bzl
@@ -26,7 +26,7 @@ These import rules must have the following attributes:
- "runtime_deps"
- "exports"
-the code here is solely based on `jave_import_external` from bazelbuild/bazel repository and is proposed to be upstreamed back.
+the code here is solely based on `java_import_external` from bazelbuild/bazel repository and is proposed to be upstreamed back.
the following macros are defined below that utilize jvm_import_external:
diff --git a/rules/private/phases/phase_zinc_compile.bzl b/rules/private/phases/phase_zinc_compile.bzl
index 7d1b57016..c53272501 100644
--- a/rules/private/phases/phase_zinc_compile.bzl
+++ b/rules/private/phases/phase_zinc_compile.bzl
@@ -89,6 +89,7 @@ def phase_zinc_compile(ctx, g):
executable = worker.files_to_run.executable,
input_manifests = input_manifests,
execution_requirements = _resolve_execution_reqs(ctx, {"no-sandbox": "1", "supports-workers": "1"}),
+ use_default_shell_env = True,
arguments = [args],
)
@@ -104,7 +105,7 @@ def phase_zinc_compile(ctx, g):
deps = depset(
[struct(
apis = apis,
- jars = jars,
+ jars = tuple(jars),
label = ctx.label,
relations = relations,
)],
diff --git a/rules/private/phases/phase_zinc_depscheck.bzl b/rules/private/phases/phase_zinc_depscheck.bzl
index f68db0719..c611220a4 100644
--- a/rules/private/phases/phase_zinc_depscheck.bzl
+++ b/rules/private/phases/phase_zinc_depscheck.bzl
@@ -31,7 +31,8 @@ def phase_zinc_depscheck(ctx, g):
deps_args.add_all("--direct", [dep.label for dep in ctx.attr.deps], format_each = "_%s")
deps_args.add_all(labeled_jars, map_each = _depscheck_labeled_group)
deps_args.add("--label", ctx.label, format = "_%s")
- deps_args.add_all("--whitelist", [dep.label for dep in ctx.attr.deps_used_whitelist], format_each = "_%s")
+ deps_args.add_all("--used_whitelist", [dep.label for dep in ctx.attr.deps_used_whitelist], format_each = "_%s")
+ deps_args.add_all("--unused_whitelist", [dep.label for dep in ctx.attr.deps_unused_whitelist], format_each = "_%s")
deps_args.add("--")
deps_args.add(g.compile.used)
deps_args.add(deps_check)
@@ -44,6 +45,7 @@ def phase_zinc_depscheck(ctx, g):
executable = deps_configuration.worker.files_to_run.executable,
input_manifests = worker_input_manifests,
execution_requirements = _resolve_execution_reqs(ctx, {"supports-workers": "1"}),
+ use_default_shell_env = True,
arguments = [deps_args],
)
deps_checks[name] = deps_check
diff --git a/rules/scala.bzl b/rules/scala.bzl
index 01c68ced4..4dff32b2c 100644
--- a/rules/scala.bzl
+++ b/rules/scala.bzl
@@ -107,6 +107,10 @@ _compile_attributes = {
doc = "The JVM library dependencies to always consider used for `scala_deps_used` checks.",
providers = [JavaInfo],
),
+ "deps_unused_whitelist": attr.label_list(
+ doc = "The JVM library dependencies to always consider unused for `scala_deps_direct` checks.",
+ providers = [JavaInfo],
+ ),
"runtime_deps": attr.label_list(
doc = "The JVM runtime-only library dependencies.",
providers = [JavaInfo],
diff --git a/rules/scala/workspace.bzl b/rules/scala/workspace.bzl
index 2327c75ae..de6e2515f 100644
--- a/rules/scala/workspace.bzl
+++ b/rules/scala/workspace.bzl
@@ -21,12 +21,12 @@ def scala_artifacts():
"org.scala-sbt:util-interface:1.3.0",
"org.scala-sbt:util-logging_2.12:1.3.0",
"org.scala-sbt:compiler-interface:1.3.4",
- "org.scala-sbt:zinc-compile-core_2.12:1.3.4",
- "org.scala-sbt:zinc_2.12:1.3.4",
- "org.scala-sbt:zinc-persist_2.12:1.3.4",
- "org.scala-sbt:zinc-core_2.12:1.3.4",
- "org.scala-sbt:zinc-apiinfo_2.12:1.3.4",
- "org.scala-sbt:zinc-classpath_2.12:1.3.4",
+ "org.scala-sbt:zinc-compile-core_2.12:1.4.0",
+ "org.scala-sbt:zinc_2.12:1.4.0",
+ "org.scala-sbt:zinc-persist_2.12:1.4.0",
+ "org.scala-sbt:zinc-core_2.12:1.4.0",
+ "org.scala-sbt:zinc-apiinfo_2.12:1.4.0",
+ "org.scala-sbt:zinc-classpath_2.12:1.4.0",
"ch.epfl.scala:bloop-frontend_2.12:1.0.0",
"com.thesamet.scalapb:scalapb-runtime_2.12:0.9.0",
]
diff --git a/rules/scalafmt/scalafmt/ScalafmtRunner.scala b/rules/scalafmt/scalafmt/ScalafmtRunner.scala
index 3755fb4d8..ac33064bd 100644
--- a/rules/scalafmt/scalafmt/ScalafmtRunner.scala
+++ b/rules/scalafmt/scalafmt/ScalafmtRunner.scala
@@ -39,9 +39,14 @@ object ScalafmtRunner extends WorkerMain[Unit] {
format(source)
} catch {
case e @ (_: org.scalafmt.Error | _: scala.meta.parsers.ParseException) => {
- System.err.println(Color.Warning("Unable to format file due to bug in scalafmt"))
- System.err.println(Color.Warning(e.toString))
- source
+ if (config.runner.fatalWarnings) {
+ System.err.println(Color.Error("Exception thrown by Scalafmt and fatalWarnings is enabled"))
+ throw e
+ } else {
+ System.err.println(Color.Warning("Unable to format file due to bug in scalafmt"))
+ System.err.println(Color.Warning(e.toString))
+ source
+ }
}
}
diff --git a/src/main/scala/higherkindness/rules_scala/workers/deps/DepsRunner.scala b/src/main/scala/higherkindness/rules_scala/workers/deps/DepsRunner.scala
index 12970919f..23b4319f2 100644
--- a/src/main/scala/higherkindness/rules_scala/workers/deps/DepsRunner.scala
+++ b/src/main/scala/higherkindness/rules_scala/workers/deps/DepsRunner.scala
@@ -30,11 +30,17 @@ object DepsRunner extends WorkerMain[Unit] {
.nargs("+")
parser.addArgument("--label").help("Label of current target").metavar("label").required(true)
parser
- .addArgument("--whitelist")
+ .addArgument("--used_whitelist")
.help("Whitelist of labels to ignore for unused deps")
.metavar("label")
.nargs("*")
.setDefault_(Collections.emptyList)
+ parser
+ .addArgument("--unused_whitelist")
+ .help("Whitelist of labels to ignore for direct deps")
+ .metavar("label")
+ .nargs("*")
+ .setDefault_(Collections.emptyList)
parser.addArgument("used").help("Manifest of used").`type`(Arguments.fileType.verifyCanRead().verifyIsFile())
parser.addArgument("success").help("Success file").`type`(Arguments.fileType.verifyCanCreate())
parser
@@ -54,8 +60,8 @@ object DepsRunner extends WorkerMain[Unit] {
val usedPaths = Files.readAllLines(namespace.get[File]("used").toPath).asScala.toSet
val remove = if (namespace.getBoolean("check_used") == true) {
- val whitelist = namespace.getList[String]("whitelist").asScala.map(_.tail)
- (directLabels -- whitelist).filterNot(labelToPaths(_).exists(usedPaths))
+ val usedWhitelist = namespace.getList[String]("used_whitelist").asScala.map(_.tail)
+ (directLabels -- usedWhitelist).filterNot(labelToPaths(_).exists(usedPaths))
} else Nil
remove.foreach { depLabel =>
println(s"Target '$depLabel' not used, please remove it from the deps.")
@@ -64,7 +70,8 @@ object DepsRunner extends WorkerMain[Unit] {
}
val add = if (namespace.getBoolean("check_direct") == true) {
- (usedPaths -- directLabels.flatMap(labelToPaths))
+ val unusedWhitelist = namespace.getList[String]("unused_whitelist").asScala.map(_.tail)
+ (usedPaths -- (directLabels ++ unusedWhitelist).flatMap(labelToPaths))
.flatMap(path =>
groups.collectFirst { case (label, paths) if paths(path) => label }.orElse {
System.err.println(s"Warning: There is a reference to $path, but no dependency of $label provides it")
diff --git a/tests/dependencies/unused/BUILD b/tests/dependencies/unused/BUILD
index 21683ed4a..262843c52 100644
--- a/tests/dependencies/unused/BUILD
+++ b/tests/dependencies/unused/BUILD
@@ -20,6 +20,19 @@ scala_library(
],
)
+scala_library(
+ name = "0_unused_whitelist",
+ srcs = ["0_unused.scala"],
+ deps_used_whitelist = [
+ "@annex_test//:org_scalacheck_scalacheck_2_12",
+ ],
+ scala = "//scala:2_12",
+ tags = ["manual"],
+ deps = [
+ "@annex_test//:org_scalacheck_scalacheck_2_12",
+ ],
+)
+
scala_library(
name = "indirect_unused",
srcs = ["indirect_unused.scala"],
@@ -31,3 +44,28 @@ scala_library(
"@annex_test//:org_specs2_specs2_matcher_2_12",
],
)
+
+scala_library(
+ name = "indirect_unused_missing",
+ srcs = ["indirect_unused.scala"],
+ scala = "//scala:2_12",
+ tags = ["manual"],
+ deps = [
+ "@annex_test//:org_specs2_specs2_common_2_12",
+ "@annex_test//:org_specs2_specs2_core_2_12",
+ ],
+)
+
+scala_library(
+ name = "indirect_unused_whitelist",
+ srcs = ["indirect_unused.scala"],
+ deps_unused_whitelist = [
+ "@annex_test//:org_specs2_specs2_matcher_2_12",
+ ],
+ scala = "//scala:2_12",
+ tags = ["manual"],
+ deps = [
+ "@annex_test//:org_specs2_specs2_common_2_12",
+ "@annex_test//:org_specs2_specs2_core_2_12",
+ ],
+)
diff --git a/tests/dependencies/unused/test b/tests/dependencies/unused/test
index 053439628..86fa95fc0 100755
--- a/tests/dependencies/unused/test
+++ b/tests/dependencies/unused/test
@@ -4,4 +4,8 @@
bazel build :0_used
! bazel build :0_unused || false
bazel build :0_unused |& grep "buildozer 'remove deps @annex_test//:org_scalacheck_scalacheck_2_12' //dependencies/unused:0_unused"
+bazel build :0_unused_whitelist
bazel build :indirect_unused
+! bazel build :indirect_unused_missing || false
+bazel build :indirect_unused_missing |& grep "buildozer 'add deps @annex_test//:org_specs2_specs2_matcher_2_12' //dependencies/unused:indirect_unused_missing"
+bazel build :indirect_unused_whitelist
diff --git a/tools/bazel b/tools/bazel
index 2c261caaf..a4541b354 100755
--- a/tools/bazel
+++ b/tools/bazel
@@ -15,7 +15,7 @@ abs_path() {
workspace=$(cd $(dirname "$0")/..; pwd)
root_workspace=$(cd $(dirname $(abs_path "$0"))/..; pwd)
-default_bazel_version='2.2.0'
+default_bazel_version='3.3.0'
if [ -z "$BAZEL_VERSION" ]; then
bazel_version="$default_bazel_version"
@@ -28,13 +28,13 @@ case "$bazel_version" in
bazel_version=$("$BAZEL_REAL" version | awk '/Build label/ {print $3}' | cut -d '-' -f 1)
bazel="$BAZEL_REAL"
;;
- '2.1.0')
- darwin_sha='0be7e8266523922ab63720775a6e4174468bd617e016e89d726a0f3441c46396'
- linux_sha='501c5a48bf6e4d836ecfe27f471bfbab029d2bf0cf62e69a0320f0dc576be56a'
+ '3.2.0')
+ darwin_sha='0a9379a835a63186220e7dfc160be8971f03b9892bd0c3de6971c521138a1e28'
+ linux_sha='27d0b65201bc1936ea40eae149b19353e95d9a3b5e2a7d9dd3b4e12665534b0a'
;;
- '2.2.0')
- darwin_sha='8a0238c126d086f3641efda177fa8fc1e85ba09c2af10c0977f14b202a9e7a5a'
- linux_sha='6dfcd3b3d7a8811f53a1776c285cf533bc12c33d1eaf49b6105e9699df26ef57'
+ '3.3.0')
+ darwin_sha='fb340fc910630ec2825ef35d7a385726b515e96f80cd52b4cf8e9d4df01f7bae'
+ linux_sha='1ec706d44d5980b27988601bbac8aa3028488ea136a958d0f57086aa1214ca41'
;;
*)
echo "The requested Bazel version '$bazel_version' is not supported"
|