summaryrefslogtreecommitdiff
path: root/build.sbt
diff options
context:
space:
mode:
authorStefan Zeiger <szeiger@novocode.com>2015-10-27 16:17:41 +0100
committerStefan Zeiger <szeiger@novocode.com>2015-10-27 16:17:41 +0100
commit5e080eb204dab36dd4ae1e42adc63737fe8a9e6d (patch)
tree567b3f966ae71a2b3db2fbd4bfa15f5f383da3be /build.sbt
parenta24ca7fa617cabada82c43d2d6ac354db698d181 (diff)
downloadscala-5e080eb204dab36dd4ae1e42adc63737fe8a9e6d.tar.gz
scala-5e080eb204dab36dd4ae1e42adc63737fe8a9e6d.tar.bz2
scala-5e080eb204dab36dd4ae1e42adc63737fe8a9e6d.zip
Fix the dist/mkBin target in the sbt build
- Set the correct unmanagedResourceDirectories for the compiler and library projects. These projects already had includeFilter definitions to copy the correct resource files to the target dirs but they were meaningless without a source dir. - Set a target path for ‘dist’ to make stream files go to the proper .gitignored dir. - Set permissions ugo+rx on all generated script and batch files.
Diffstat (limited to 'build.sbt')
-rw-r--r--build.sbt17
1 files changed, 14 insertions, 3 deletions
diff --git a/build.sbt b/build.sbt
index 8e79e1019f..5dc8cad01d 100644
--- a/build.sbt
+++ b/build.sbt
@@ -154,6 +154,7 @@ lazy val library = configureAsSubproject(project)
val libraryAuxDir = (baseDirectory in ThisBuild).value / "src/library-aux"
Seq("-doc-no-compile", libraryAuxDir.toString)
},
+ unmanagedResourceDirectories in Compile += (baseDirectory in ThisBuild).value / "src" / project.id,
includeFilter in unmanagedResources in Compile := libIncludes)
.dependsOn (forkjoin)
@@ -184,6 +185,7 @@ lazy val compiler = configureAsSubproject(project)
(mappings in Compile in packageBin in LocalProject("interactive")).value ++
(mappings in Compile in packageBin in LocalProject("scaladoc")).value ++
(mappings in Compile in packageBin in LocalProject("repl")).value,
+ unmanagedResourceDirectories in Compile += (baseDirectory in ThisBuild).value / "src" / project.id,
includeFilter in unmanagedResources in Compile := compilerIncludes)
.dependsOn(library, reflect)
@@ -299,7 +301,8 @@ lazy val root = (project in file(".")).
)
lazy val dist = (project in file("dist")).settings(
- mkBin := mkBinImpl.value
+ mkBin := mkBinImpl.value,
+ target := (baseDirectory in ThisBuild).value / "target" / thisProject.value.id
)
/**
@@ -446,6 +449,7 @@ def clearSourceAndResourceDirectories = Seq(Compile, Test).flatMap(config => inC
)))
lazy val mkBinImpl: Def.Initialize[Task[Seq[File]]] = Def.task {
+ import java.io.IOException
def mkScalaTool(mainCls: String, classpath: Seq[Attributed[File]]): ScalaTool =
ScalaTool(mainClass = mainCls,
classpath = classpath.toList.map(_.data.getAbsolutePath),
@@ -453,11 +457,18 @@ lazy val mkBinImpl: Def.Initialize[Task[Seq[File]]] = Def.task {
javaOpts = "-Xmx256M -Xms32M",
toolFlags = "")
val rootDir = (classDirectory in Compile in compiler).value
- def writeScripts(scalaTool: ScalaTool, file: String, outDir: File): Seq[File] =
- Seq(
+ def writeScripts(scalaTool: ScalaTool, file: String, outDir: File): Seq[File] = {
+ val res = Seq(
scalaTool.writeScript(file, "unix", rootDir, outDir),
scalaTool.writeScript(file, "windows", rootDir, outDir)
)
+ res.foreach { f =>
+ //TODO 2.12: Use Files.setPosixFilePermissions() (Java 7+) instead of calling out to chmod
+ if(Process(List("chmod", "ugo+rx", f.getAbsolutePath())).! > 0)
+ throw new IOException("chmod failed")
+ }
+ res
+ }
def mkQuickBin(file: String, mainCls: String, classpath: Seq[Attributed[File]]): Seq[File] = {
val scalaTool = mkScalaTool(mainCls, classpath)
val outDir = buildDirectory.value / "quick/bin"