From 1056a044457cca7601fff8bd4837301a33a95937 Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Wed, 5 Feb 2025 12:53:49 +0100 Subject: [PATCH 1/7] Bump sbt-develocity to 1.1.2 --- project/Build.scala | 6 +++--- project/plugins.sbt | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/project/Build.scala b/project/Build.scala index 3e53990cfd56..85a7b18bd4b0 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -339,7 +339,7 @@ object Build { buildScan .withPublishing(Publishing.onlyIf(_.authenticated)) .withBackgroundUpload(!isInsideCI) - .tag(if (isInsideCI) "CI" else "Local") + .withTag(if (isInsideCI) "CI" else "Local") .withLinks(buildScan.links ++ GithubEnv.develocityLinks) .withValues(buildScan.values ++ GithubEnv.develocityValues) .withObfuscation(buildScan.obfuscation.withIpAddresses(_.map(_ => "0.0.0.0"))) @@ -349,8 +349,8 @@ object Build { .withLocal(buildCache.local.withEnabled(false)) .withRemote(buildCache.remote.withEnabled(false)) ) - .withTestRetryConfiguration( - config.testRetryConfiguration + .withTestRetry( + config.testRetry .withFlakyTestPolicy(FlakyTestPolicy.Fail) .withMaxRetries(if (isInsideCI) 1 else 0) .withMaxFailures(10) diff --git a/project/plugins.sbt b/project/plugins.sbt index b3e4af1f72e7..ae611d4593c8 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -22,4 +22,4 @@ addSbtPlugin("ch.epfl.scala" % "sbt-tasty-mima" % "1.0.0") addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.10.0") -addSbtPlugin("com.gradle" % "sbt-develocity" % "1.1.1") +addSbtPlugin("com.gradle" % "sbt-develocity" % "1.1.2") From 57afde8d2e6a62881a01a92db2224c71a44cb952 Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Wed, 5 Feb 2025 12:54:57 +0100 Subject: [PATCH 2/7] Activate local cache --- project/Build.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index 85a7b18bd4b0..fb04cc31bcee 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -346,7 +346,7 @@ object Build { ) .withBuildCache( buildCache - .withLocal(buildCache.local.withEnabled(false)) + .withLocal(buildCache.local.withEnabled(true).withStoreEnabled(true)) .withRemote(buildCache.remote.withEnabled(false)) ) .withTestRetry( From f27d6054580b3d9ca4c8735ef70bc63c62c3a3f3 Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Wed, 5 Feb 2025 12:55:28 +0100 Subject: [PATCH 3/7] Activate remote cache --- project/Build.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index fb04cc31bcee..db74c3494625 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -347,7 +347,7 @@ object Build { .withBuildCache( buildCache .withLocal(buildCache.local.withEnabled(true).withStoreEnabled(true)) - .withRemote(buildCache.remote.withEnabled(false)) + .withRemote(buildCache.remote.withEnabled(true).withStoreEnabled(isInsideCI)) ) .withTestRetry( config.testRetry From f9a7495f614a2b815f6d28bdc2ff27f8b53bcb88 Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Wed, 5 Feb 2025 12:56:42 +0100 Subject: [PATCH 4/7] Deactivate test caching for all projects --- project/Build.scala | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/project/Build.scala b/project/Build.scala index db74c3494625..d8c58c599646 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -356,7 +356,10 @@ object Build { .withMaxFailures(10) .withClassesFilter((className, _) => !noRetryTestClasses.contains(className)) ) - } + }, + // Deactivate Develocity's test caching because it caches all tests or nothing. + // Also at the moment, it does not take compilation files as inputs. + Test / develocityBuildCacheClient := None, ) // Settings shared globally (scoped in Global). Used in build.sbt @@ -1015,10 +1018,6 @@ object Build { sjsSources } (Set(scalaJSIRSourcesJar)).toSeq }.taskValue, - - // Develocity's Build Cache does not work with our compilation tests - // at the moment: it does not take compilation files as inputs. - Test / develocityBuildCacheClient := None, ) def insertClasspathInArgs(args: List[String], cp: String): List[String] = { From f266cad822cb19107f72dccc4402755f5d554c64 Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Thu, 20 Feb 2025 10:36:18 +0100 Subject: [PATCH 5/7] Try sbt-develocity 1.2-rc-2 --- project/plugins.sbt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/project/plugins.sbt b/project/plugins.sbt index ae611d4593c8..a17f2253784f 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -23,3 +23,8 @@ addSbtPlugin("ch.epfl.scala" % "sbt-tasty-mima" % "1.0.0") addSbtPlugin("com.github.sbt" % "sbt-native-packager" % "1.10.0") addSbtPlugin("com.gradle" % "sbt-develocity" % "1.1.2") + +resolvers += + "Develocity Artifactory" at "https://repo.grdev.net/artifactory/public/" + +addSbtPlugin("com.gradle" % "sbt-develocity" % "1.2-rc-2") From 80a0e8b3fb7d21fd7cacce106cef966315d5e0da Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Thu, 20 Feb 2025 13:31:29 +0100 Subject: [PATCH 6/7] Use canonical paths in scalacOptions --- project/Build.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index d8c58c599646..f60b1c26c53d 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -1116,7 +1116,7 @@ object Build { libraryDependencies += "org.scala-lang" % "scala-library" % stdlibVersion, (Compile / scalacOptions) ++= Seq( // Needed so that the library sources are visible when `dotty.tools.dotc.core.Definitions#init` is called - "-sourcepath", (Compile / sourceDirectories).value.map(_.getAbsolutePath).distinct.mkString(File.pathSeparator), + "-sourcepath", (Compile / sourceDirectories).value.map(_.getCanonicalPath).distinct.mkString(File.pathSeparator), "-Yexplicit-nulls", ), (Compile / doc / scalacOptions) ++= ScaladocConfigs.DefaultGenerationSettings.value.settings, From 3c18411fdcf822ae47b36254563930db89f06ef1 Mon Sep 17 00:00:00 2001 From: Adrien Piquerez Date: Tue, 4 Mar 2025 14:15:56 +0100 Subject: [PATCH 7/7] Add scala3-compiler cache key as component of bootstrapped modules Each time the compiler changes it should invalidate all bootstrapped modules --- project/Build.scala | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/project/Build.scala b/project/Build.scala index f60b1c26c53d..2ae814345f55 100644 --- a/project/Build.scala +++ b/project/Build.scala @@ -10,6 +10,7 @@ import complete.DefaultParsers._ import pl.project13.scala.sbt.JmhPlugin import pl.project13.scala.sbt.JmhPlugin.JmhKeys.Jmh import com.gradle.develocity.agent.sbt.DevelocityPlugin.autoImport._ +import com.gradle.develocity.agent.sbt.api.experimental.buildcache import com.typesafe.sbt.packager.Keys._ import com.typesafe.sbt.packager.MappingsHelper.directory import com.typesafe.sbt.packager.universal.UniversalPlugin @@ -607,7 +608,10 @@ object Build { assert(docScalaInstance.loaderCompilerOnly == base.loaderCompilerOnly) docScalaInstance }, - Compile / doc / scalacOptions ++= scalacOptionsDocSettings() + Compile / doc / scalacOptions ++= scalacOptionsDocSettings(), + // force recompilation of bootstrapped modules when the compiler changes + Compile / compile / buildcache.develocityTaskCacheKeyComponents += + (`scala3-compiler` / Compile / compile / buildcache.develocityTaskCacheKey).taskValue ) lazy val commonBenchmarkSettings = Seq(