From 4aad44d77785e284349ceb5ca9c5a3883909818a Mon Sep 17 00:00:00 2001 From: Yi Cheng Date: Sat, 22 Jun 2019 19:59:33 -0700 Subject: [PATCH] Add --post-compile-merge-dir option in zinc (#7917) Prerequisite for #7869, so resources like ``` META-INF/services/ META-INF/services/javax.annotation.processing.Processor ``` in the z.jar can be added by zinc wrapper instead of post processing by Pants. --- src/scala/org/pantsbuild/zinc/compiler/Main.scala | 6 ++++++ src/scala/org/pantsbuild/zinc/compiler/Settings.scala | 7 +++++++ 2 files changed, 13 insertions(+) diff --git a/src/scala/org/pantsbuild/zinc/compiler/Main.scala b/src/scala/org/pantsbuild/zinc/compiler/Main.scala index 9bad699824d..bb94f457ac3 100644 --- a/src/scala/org/pantsbuild/zinc/compiler/Main.scala +++ b/src/scala/org/pantsbuild/zinc/compiler/Main.scala @@ -10,6 +10,7 @@ import scala.collection.JavaConverters._ import sbt.internal.inc.IncrementalCompilerImpl import sbt.internal.util.{ ConsoleLogger, ConsoleOut } +import sbt.io.IO import sbt.util.Level import xsbti.CompileFailed @@ -160,6 +161,11 @@ object Main { // Run the compile. val result = new IncrementalCompilerImpl().compile(inputs, log) + // post compile merge dir + if (settings.postCompileMergeDir.isDefined) { + IO.copyDirectory(new File(settings.postCompileMergeDir.get.toURI), new File(settings.classesDirectory.toURI)) + } + // Store the output if the result changed. if (result.hasModified) { targetAnalysisStore.set( diff --git a/src/scala/org/pantsbuild/zinc/compiler/Settings.scala b/src/scala/org/pantsbuild/zinc/compiler/Settings.scala index b99e43cf81b..6627f09bc5d 100644 --- a/src/scala/org/pantsbuild/zinc/compiler/Settings.scala +++ b/src/scala/org/pantsbuild/zinc/compiler/Settings.scala @@ -28,6 +28,7 @@ case class Settings( _sources: Seq[File] = Seq.empty, classpath: Seq[File] = Seq.empty, _classesDirectory: Option[File] = None, + _postCompileMergeDir: Option[File] = None, outputJar: Option[File] = None, scala: ScalaLocation = ScalaLocation(), scalacOptions: Seq[String] = Seq.empty, @@ -47,6 +48,8 @@ case class Settings( lazy val classesDirectory: File = normalise(_classesDirectory.getOrElse(defaultClassesDirectory())) + lazy val postCompileMergeDir: Option[File] = _postCompileMergeDir.map(normalise) + lazy val incOptions: IncOptions = { _incOptions.copy( apiDumpDirectory = _incOptions.apiDumpDirectory map normalise, @@ -282,6 +285,10 @@ object Settings { .action((x, c) => c.copy(classpath = x)) .text("Specify the classpath") + opt[File]("post-compile-merge-dir") + .action((x, c) => c.copy(_postCompileMergeDir = Some(x))) + .text("Directory to merge with compile outputs after compilation") + opt[File]("class-destination") .abbr("d") .action((x, c) => c.copy(_classesDirectory = Some(x)))