From 9b0048082881f82f5e94efad92fda669ed6e41e2 Mon Sep 17 00:00:00 2001 From: Matthew de Detrich Date: Sun, 21 Jan 2024 11:27:34 +1100 Subject: [PATCH] Simplify and cleanup MultiJvm, MultiNode, Copyright in sbt build --- build.sbt | 17 ++------ project/CopyrightHeader.scala | 40 +++++-------------- project/CopyrightHeaderForBoilerplate.scala | 10 ++--- project/CopyrightHeaderForBuild.scala | 4 +- project/CopyrightHeaderForJdk9.scala | 8 ++-- project/CopyrightHeaderForProtobuf.scala | 10 +++-- project/MultiNode.scala | 6 +-- ...MultiJvm.scala => SbtMultiJvmPlugin.scala} | 0 project/ValidatePullRequest.scala | 1 - 9 files changed, 35 insertions(+), 61 deletions(-) rename project/{SbtMultiJvm.scala => SbtMultiJvmPlugin.scala} (100%) diff --git a/build.sbt b/build.sbt index c5a7901d86..22c0ddcca9 100644 --- a/build.sbt +++ b/build.sbt @@ -35,8 +35,6 @@ enablePlugins( UnidocRoot, UnidocWithPrValidation, NoPublish, - CopyrightHeader, - CopyrightHeaderInPr, ScalafixIgnoreFilePlugin, JavaFormatterPlugin) disablePlugins(MimaPlugin) @@ -51,7 +49,6 @@ addCommandAlias( addCommandAlias(name = "sortImports", value = ";scalafixEnable; scalafixAll SortImports; scalafmtAll") import PekkoBuild._ -import MultiJvmPlugin.MultiJvmKeys.MultiJvm import com.typesafe.tools.mima.plugin.MimaPlugin import sbt.Keys.{ initialCommands, parallelExecution } import spray.boilerplate.BoilerplatePlugin @@ -147,7 +144,7 @@ lazy val actorTests = pekkoModule("actor-tests") lazy val pekkoScalaNightly = pekkoModule("scala-nightly") .aggregate(aggregatedProjects: _*) .disablePlugins(MimaPlugin) - .disablePlugins(ValidatePullRequest, MimaPlugin, CopyrightHeaderInPr) + .disablePlugins(ValidatePullRequest, MimaPlugin) lazy val benchJmh = pekkoModule("bench-jmh") .enablePlugins(Jdk9) @@ -155,8 +152,8 @@ lazy val benchJmh = pekkoModule("bench-jmh") _ % "compile->compile;compile->test"): _*) .settings(Dependencies.benchJmh) .settings(javacOptions += "-parameters") // for Jackson - .enablePlugins(JmhPlugin, ScaladocNoVerificationOfDiagrams, NoPublish, CopyrightHeader) - .disablePlugins(MimaPlugin, ValidatePullRequest, CopyrightHeaderInPr) + .enablePlugins(JmhPlugin, ScaladocNoVerificationOfDiagrams, NoPublish) + .disablePlugins(MimaPlugin, ValidatePullRequest) lazy val cluster = pekkoModule("cluster") .dependsOn( @@ -171,7 +168,6 @@ lazy val cluster = pekkoModule("cluster") .settings(OSGi.cluster) .settings(Protobuf.settings) .settings(Test / parallelExecution := false) - .configs(MultiJvm) .enablePlugins(MultiNodeScalaTest) lazy val clusterMetrics = pekkoModule("cluster-metrics") @@ -185,7 +181,6 @@ lazy val clusterMetrics = pekkoModule("cluster-metrics") .settings(Protobuf.settings) .settings(SigarLoader.sigarSettings) .settings(Test / parallelExecution := false) - .configs(MultiJvm) .enablePlugins(MultiNodeScalaTest) lazy val clusterSharding = pekkoModule("cluster-sharding") @@ -203,7 +198,6 @@ lazy val clusterSharding = pekkoModule("cluster-sharding") .settings(AutomaticModuleName.settings("pekko.cluster.sharding")) .settings(OSGi.clusterSharding) .settings(Protobuf.settings) - .configs(MultiJvm) .enablePlugins(MultiNode, ScaladocNoVerificationOfDiagrams) .enablePlugins(Jdk9) @@ -216,7 +210,6 @@ lazy val clusterTools = pekkoModule("cluster-tools") .settings(AutomaticModuleName.settings("pekko.cluster.tools")) .settings(OSGi.clusterTools) .settings(Protobuf.settings) - .configs(MultiJvm) .enablePlugins(MultiNode, ScaladocNoVerificationOfDiagrams) lazy val distributedData = pekkoModule("distributed-data") @@ -226,7 +219,6 @@ lazy val distributedData = pekkoModule("distributed-data") .settings(AddMetaInfLicenseFiles.distributedDataSettings) .settings(OSGi.distributedData) .settings(Protobuf.settings) - .configs(MultiJvm) .enablePlugins(MultiNodeScalaTest) lazy val docs = pekkoModule("docs") @@ -427,7 +419,6 @@ lazy val remoteTests = pekkoModule("remote-tests") .settings(Dependencies.remoteTests) .settings(Protobuf.settings) .settings(Test / parallelExecution := false) - .configs(MultiJvm) .enablePlugins(MultiNodeScalaTest, NoPublish) .disablePlugins(MimaPlugin) @@ -535,7 +526,6 @@ lazy val clusterTyped = pekkoModule("cluster-typed") .settings(Protobuf.settings) // To be able to import ContainerFormats.proto .settings(Protobuf.importPath := Some(baseDirectory.value / ".." / "remote" / "src" / "main" / "protobuf")) - .configs(MultiJvm) .enablePlugins(MultiNodeScalaTest) lazy val clusterShardingTyped = pekkoModule("cluster-sharding-typed") @@ -556,7 +546,6 @@ lazy val clusterShardingTyped = pekkoModule("cluster-sharding-typed") // To be able to import ContainerFormats.proto .settings(Protobuf.settings) .settings(Protobuf.importPath := Some(baseDirectory.value / ".." / "remote" / "src" / "main" / "protobuf")) - .configs(MultiJvm) .enablePlugins(MultiNodeScalaTest) lazy val streamTyped = pekkoModule("stream-typed") diff --git a/project/CopyrightHeader.scala b/project/CopyrightHeader.scala index 1b9b17b9c4..5d6782a734 100644 --- a/project/CopyrightHeader.scala +++ b/project/CopyrightHeader.scala @@ -11,22 +11,18 @@ * Copyright (C) 2018-2022 Lightbend Inc. */ -import de.heikoseeberger.sbtheader.HeaderPlugin.autoImport._ import de.heikoseeberger.sbtheader.{ CommentCreator, HeaderPlugin, NewLine } import org.apache.commons.lang3.StringUtils -import sbt.Keys._ import sbt._ -import MultiJvmPlugin.MultiJvmKeys._ +object CopyrightHeader extends AutoPlugin { + import HeaderPlugin.autoImport._ -trait CopyrightHeader extends AutoPlugin { + override def requires = HeaderPlugin + override def trigger = allRequirements - override def requires: Plugins = HeaderPlugin - - override def trigger: PluginTrigger = allRequirements - - protected def headerMappingSettings: Seq[Def.Setting[_]] = - Seq(Compile, Test, MultiJvm).flatMap { config => + override def projectSettings = Def.settings( + Seq(Compile, Test).flatMap { config => inConfig(config)( Seq( headerLicense := Some(HeaderLicense.Custom(apacheHeader)), @@ -36,20 +32,7 @@ trait CopyrightHeader extends AutoPlugin { HeaderFileType.conf -> hashLineComment, HeaderFileType("template") -> cStyleComment, HeaderFileType("sbt") -> cStyleComment))) - } - - override def projectSettings: Seq[Def.Setting[_]] = - Def.settings(headerMappingSettings, additional) - - def additional: Seq[Def.Setting[_]] = - Def.settings(Compile / compile := { - (Compile / headerCreate).value - (Compile / compile).value - }, - Test / compile := { - (Test / headerCreate).value - (Test / compile).value - }) + }) val apacheFromAkkaSourceHeader: String = """Licensed to the Apache Software Foundation (ASF) under one or more @@ -89,7 +72,7 @@ trait CopyrightHeader extends AutoPlugin { HeaderCommentStyle.cStyleBlockComment.commentCreator(apacheFromAkkaSourceHeader, existingText) + NewLine * 2 + currentText case Some(currentText) => - throw new IllegalStateException(s"Unable to detect copyright for header:[$currentText]") + throw new IllegalStateException(s"Unable to detect copyright for header: [$currentText]") case None => HeaderCommentStyle.cStyleBlockComment.commentCreator(text, existingText) } @@ -127,11 +110,6 @@ trait CopyrightHeader extends AutoPlugin { private def isValidCopyrightAnnotated(text: String): Boolean = isApacheCopyrighted(text) - private def isOnlyLightbendOrEpflCopyrightAnnotated(text: String): Boolean = { + private def isOnlyLightbendOrEpflCopyrightAnnotated(text: String): Boolean = (isLightbendCopyrighted(text) || isLAMPCopyrighted(text)) && !isApacheCopyrighted(text) - } } - -object CopyrightHeader extends CopyrightHeader - -object CopyrightHeaderInPr extends CopyrightHeader diff --git a/project/CopyrightHeaderForBoilerplate.scala b/project/CopyrightHeaderForBoilerplate.scala index 4fcec1af57..1ae219ca31 100644 --- a/project/CopyrightHeaderForBoilerplate.scala +++ b/project/CopyrightHeaderForBoilerplate.scala @@ -11,17 +11,17 @@ * Copyright (C) 2019-2022 Lightbend Inc. */ -import de.heikoseeberger.sbtheader.HeaderPlugin +import CopyrightHeader.cStyleComment import de.heikoseeberger.sbtheader.HeaderPlugin.autoImport._ import sbt.Keys.sourceDirectory import sbt.{ inConfig, Compile, Def, Plugins, Test, _ } import spray.boilerplate.BoilerplatePlugin -object CopyrightHeaderForBoilerplate extends CopyrightHeader { - override def requires: Plugins = BoilerplatePlugin && HeaderPlugin +object CopyrightHeaderForBoilerplate extends AutoPlugin { + override def requires: Plugins = BoilerplatePlugin && CopyrightHeader + override def trigger: PluginTrigger = allRequirements - override protected def headerMappingSettings: Seq[Def.Setting[_]] = { - super.headerMappingSettings + override def projectSettings: Seq[Def.Setting[_]] = { Seq(Compile, Test).flatMap { config => inConfig(config) { Seq( diff --git a/project/CopyrightHeaderForBuild.scala b/project/CopyrightHeaderForBuild.scala index 5546334668..3ee7135c77 100644 --- a/project/CopyrightHeaderForBuild.scala +++ b/project/CopyrightHeaderForBuild.scala @@ -11,11 +11,13 @@ * Copyright (C) 2019-2022 Lightbend Inc. */ +import CopyrightHeader.cStyleComment import de.heikoseeberger.sbtheader.HeaderPlugin.autoImport.{ headerMappings, headerSources, HeaderFileType } import sbt.Keys.baseDirectory import sbt.{ inConfig, Compile, Def, PluginTrigger, Test, _ } -object CopyrightHeaderForBuild extends CopyrightHeader { +object CopyrightHeaderForBuild extends AutoPlugin { + override def requires: Plugins = CopyrightHeader override def trigger: PluginTrigger = noTrigger override def projectSettings: Seq[Def.Setting[_]] = { diff --git a/project/CopyrightHeaderForJdk9.scala b/project/CopyrightHeaderForJdk9.scala index 9c2fc537b9..d2b7b51e97 100644 --- a/project/CopyrightHeaderForJdk9.scala +++ b/project/CopyrightHeaderForJdk9.scala @@ -15,10 +15,12 @@ import de.heikoseeberger.sbtheader.HeaderPlugin.autoImport.headerSources import sbt.Keys.sourceDirectory import sbt.{ Compile, Def, Test, _ } -object CopyrightHeaderForJdk9 extends CopyrightHeader { +object CopyrightHeaderForJdk9 extends AutoPlugin { - override protected def headerMappingSettings: Seq[Def.Setting[_]] = { - super.headerMappingSettings + override def requires = CopyrightHeader && Jdk9 + override def trigger = allRequirements + + override def projectSettings: Seq[Def.Setting[_]] = { import Jdk9._ Seq( Compile / headerSources ++= diff --git a/project/CopyrightHeaderForProtobuf.scala b/project/CopyrightHeaderForProtobuf.scala index 61c0895368..f2f928df41 100644 --- a/project/CopyrightHeaderForProtobuf.scala +++ b/project/CopyrightHeaderForProtobuf.scala @@ -11,13 +11,17 @@ * Copyright (C) 2019-2022 Lightbend Inc. */ +import CopyrightHeader.cStyleComment import de.heikoseeberger.sbtheader.HeaderPlugin.autoImport.{ headerMappings, headerSources, HeaderFileType } import sbt.Keys.sourceDirectory import sbt.{ inConfig, Compile, Def, Test, _ } -object CopyrightHeaderForProtobuf extends CopyrightHeader { - override protected def headerMappingSettings: Seq[Def.Setting[_]] = { - super.headerMappingSettings +object CopyrightHeaderForProtobuf extends AutoPlugin { + + override def requires = CopyrightHeader + override def trigger = allRequirements + + override def projectSettings: Seq[Def.Setting[_]] = { Seq(Compile, Test).flatMap { config => inConfig(config) { Seq( diff --git a/project/MultiNode.scala b/project/MultiNode.scala index 987823190c..d88e3268f0 100644 --- a/project/MultiNode.scala +++ b/project/MultiNode.scala @@ -12,8 +12,8 @@ */ import TestExtras.Filter.Keys._ -import MultiJvmPlugin.MultiJvmKeys.multiJvmCreateLogger -import MultiJvmPlugin.MultiJvmKeys._ +import MultiJvmPlugin.autoImport.multiJvmCreateLogger +import MultiJvmPlugin.autoImport._ import sbt.{ Def, _ } import sbt.Keys._ @@ -47,7 +47,7 @@ object MultiNode extends AutoPlugin { val multiTest = CliOptions.multiNode.ifTrue(MultiJvm / multiNodeTest).getOrElse(MultiJvm / test) override def trigger = noTrigger - override def requires = plugins.JvmPlugin + override def requires = plugins.JvmPlugin && MultiJvmPlugin override lazy val projectSettings: Seq[Def.Setting[_]] = multiJvmSettings diff --git a/project/SbtMultiJvm.scala b/project/SbtMultiJvmPlugin.scala similarity index 100% rename from project/SbtMultiJvm.scala rename to project/SbtMultiJvmPlugin.scala diff --git a/project/ValidatePullRequest.scala b/project/ValidatePullRequest.scala index 66c5efa7a3..7646b497ab 100644 --- a/project/ValidatePullRequest.scala +++ b/project/ValidatePullRequest.scala @@ -85,7 +85,6 @@ object PekkoValidatePullRequest extends AutoPlugin { */ object MultiNodeWithPrValidation extends AutoPlugin { import PekkoValidatePullRequest._ - import MultiJvmPlugin.MultiJvmKeys.MultiJvm override def trigger = allRequirements override def requires = PekkoValidatePullRequest && MultiNode