From 71beb4124b33724b18fffef1e4da74d23fcf85b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Raddum=20Berg?= Date: Sat, 22 Jan 2022 00:16:41 +0100 Subject: [PATCH] Continue if `bloopGenerate` fails for a project I'm in a situation where I want to generate bloop files for all projects for all scala variants. Unfortunately, if we have the following project graph ``` lazy val a = project.settings(crossScalaVersions := List("2.13.0", "3.0.0")) lazy val b = project.settings(crossScalaVersions := List("2.13.0")).dependsOn(a) ``` and then `+bloopInstall` may fail for `b` when generating for scala `3.0.0`, because it'll then use the `3.0.0` version of `a` and `2.13.0` of `b`. I have seen errors like this: ``` [error] Modules were resolved with conflicting cross-version suffixes in ProjectRef...: [error] org.scala-lang.modules:scala-collection-compat _3, _2.13 [error] com.lihaoyi:sourcecode _2.13, _3 [error] org.typelevel:simulacrum-scalafix-annotations _2.13, _3 [error] org.typelevel:cats-kernel _2.13, _3 [error] com.lihaoyi:fansi _3, _2.13 [error] org.typelevel:cats-core _2.13, _3 ``` --- .../main/scala/bloop/integrations/sbt/SbtBloop.scala | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/integrations/sbt-bloop/src/main/scala/bloop/integrations/sbt/SbtBloop.scala b/integrations/sbt-bloop/src/main/scala/bloop/integrations/sbt/SbtBloop.scala index dda8e5e76c..b1b3d5c371 100644 --- a/integrations/sbt-bloop/src/main/scala/bloop/integrations/sbt/SbtBloop.scala +++ b/integrations/sbt-bloop/src/main/scala/bloop/integrations/sbt/SbtBloop.scala @@ -16,6 +16,7 @@ import sbt.{ Def, File, Global, + Inc, Keys, LocalRootProject, Logger, @@ -27,7 +28,8 @@ import sbt.{ ThisProject, KeyRanks, Optional, - Provided + Provided, + Value } import xsbti.compile.CompileOrder @@ -1051,6 +1053,12 @@ object BloopDefaults { logger.success(s"Generated $userFriendlyConfigPath") Some(outFile) } + }.result.map { + case Inc(_) => + logger.error(s"Couldn't run bloopGenerate for $projectName") + None + case Value(maybeFile) => + maybeFile } }