Merge pull request #3362 from sbt/fport/3356

[fport] Override current project's scalaVersion on ^^
This commit is contained in:
eugene yokota 2017-07-24 20:16:40 -04:00 committed by GitHub
commit 26954994e2
2 changed files with 26 additions and 18 deletions

View File

@ -374,6 +374,7 @@ object Defaults extends BuildCommon {
}
)
// This is included into JvmPlugin.projectSettings
def compileBase = inTask(console)(compilersSetting :: Nil) ++ compileBaseGlobal ++ Seq(
incOptions := incOptions.value
.withClassfileManagerType(
@ -381,15 +382,8 @@ object Defaults extends BuildCommon {
.of(crossTarget.value / "classes.bak", sbt.util.Logger.Null): ClassFileManagerType).toOptional
),
scalaInstance := scalaInstanceTask.value,
crossVersion := (if (crossPaths.value) CrossVersion.binary else Disabled()),
scalaVersion := {
val scalaV = scalaVersion.value
val sv = (sbtBinaryVersion in pluginCrossBuild).value
val isPlugin = sbtPlugin.value
if (isPlugin) {
scalaVersionFromSbtBinaryVersion(sv)
} else scalaV
},
crossVersion := (if (crossPaths.value) CrossVersion.binary else CrossVersion.disabled),
scalaVersion := PluginCross.scalaVersionSetting.value,
sbtBinaryVersion in pluginCrossBuild := binarySbtVersion(
(sbtVersion in pluginCrossBuild).value),
crossSbtVersions := Vector((sbtVersion in pluginCrossBuild).value),
@ -426,14 +420,6 @@ object Defaults extends BuildCommon {
derive(scalaBinaryVersion := binaryScalaVersion(scalaVersion.value))
))
private[sbt] def scalaVersionFromSbtBinaryVersion(sv: String): String =
VersionNumber(sv) match {
case VersionNumber(Seq(0, 12, _*), _, _) => "2.9.2"
case VersionNumber(Seq(0, 13, _*), _, _) => "2.10.6"
case VersionNumber(Seq(1, _, _*), _, _) => "2.12.2"
case _ => sys.error(s"Unsupported sbt binary version: $sv")
}
def makeCrossSources(scalaSrcDir: File,
javaSrcDir: File,
sv: String,

View File

@ -15,6 +15,9 @@ import Def.ScopedKey
import sbt.internal.Load
import sbt.internal.CommandStrings._
import Cross.{ spacedFirst, requireSession }
import sbt.librarymanagement.Configurations._
import sbt.librarymanagement.VersionNumber
import Project.inConfig
/**
* Module responsible for plugin cross building.
@ -42,7 +45,10 @@ private[sbt] object PluginCross {
val x = Project.extract(state)
import x._
state.log.info(s"Setting `sbtVersion in pluginCrossBuild` to $version")
val add = (sbtVersion in GlobalScope in pluginCrossBuild :== version) :: Nil
val add = List(sbtVersion in GlobalScope in pluginCrossBuild :== version) ++
inConfig(Compile)(List(scalaVersion := scalaVersionSetting.value)) ++
inConfig(Test)(List(scalaVersion := scalaVersionSetting.value))
val cleared = session.mergeSettings.filterNot(crossExclude)
val newStructure = Load.reapply(cleared ++ add, structure)
Project.setProject(session, newStructure, command :: state)
@ -74,4 +80,20 @@ private[sbt] object PluginCross {
else versions.map(PluginSwitchCommand + " " + _ + " " + command) ::: current ::: state
}
}
def scalaVersionSetting: Def.Initialize[String] = Def.setting {
val scalaV = scalaVersion.value
val sv = (sbtBinaryVersion in pluginCrossBuild).value
val isPlugin = sbtPlugin.value
if (isPlugin) scalaVersionFromSbtBinaryVersion(sv)
else scalaV
}
def scalaVersionFromSbtBinaryVersion(sv: String): String =
VersionNumber(sv) match {
case VersionNumber(Seq(0, 12, _*), _, _) => "2.9.2"
case VersionNumber(Seq(0, 13, _*), _, _) => "2.10.6"
case VersionNumber(Seq(1, 0, _*), _, _) => "2.12.2"
case _ => sys.error(s"Unsupported sbt binary version: $sv")
}
}