diff options
author | Josh Suereth <joshua.suereth@gmail.com> | 2011-12-01 10:18:08 -0500 |
---|---|---|
committer | Josh Suereth <joshua.suereth@gmail.com> | 2011-12-01 10:18:08 -0500 |
commit | d4e16acd28f1dec82c213403f78d0e33cca4a791 (patch) | |
tree | a9726339fa9b07936e827ef146218bc813c7f057 /project/build/Compilation.scala | |
parent | 51f5831b0c0d14c28938a6f537b93f183217d942 (diff) | |
download | scala-d4e16acd28f1dec82c213403f78d0e33cca4a791.tar.gz scala-d4e16acd28f1dec82c213403f78d0e33cca4a791.tar.bz2 scala-d4e16acd28f1dec82c213403f78d0e33cca4a791.zip |
Port of SBT 0.11.x build. Things appear to be working well.
Diffstat (limited to 'project/build/Compilation.scala')
-rw-r--r-- | project/build/Compilation.scala | 104 |
1 files changed, 0 insertions, 104 deletions
diff --git a/project/build/Compilation.scala b/project/build/Compilation.scala deleted file mode 100644 index d581b2b736..0000000000 --- a/project/build/Compilation.scala +++ /dev/null @@ -1,104 +0,0 @@ -import sbt._ -import xsbt.{AnalyzingCompiler, ScalaInstance} -import FileUtilities._ - -/** - * This trait define the compilation task. -* @author Grégory Moix - */ -trait Compilation { - self : ScalaBuildProject with BuildInfoEnvironment => - - def lastUsedCompilerVersion = layerEnvironment.lastCompilerVersion - - def instantiationCompilerJar: Path - def instantiationLibraryJar: Path - - def instanceScope[A](action: ScalaInstance => A): A = { - val instance = ScalaInstance(instantiationLibraryJar.asFile, instantiationCompilerJar.asFile, info.launcher, msilJar.asFile, fjbgJar.asFile) - log.debug("Compiler will be instantiated by :" +instance.compilerJar +" and :" +instance.libraryJar ) - action(instance) - } - - def compile(stepList: Step, clean:() => Option[String]): Option[String] = compile(stepList, Some(clean)) - def compile(stepList: Step): Option[String] = compile(stepList, None) - /** - * Execute the different compilation parts one after the others. - */ - def compile(stepsList: Step, clean: Option[() => Option[String]]): Option[String] ={ - - instanceScope[Option[String]]{ scala => - lazy val analyzing = new AnalyzingCompiler(scala, componentManager, xsbt.ClasspathOptions.manual, log) - - def compilerVersionHasChanged = lastUsedCompilerVersion.value != scala.actualVersion - - def checkAndClean(cleanFunction:() => Option[String]): Option[String] ={ - if (compilerVersionHasChanged) { - log.info("The compiler version used to build this layer has changed since last time or this is a clean build.") - lastUsedCompilerVersion.update(scala.actualVersion) - layerEnvironment.saveEnvironment - cleanFunction() - } else { - log.debug("The compiler version is unchanged. No need for cleaning.") - None - } - } - - def compile0(steps: List[Step]): Option[String] = { - steps foreach { - case c: CompilationStep => - val conditional = new CompileConditional(c, analyzing) - log.info("") - val res = conditional.run orElse copy(c) orElse earlyPackaging(c) - if (res.isDefined) - return res - case _ => () - } - None - } - - /** - * When we finishe to compile a step we want to jar if necessary in order to - * be able to load plugins for the associated library - */ - def earlyPackaging(step: CompilationStep): Option[String] = step match { - case s: EarlyPackaging => { - val c = s.earlyPackagingConfig - log.debug("Creating jar for plugin") - jar(c.content.flatMap(Packer.jarPattern(_)), c.jarDestination, c.manifest, false, log) - } - case _ => None - } - - def copy(step: CompilationStep): Option[String] = step match { - case s: ResourcesToCopy => s.copy - case _ => None - } - - def cleanIfNecessary: Option[String] = clean match { - case None => None - case Some(f) => checkAndClean(f) - } - cleanIfNecessary orElse compile0(stepsList.topologicalSort) - } - } - - -} - -trait LayerCompilation extends Compilation { - self : BasicLayer => - - protected def cleanCompilation: Option[String] = { - log.info("Cleaning the products of the compilation.") - FileUtilities.clean(layerOutput :: Nil, true, log) - } - - /** - * Run the actual compilation. Should not be called directly because it is executed on the same jvm and that - * it could lead to memory issues. It is used only when launching a new sbt process to do the compilation. - */ - lazy val compilation = task {compile(allSteps, cleanCompilation _)} - - def externalCompilation: Option[String] = maybeFork(compilation) -} |