From 377ff9148481532463782986865a32d6d4ea0559 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Wed, 12 Apr 2017 02:06:31 -0400 Subject: [PATCH] Make clean task run exclusively Cherry-picked acf6c1191e18ab9acedf2c7bbdb7b7c71044decb --- main/src/main/scala/sbt/Defaults.scala | 15 ++++++++++----- main/src/main/scala/sbt/Tags.scala | 3 ++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 20dd8ace5..693eef0fa 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -344,7 +344,7 @@ object Defaults extends BuildCommon { lazy val projectTasks: Seq[Setting[_]] = Seq( cleanFiles := cleanFilesTask.value, cleanKeepFiles := historyPath.value.toVector, - clean := IO.delete(cleanFiles.value), + clean := (Def.task { IO.delete(cleanFiles.value) } tag (Tags.Clean)).value, consoleProject := consoleProjectTask.value, watchTransitiveSources := watchTransitiveSourcesTask.value, watch := watchSetting.value @@ -647,10 +647,15 @@ object Defaults extends BuildCommon { def detectTests: Initialize[Task[Seq[TestDefinition]]] = (loadedTestFrameworks, compile, streams) map { (frameworkMap, analysis, s) => Tests.discover(frameworkMap.values.toList, analysis, s.log)._1 } - def defaultRestrictions: Initialize[Seq[Tags.Rule]] = parallelExecution { par => - val max = EvaluateTask.SystemProcessors - Tags.limitAll(if (par) max else 1) :: Tags.limit(Tags.ForkedTestGroup, 1) :: Nil - } + def defaultRestrictions: Initialize[Seq[Tags.Rule]] = + Def.setting { + val par = parallelExecution.value + val max = EvaluateTask.SystemProcessors + Tags.limitAll(if (par) max else 1) :: + Tags.limit(Tags.ForkedTestGroup, 1) :: + Tags.exclusiveGroup(Tags.Clean) :: + Nil + } lazy val packageBase: Seq[Setting[_]] = Seq( artifact := Artifact(moduleName.value) diff --git a/main/src/main/scala/sbt/Tags.scala b/main/src/main/scala/sbt/Tags.scala index 4ab6b5fe0..cfaeec447 100644 --- a/main/src/main/scala/sbt/Tags.scala +++ b/main/src/main/scala/sbt/Tags.scala @@ -13,6 +13,7 @@ object Tags { val Test = Tag("test") val Update = Tag("update") val Publish = Tag("publish") + val Clean = Tag("clean") val CPU = Tag("cpu") val Network = Tag("network") @@ -111,4 +112,4 @@ object Tags { val groups = exclusiveTags.count(tag => tags.getOrElse(tag, 0) > 0) groups <= 1 } -} \ No newline at end of file +}