From 93ce8b0c6cb98c3bb9cb1ab67e17c678ff86ab1a Mon Sep 17 00:00:00 2001 From: Josh Suereth Date: Tue, 12 May 2009 12:35:26 +0000 Subject: Fixed Scalac ant tasks for windows when forking --- src/compiler/scala/tools/ant/Scalac.scala | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'src/compiler') diff --git a/src/compiler/scala/tools/ant/Scalac.scala b/src/compiler/scala/tools/ant/Scalac.scala index ecbe9aefb7..e9007c4238 100644 --- a/src/compiler/scala/tools/ant/Scalac.scala +++ b/src/compiler/scala/tools/ant/Scalac.scala @@ -10,7 +10,7 @@ package scala.tools.ant -import java.io.File +import java.io.{File,PrintWriter,BufferedWriter,FileWriter} import org.apache.tools.ant.{BuildException, Project} import org.apache.tools.ant.taskdefs.{MatchingTask,Java} @@ -642,17 +642,26 @@ class Scalac extends MatchingTask { //if (!timeout.isEmpty) java.setTimeout(timeout.get) - //TODO - Determine when to pass args in file due to argument limits - for ( setting <- settings.allSettings; - arg <- setting.unparse - ){ - java.createArg().setValue(arg) + //Write all settings to a temporary file + def writeSettings() : File = { + def escapeArgument(arg : String) = if(arg.matches(".*\\s.*")) ('"' + arg + '"') else arg + val file = File.createTempFile("scalac-ant-",".args") + file.deleteOnExit() + val out = new PrintWriter(new BufferedWriter(new FileWriter(file))) + try { + for ( setting <- settings.allSettings; + arg <- setting.unparse){ + out.println(escapeArgument(arg)) + } + for (file <- sourceFiles) { + out.println(file.getAbsolutePath) + } + } finally { + out.close(); + } + file } - - - - for (file <- sourceFiles) - java.createArg().setFile(file) + java.createArg().setValue("@" + writeSettings.getCanonicalPath) log(java.getCommandLine.getCommandline.mkString("", " ", ""), Project.MSG_VERBOSE) val res = java.executeJava() -- cgit v1.2.3