From 852a69e2e66d9b33e43f9e3cf21f46bfac8867cf Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Tue, 29 Dec 2009 22:16:28 -0500 Subject: [PATCH] Add forkRun methods to make implementing fork straightforward. --- project/build.properties | 4 ++-- project/build/SbtProject.scala | 2 +- project/plugins/Plugins.scala | 2 +- scripted/project/build.properties | 2 +- scripted/src/main/scala/ScriptedTests.scala | 8 ++++---- src/main/scala/sbt/DefaultProject.scala | 12 ++++++++++++ src/main/scala/sbt/Fork.scala | 15 +++------------ .../run/ForkFail/project/build.properties | 5 +++++ .../ForkFail/project/build/ForkFailProject.scala | 6 ++++++ .../run/ForkFail/src/main/scala/ForkFail.scala | 5 +++++ src/sbt-test/run/ForkFail/test | 1 + 11 files changed, 41 insertions(+), 21 deletions(-) create mode 100644 src/sbt-test/run/ForkFail/project/build.properties create mode 100644 src/sbt-test/run/ForkFail/project/build/ForkFailProject.scala create mode 100644 src/sbt-test/run/ForkFail/src/main/scala/ForkFail.scala create mode 100644 src/sbt-test/run/ForkFail/test diff --git a/project/build.properties b/project/build.properties index 4e3420c59..6c315ab40 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1,7 +1,7 @@ #Project properties -#Sun Dec 06 21:31:48 EST 2009 +#Tue Dec 29 21:41:25 EST 2009 project.organization=org.scala-tools.sbt project.name=Simple Build Tool sbt.version=0.5.6 -project.version=0.6.9-SNAPSHOT +project.version=0.6.9 scala.version=2.7.7 diff --git a/project/build/SbtProject.scala b/project/build/SbtProject.scala index 4b8817504..3f1b91fd2 100644 --- a/project/build/SbtProject.scala +++ b/project/build/SbtProject.scala @@ -57,7 +57,7 @@ class SbtProject(info: ProjectInfo) extends DefaultProject(info) with test.SbtSc val jsch = "com.jcraft" % "jsch" % "0.1.31" intransitive() val jetty = "org.mortbay.jetty" % "jetty" % "6.1.14" % "optional" - val testInterface = "org.scala-tools.testing" % "test-interface" % "0.2" + val testInterface = "org.scala-tools.testing" % "test-interface" % "0.3" // xsbt components val xsbti = "org.scala-tools.sbt" % "launcher-interface" % projectVersion.value.toString % "provided" diff --git a/project/plugins/Plugins.scala b/project/plugins/Plugins.scala index a21f23274..c3f30360e 100644 --- a/project/plugins/Plugins.scala +++ b/project/plugins/Plugins.scala @@ -4,6 +4,6 @@ import java.net.URL class Plugins(info: ProjectInfo) extends PluginDefinition(info) { - val scripted = "org.scala-tools.sbt" % "scripted" % "0.6.7" + val scripted = "org.scala-tools.sbt" % "scripted" % "0.6.9" val technically = Resolver.url("technically.us", new URL("http://databinder.net/repo/"))(Resolver.ivyStylePatterns) } diff --git a/scripted/project/build.properties b/scripted/project/build.properties index 67ee86e12..19ee2b67e 100644 --- a/scripted/project/build.properties +++ b/scripted/project/build.properties @@ -1,6 +1,6 @@ project.organization=org.scala-tools.sbt project.name=scripted sbt.version=0.5.6 -project.version=0.6.7 +project.version=0.6.9 scala.version=2.7.7 project.initialize=false diff --git a/scripted/src/main/scala/ScriptedTests.scala b/scripted/src/main/scala/ScriptedTests.scala index 8e7597873..1d8ab4493 100644 --- a/scripted/src/main/scala/ScriptedTests.scala +++ b/scripted/src/main/scala/ScriptedTests.scala @@ -88,11 +88,11 @@ object FillProperties import CompatibilityLevel._ level match { - case Full => "2.7.2 2.7.3 2.7.5 2.7.7 2.8.0.Beta1-RC2 2.8.0-SNAPSHOT" - case Basic => "2.7.7 2.7.2 2.8.0.Beta1-RC2" - case Minimal => "2.7.7 2.8.0.Beta1-RC2" + case Full => "2.7.2 2.7.3 2.7.5 2.7.7 2.8.0.Beta1-RC6 2.8.0-SNAPSHOT" + case Basic => "2.7.7 2.7.2 2.8.0.Beta1-RC6" + case Minimal => "2.7.7 2.8.0.Beta1-RC6" case Minimal27 => "2.7.7" - case Minimal28 => "2.8.0.Beta1-RC2" + case Minimal28 => "2.8.0.Beta1-RC6" } } def extraProperties(sbtVersion: String, defScalaVersion: String, buildScalaVersions: String) = diff --git a/src/main/scala/sbt/DefaultProject.scala b/src/main/scala/sbt/DefaultProject.scala index 11720c2e7..dc65ce101 100644 --- a/src/main/scala/sbt/DefaultProject.scala +++ b/src/main/scala/sbt/DefaultProject.scala @@ -232,6 +232,18 @@ abstract class BasicScalaProject extends ScalaProject with BasicDependencyProjec /** Configures forking the compiler and runner. Use ForkScalaCompiler, ForkScalaRun or mix together.*/ def fork: Option[ForkScala] = None + def forkRun: Option[ForkScala] = forkRun(None, Nil) + def forkRun(workingDirectory: File): Option[ForkScala] = forkRun(Some(workingDirectory), Nil) + def forkRun(jvmOptions: Seq[String]): Option[ForkScala] = forkRun(None, jvmOptions) + def forkRun(workingDirectory0: Option[File], jvmOptions: Seq[String]): Option[ForkScala] = + { + val si = buildScalaInstance + Some(new ForkScalaRun { + override def scalaJars = si.libraryJar :: si.compilerJar :: Nil + override def workingDirectory: Option[File] = workingDirectory0 + override def runJVMOptions: Seq[String] = jvmOptions + }) + } private def doCompile(conditional: CompileConditional) = conditional.run implicit def defaultRunner: ScalaRun = { diff --git a/src/main/scala/sbt/Fork.scala b/src/main/scala/sbt/Fork.scala index 281258783..ddd97aca7 100644 --- a/src/main/scala/sbt/Fork.scala +++ b/src/main/scala/sbt/Fork.scala @@ -12,7 +12,7 @@ abstract class ForkJava extends NotNull } abstract class ForkScala extends ForkJava { - def scalaJars: Iterable[File] = None + def scalaJars: Iterable[File] = Nil } trait ForkScalaRun extends ForkScala { @@ -20,11 +20,6 @@ trait ForkScalaRun extends ForkScala def runJVMOptions: Seq[String] = Nil } -trait ForkScalaCompiler extends ForkScala -{ - def compileJVMOptions: Seq[String] = Nil -} - sealed abstract class OutputStrategy extends NotNull case object StdoutOutput extends OutputStrategy case class BufferedOutput(logger: Logger) extends OutputStrategy @@ -84,12 +79,8 @@ object Fork apply(javaHome, jvmOptions, scalaJars, arguments, workingDirectory, BufferedOutput(log)) def apply(javaHome: Option[File], jvmOptions: Seq[String], scalaJars: Iterable[File], arguments: Seq[String], workingDirectory: Option[File], outputStrategy: OutputStrategy): Int = { - val scalaClasspath = - if(scalaJars.isEmpty) - FileUtilities.scalaLibraryJar :: FileUtilities.scalaCompilerJar :: Nil - else - scalaJars - val scalaClasspathString = "-Xbootclasspath/a:" + scalaClasspath.map(_.getAbsolutePath).mkString(File.pathSeparator) + if(scalaJars.isEmpty) error("Scala jars not specified") + val scalaClasspathString = "-Xbootclasspath/a:" + scalaJars.map(_.getAbsolutePath).mkString(File.pathSeparator) val mainClass = if(mainClassName.isEmpty) Nil else mainClassName :: Nil val options = jvmOptions ++ (scalaClasspathString :: mainClass ::: arguments.toList) Fork.java(javaHome, options, workingDirectory, Map.empty, outputStrategy) diff --git a/src/sbt-test/run/ForkFail/project/build.properties b/src/sbt-test/run/ForkFail/project/build.properties new file mode 100644 index 000000000..08046db15 --- /dev/null +++ b/src/sbt-test/run/ForkFail/project/build.properties @@ -0,0 +1,5 @@ +#Project properties +#Tue Dec 22 16:14:08 CST 2009 +project.organization=Cough +project.name=ForkFail +project.version=1.0 \ No newline at end of file diff --git a/src/sbt-test/run/ForkFail/project/build/ForkFailProject.scala b/src/sbt-test/run/ForkFail/project/build/ForkFailProject.scala new file mode 100644 index 000000000..d0cda9326 --- /dev/null +++ b/src/sbt-test/run/ForkFail/project/build/ForkFailProject.scala @@ -0,0 +1,6 @@ +import sbt._ + +class ForkFailProject(info: ProjectInfo) extends DefaultProject(info) { + override def fork = forkRun +} + diff --git a/src/sbt-test/run/ForkFail/src/main/scala/ForkFail.scala b/src/sbt-test/run/ForkFail/src/main/scala/ForkFail.scala new file mode 100644 index 000000000..d68bee32e --- /dev/null +++ b/src/sbt-test/run/ForkFail/src/main/scala/ForkFail.scala @@ -0,0 +1,5 @@ +object ForkFail { + def main(args:Array[String]) { + println(scala.util.Properties.versionString) + } +} diff --git a/src/sbt-test/run/ForkFail/test b/src/sbt-test/run/ForkFail/test new file mode 100644 index 000000000..4210a0425 --- /dev/null +++ b/src/sbt-test/run/ForkFail/test @@ -0,0 +1 @@ +> ++2.8.0.Beta1-RC6 run