diff --git a/plugin/src/main/scala-2.10/coursier/Tasks.scala b/plugin/src/main/scala-2.10/coursier/Tasks.scala index 10cf1758d..bfd3c2ca0 100644 --- a/plugin/src/main/scala-2.10/coursier/Tasks.scala +++ b/plugin/src/main/scala-2.10/coursier/Tasks.scala @@ -212,12 +212,15 @@ object Tasks { // are cached private val reportsCache = new mutable.HashMap[ReportCacheKey, UpdateReport] - private def forcedScalaModules(scalaVersion: String): Map[Module, String] = + private def forcedScalaModules( + scalaOrganization: String, + scalaVersion: String + ): Map[Module, String] = Map( - Module("org.scala-lang", "scala-library") -> scalaVersion, - Module("org.scala-lang", "scala-compiler") -> scalaVersion, - Module("org.scala-lang", "scala-reflect") -> scalaVersion, - Module("org.scala-lang", "scalap") -> scalaVersion + Module(scalaOrganization, "scala-library") -> scalaVersion, + Module(scalaOrganization, "scala-compiler") -> scalaVersion, + Module(scalaOrganization, "scala-reflect") -> scalaVersion, + Module(scalaOrganization, "scalap") -> scalaVersion ) private def projectDescription(project: Project) = @@ -270,7 +273,9 @@ object Tasks { val log = streams.value.log - val sv = scalaVersion.value // is this always defined? (e.g. for Java only projects?) + // are these always defined? (e.g. for Java only projects?) + val so = scalaOrganization.value + val sv = scalaVersion.value val sbv = scalaBinaryVersion.value val userForceVersions = dependencyOverrides.value.map( @@ -348,7 +353,7 @@ object Tasks { // order matters here userForceVersions ++ sourceRepositoriesForcedDependencies ++ - forcedScalaModules(sv) ++ + forcedScalaModules(so, sv) ++ projects.map(_.moduleVersion) ) diff --git a/plugin/src/sbt-test/sbt-coursier/typelevel-force-version-stdlib/build.sbt b/plugin/src/sbt-test/sbt-coursier/typelevel-force-version-stdlib/build.sbt new file mode 100644 index 000000000..5516cb1c9 --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/typelevel-force-version-stdlib/build.sbt @@ -0,0 +1,13 @@ +scalaOrganization := "org.typelevel" +scalaVersion := "2.11.7" +scalacOptions += "-Xexperimental" + +// no effect, as the right version is forced anyway (to scalaVersion.value) +libraryDependencies += "org.typelevel" % "scala-library" % "2.11.12345" + +coursierCachePolicies := { + if (sys.props("os.name").startsWith("Windows")) + coursierCachePolicies.value + else + Seq(coursier.CachePolicy.ForceDownload) +} diff --git a/plugin/src/sbt-test/sbt-coursier/typelevel-force-version-stdlib/project/plugins.sbt b/plugin/src/sbt-test/sbt-coursier/typelevel-force-version-stdlib/project/plugins.sbt new file mode 100644 index 000000000..152225a9e --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/typelevel-force-version-stdlib/project/plugins.sbt @@ -0,0 +1,11 @@ +{ + val pluginVersion = sys.props.getOrElse( + "plugin.version", + throw new RuntimeException( + """|The system property 'plugin.version' is not defined. + |Specify this property using the scriptedLaunchOpts -D.""".stripMargin + ) + ) + + addSbtPlugin("io.get-coursier" % "sbt-coursier" % pluginVersion) +} diff --git a/plugin/src/sbt-test/sbt-coursier/typelevel-force-version-stdlib/src/main/scala/Main.scala b/plugin/src/sbt-test/sbt-coursier/typelevel-force-version-stdlib/src/main/scala/Main.scala new file mode 100644 index 000000000..32ca74bee --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/typelevel-force-version-stdlib/src/main/scala/Main.scala @@ -0,0 +1,8 @@ +import java.io.File +import java.nio.file.Files + +object Main extends App { + val n': 2.type = 2 + + Files.write(new File("output").toPath, "OK".getBytes("UTF-8")) +} diff --git a/plugin/src/sbt-test/sbt-coursier/typelevel-force-version-stdlib/test b/plugin/src/sbt-test/sbt-coursier/typelevel-force-version-stdlib/test new file mode 100644 index 000000000..2182f57b0 --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/typelevel-force-version-stdlib/test @@ -0,0 +1,3 @@ +$ delete output +> run +$ exists output diff --git a/plugin/src/sbt-test/sbt-coursier/typelevel/build.sbt b/plugin/src/sbt-test/sbt-coursier/typelevel/build.sbt new file mode 100644 index 000000000..ea4504032 --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/typelevel/build.sbt @@ -0,0 +1,10 @@ +scalaOrganization := "org.typelevel" +scalaVersion := "2.11.7" +scalacOptions += "-Xexperimental" + +coursierCachePolicies := { + if (sys.props("os.name").startsWith("Windows")) + coursierCachePolicies.value + else + Seq(coursier.CachePolicy.ForceDownload) +} diff --git a/plugin/src/sbt-test/sbt-coursier/typelevel/project/plugins.sbt b/plugin/src/sbt-test/sbt-coursier/typelevel/project/plugins.sbt new file mode 100644 index 000000000..152225a9e --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/typelevel/project/plugins.sbt @@ -0,0 +1,11 @@ +{ + val pluginVersion = sys.props.getOrElse( + "plugin.version", + throw new RuntimeException( + """|The system property 'plugin.version' is not defined. + |Specify this property using the scriptedLaunchOpts -D.""".stripMargin + ) + ) + + addSbtPlugin("io.get-coursier" % "sbt-coursier" % pluginVersion) +} diff --git a/plugin/src/sbt-test/sbt-coursier/typelevel/src/main/scala/Main.scala b/plugin/src/sbt-test/sbt-coursier/typelevel/src/main/scala/Main.scala new file mode 100644 index 000000000..32ca74bee --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/typelevel/src/main/scala/Main.scala @@ -0,0 +1,8 @@ +import java.io.File +import java.nio.file.Files + +object Main extends App { + val n': 2.type = 2 + + Files.write(new File("output").toPath, "OK".getBytes("UTF-8")) +} diff --git a/plugin/src/sbt-test/sbt-coursier/typelevel/test b/plugin/src/sbt-test/sbt-coursier/typelevel/test new file mode 100644 index 000000000..2182f57b0 --- /dev/null +++ b/plugin/src/sbt-test/sbt-coursier/typelevel/test @@ -0,0 +1,3 @@ +$ delete output +> run +$ exists output