From 846300de95426ea3ed5dd6df8316cd518ca740c9 Mon Sep 17 00:00:00 2001 From: Lukas Rytz Date: Fri, 8 Oct 2021 13:23:44 +0200 Subject: [PATCH] Remove the `compat30Native` project from sbt The build currently has a `compat30Native` project which causes problems in the IntelliJ project import (through bsp) ``` sbt:scala-collection-compat> projects [info] In file:/Users/luc/scala/scala-collection-compat/ ... [info] compat213 [info] compat213JS [info] compat213Native [info] compat30 [info] compat30JS [info] compat30Native ... ``` --- build.sbt | 18 ++++++++--------- project/MultiScalaProject.scala | 34 ++++++++++++++------------------- 2 files changed, 23 insertions(+), 29 deletions(-) diff --git a/build.sbt b/build.sbt index 9cb67c39..2bd0c785 100644 --- a/build.sbt +++ b/build.sbt @@ -54,7 +54,7 @@ lazy val scala212 = "2.12.15" lazy val scala213 = "2.13.6" lazy val scala30 = "3.0.2" -lazy val compat = MultiScalaCrossProject(JSPlatform, JVMPlatform, NativePlatform)( +lazy val compat = new MultiScalaCrossProject( "compat", _.settings(ScalaModulePlugin.scalaModuleSettings) .settings(commonSettings) @@ -85,7 +85,8 @@ lazy val compat = MultiScalaCrossProject(JSPlatform, JVMPlatform, NativePlatform ) }, ) - .jsSettings( + .disablePlugins(ScalafixPlugin), + _.jsSettings( scalacOptions ++= { val x = (LocalRootProject / baseDirectory).value.toURI.toString val y = "https://raw.githubusercontent.com/scala/scala-collection-compat/" + sys.process @@ -100,9 +101,8 @@ lazy val compat = MultiScalaCrossProject(JSPlatform, JVMPlatform, NativePlatform }, Test / fork := false // Scala.js cannot run forked tests ) - .jsEnablePlugins(ScalaJSJUnitPlugin) - .disablePlugins(ScalafixPlugin) - .nativeSettings( + .jsEnablePlugins(ScalaJSJUnitPlugin), + _.nativeSettings( nativeLinkStubs := true, addCompilerPlugin( "org.scala-native" % "junit-plugin" % nativeVersion cross CrossVersion.full @@ -112,10 +112,10 @@ lazy val compat = MultiScalaCrossProject(JSPlatform, JVMPlatform, NativePlatform ) ) -val compat211 = compat(scala211) -val compat212 = compat(scala212) -val compat213 = compat(scala213) -val compat30 = compat(scala30) +val compat211 = compat(Seq(JSPlatform, JVMPlatform, NativePlatform), scala211) +val compat212 = compat(Seq(JSPlatform, JVMPlatform, NativePlatform), scala212) +val compat213 = compat(Seq(JSPlatform, JVMPlatform, NativePlatform), scala213) +val compat30 = compat(Seq(JSPlatform, JVMPlatform), scala30) lazy val compat211JVM = compat211.jvm lazy val compat211JS = compat211.js diff --git a/project/MultiScalaProject.scala b/project/MultiScalaProject.scala index 7710231d..fb3a7688 100644 --- a/project/MultiScalaProject.scala +++ b/project/MultiScalaProject.scala @@ -59,26 +59,19 @@ trait MultiScala { } } -object MultiScalaCrossProject { - def apply(platforms: Platform*)(name: String, - configure: CrossProject => CrossProject): MultiScalaCrossProject = - new MultiScalaCrossProject(platforms, name, configure) -} - -class MultiScalaCrossProject(platforms: Seq[Platform], - name: String, - configure: CrossProject => CrossProject) +class MultiScalaCrossProject(name: String, + configureCommonJvm: CrossProject => CrossProject, + configureJs: CrossProject => CrossProject, + configureNative: CrossProject => CrossProject) extends MultiScala { - - def apply(scalaV: String): CrossProject = apply(scalaV, scalaV, x => x) - def apply( - scalaV: String, - scalaVJs: String, - configurePerScala: CrossProject => CrossProject = x => x + platforms: Seq[Platform], + scalaV: String ): CrossProject = { + val hasJs = platforms.contains(JSPlatform) + val hasNative = platforms.contains(NativePlatform) val projectId = projectIdPerScala(name, scalaV) - val resultingProject = + val res = CrossProject( id = projectId, base = file(s".cross/$projectId") @@ -86,12 +79,13 @@ class MultiScalaCrossProject(platforms: Seq[Platform], .crossType(CrossType.Full) .withoutSuffixFor(JVMPlatform) .settings(moduleName := name) - .jvmSettings(scalaVersion := scalaV) - .jsSettings(scalaVersion := scalaVJs) - .nativeSettings(scalaVersion := scalaV) + .settings(scalaVersion := scalaV) .settings(srcFull(name)) - configurePerScala(configure(resultingProject)) + val conf = configureCommonJvm + .andThen(if (hasJs) configureJs else identity) + .andThen(if (hasNative) configureNative else identity) + conf(res) } }