diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 97bce5bf5..b9eb595c6 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -471,13 +471,6 @@ object Defaults extends BuildCommon { // This is included into JvmPlugin.projectSettings def compileBase = inTask(console)(compilersSetting :: Nil) ++ compileBaseGlobal ++ Seq( - incOptions := incOptions.value - .withClassfileManagerType( - Option( - TransactionalManagerType - .of(crossTarget.value / "classes.bak", sbt.util.Logger.Null): ClassFileManagerType - ).toOptional - ), scalaInstance := scalaInstanceTask.value, crossVersion := (if (crossPaths.value) CrossVersion.binary else CrossVersion.disabled), sbtBinaryVersion in pluginCrossBuild := binarySbtVersion( @@ -657,7 +650,20 @@ object Defaults extends BuildCommon { prev + (version -> (dependencyClasspathFiles / outputFileStamps).value) }, compileBinaryFileInputs := compileBinaryFileInputs.triggeredBy(compile).value, - incOptions := { incOptions.value.withExternalHooks(externalHooks.value) }, + incOptions := { + val old = incOptions.value + old + .withExternalHooks(externalHooks.value) + .withClassfileManagerType( + Option( + TransactionalManagerType + .of( // https://github.com/sbt/sbt/issues/1673 + crossTarget.value / s"${prefix(configuration.value.name)}classes.bak", + sbt.util.Logger.Null + ): ClassFileManagerType + ).toOptional + ) + }, compileIncSetup := compileIncSetupTask.value, console := consoleTask.value, collectAnalyses := Definition.collectAnalysesTask.map(_ => ()).value, diff --git a/sbt/src/sbt-test/tests/bak/build.sbt b/sbt/src/sbt-test/tests/bak/build.sbt new file mode 100644 index 000000000..40b598c48 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/build.sbt @@ -0,0 +1,45 @@ +// https://github.com/sbt/sbt/issues/1673#issuecomment-537327439 + +val Config_0 = config("config-0").extend(Compile) +val Config_1 = config("config-1").extend(Compile) +val Config_2 = config("config-2").extend(Compile) +val Config_3 = config("config-3").extend(Compile) +val Config_4 = config("config-4").extend(Compile) +val Config_5 = config("config-5").extend(Compile) +val Config_6 = config("config-6").extend(Compile) +val Config_7 = config("config-7").extend(Compile) +val Config_8 = config("config-8").extend(Compile) +val Config_9 = config("config-9").extend(Compile) +val Config_10 = config("config-10").extend(Compile) +val Config_11 = config("config-11").extend(Compile) +val Config_12 = config("config-12").extend(Compile) +val Config_13 = config("config-13").extend(Compile) +val Config_14 = config("config-14").extend(Compile) +val Config_15 = config("config-15").extend(Compile) + +val CustomConfigs = List(Config_0, Config_1, Config_2, Config_3, Config_4, Config_5, Config_6, Config_7, Config_8, Config_9, Config_10, Config_11, Config_12, Config_13, Config_14, Config_15) + +val t = taskKey[Unit]("") +val p1 = project + .configs(CustomConfigs: _*) + .settings( + t := { + (compile in Config_0).value + (compile in Config_1).value + (compile in Config_2).value + (compile in Config_3).value + (compile in Config_4).value + (compile in Config_5).value + (compile in Config_6).value + (compile in Config_7).value + (compile in Config_8).value + (compile in Config_9).value + (compile in Config_10).value + (compile in Config_11).value + (compile in Config_12).value + (compile in Config_13).value + (compile in Config_14).value + (compile in Config_15).value + } + ) + .settings(CustomConfigs.flatMap(c => inConfig(c)(Defaults.testSettings))) diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-0/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-0/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-0/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-1/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-1/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-1/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-10/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-10/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-10/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-11/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-11/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-11/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-12/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-12/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-12/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-13/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-13/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-13/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-14/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-14/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-14/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-15/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-15/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-15/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-2/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-2/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-2/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-3/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-3/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-3/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-4/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-4/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-4/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-5/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-5/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-5/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-6/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-6/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-6/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-7/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-7/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-7/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-8/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-8/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-8/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/config-9/scala/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/config-9/scala/A.scala new file mode 100644 index 000000000..3e19b86a5 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/config-9/scala/A.scala @@ -0,0 +1,2 @@ +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/main/java/p1/J.java b/sbt/src/sbt-test/tests/bak/p1/src/main/java/p1/J.java new file mode 100644 index 000000000..3447cf9f3 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/main/java/p1/J.java @@ -0,0 +1 @@ +package p1; diff --git a/sbt/src/sbt-test/tests/bak/p1/src/main/scala/p1/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/main/scala/p1/A.scala new file mode 100644 index 000000000..accef61c7 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/p1/src/main/scala/p1/A.scala @@ -0,0 +1,4 @@ +package p1 + +class A +object A diff --git a/sbt/src/sbt-test/tests/bak/p1/src/test/java/p1/J.java b/sbt/src/sbt-test/tests/bak/p1/src/test/java/p1/J.java new file mode 100644 index 000000000..e69de29bb diff --git a/sbt/src/sbt-test/tests/bak/p1/src/test/scala/p1/A.scala b/sbt/src/sbt-test/tests/bak/p1/src/test/scala/p1/A.scala new file mode 100644 index 000000000..e69de29bb diff --git a/sbt/src/sbt-test/tests/bak/test b/sbt/src/sbt-test/tests/bak/test new file mode 100644 index 000000000..5a2768534 --- /dev/null +++ b/sbt/src/sbt-test/tests/bak/test @@ -0,0 +1,3 @@ +> p1/t;clean;p1/t;clean;p1/t;clean +$ sleep 100 +> p1/t;clean;p1/t;clean;p1/t;clean