From 00d2bc95de3a4ab27e64ad035464c7f2aa99ac8c Mon Sep 17 00:00:00 2001 From: Ethan Atkins Date: Tue, 28 May 2019 12:07:19 -0700 Subject: [PATCH 1/2] Consolidate travis builds There is a large fixed overhead of about O(7minutes) per travis run. We seem to be limited to five build agents at a time so I consolidated the .travis.yml into five builds. I tried to distribute the tasks fairly evenly so that all of the builds take about the same amount of time. On my personal travis build, where I only get three build agents, the total run time of the build dropped to 50 minutes from one hour forty minutes. --- .travis.yml | 31 +++++-------------------------- 1 file changed, 5 insertions(+), 26 deletions(-) diff --git a/.travis.yml b/.travis.yml index d681f774b..84a1e2f13 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,44 +11,23 @@ env: - secure: d3bu2KNwsVHwfhbGgO+gmRfDKBJhfICdCJFGWKf2w3Gv86AJZX9nuTYRxz0KtdvEHO5Xw8WTBZLPb2thSJqhw9OCm4J8TBAVqCP0ruUj4+aqBUFy4bVexQ6WKE6nWHs4JPzPk8c6uC1LG3hMuzlC8RGETXtL/n81Ef1u7NjyXjs= matrix: - SBT_CMD=";mimaReportBinaryIssues ;scalafmtCheckAll ;headerCheck ;test:headerCheck ;whitesourceOnPush ;test:compile; publishLocal ;mainSettingsProj/test ;safeUnitTests ;otherUnitTests; doc" - - SBT_CMD="scripted actions/*" - - SBT_CMD="scripted apiinfo/* compiler-project/* ivy-deps-management/*" - - SBT_CMD="scripted dependency-management/*1of4" - - SBT_CMD="scripted dependency-management/*2of4" - - SBT_CMD="scripted dependency-management/*3of4" - - SBT_CMD="scripted dependency-management/*4of4" - - SBT_CMD="scripted plugins/*" - - SBT_CMD="scripted package/* reporter/* run/* project-load/*" - - SBT_CMD="scripted project/*1of2" - - SBT_CMD="scripted project/*2of2" - - SBT_CMD="scripted source-dependencies/*1of3" - - SBT_CMD="scripted source-dependencies/*2of3" - - SBT_CMD="scripted source-dependencies/*3of3" - - SBT_CMD="scripted tests/* watch/* classloader-cache/*" - - SBT_CMD="repoOverrideTest:scripted dependency-management/*" + - SBT_CMD="scripted actions/* apiinfo/* compiler-project/* ivy-deps-management/* reporter/* tests/* watch/* classloader-cache/* package/*" + - SBT_CMD="scripted dependency-management/* plugins/* project-load/* java/* run/*" + - SBT_CMD="repoOverrideTest:scripted dependency-management/*; scripted source-dependencies/* project/*" matrix: fast_finish: true include: - - env: - - SBT_CMD="scripted java/*" - install: - - /home/travis/.jabba/bin/jabba install openjdk@1.10 - env: - TRAVIS_JDK=adopt@1.8.192-12 - - SBT_CMD="scripted actions/*" - - env: - - TRAVIS_JDK=adopt@1.8.192-12 - - SBT_CMD="scripted source-dependencies/*1of3" - - env: - - TRAVIS_JDK=adopt@1.8.192-12 - - SBT_CMD="scripted dependency-management/*1of4" + - SBT_CMD="scripted actions/* source-dependencies/*1of3 dependency-management/*1of4 java/*" before_install: - curl -sL https://raw.githubusercontent.com/shyiko/jabba/0.11.0/install.sh | bash && . ~/.jabba/jabba.sh install: - $JABBA_HOME/bin/jabba install $TRAVIS_JDK + - $JABBA_HOME/bin/jabba install openjdk@1.10 - unset _JAVA_OPTIONS - export JAVA_HOME="$JABBA_HOME/jdk/$TRAVIS_JDK" && export PATH="$JAVA_HOME/bin:$PATH" && java -Xmx32m -version From 2aab767962f0f0d0d9e9343720959ee424ed2b54 Mon Sep 17 00:00:00 2001 From: Guillaume Martres Date: Tue, 28 May 2019 20:07:39 +0200 Subject: [PATCH 2/2] Replace usages of deprecated ScalaInstance#libraryJar --- main/src/main/scala/sbt/Defaults.scala | 2 +- sbt/src/sbt-test/dependency-management/artifact/build.sbt | 2 +- sbt/src/sbt-test/package/manifest/build.sbt | 2 +- sbt/src/sbt-test/package/resources/build.sbt | 4 +++- 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index bf0b3abd3..c3744be56 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -3426,7 +3426,7 @@ object Classpaths { def unmanagedScalaLibrary: Initialize[Task[Seq[File]]] = Def.taskDyn { if (autoScalaLibrary.value && scalaHome.value.isDefined) - Def.task { scalaInstance.value.libraryJar :: Nil } else + Def.task { scalaInstance.value.libraryJars } else Def.task { Nil } } diff --git a/sbt/src/sbt-test/dependency-management/artifact/build.sbt b/sbt/src/sbt-test/dependency-management/artifact/build.sbt index 6e51258c1..dfc87e190 100644 --- a/sbt/src/sbt-test/dependency-management/artifact/build.sbt +++ b/sbt/src/sbt-test/dependency-management/artifact/build.sbt @@ -15,7 +15,7 @@ lazy val root = (project in file(".")) artifact in (Compile, packageBin) := mainArtifact, libraryDependencies ++= (if (baseDirectory.value / "retrieve" exists) publishedID :: Nil else Nil), // needed to add a jar with a different type to the managed classpath - unmanagedClasspath in Compile += scalaInstance.map(_.libraryJar).value, + unmanagedClasspath in Compile ++= scalaInstance.value.libraryJars.toSeq, classpathTypes := Set(tpe), check := checkTask(dependencyClasspath).value, checkFull := checkTask(fullClasspath).value diff --git a/sbt/src/sbt-test/package/manifest/build.sbt b/sbt/src/sbt-test/package/manifest/build.sbt index 65515e221..73ac1427d 100644 --- a/sbt/src/sbt-test/package/manifest/build.sbt +++ b/sbt/src/sbt-test/package/manifest/build.sbt @@ -12,7 +12,7 @@ mainClass := Some("jartest.Main") packageOptions in (Compile, packageBin) := { def manifestExtra = { val mf = new Manifest - mf.getMainAttributes.put(Attributes.Name.CLASS_PATH, makeString(scalaInstance.value.libraryJar :: Nil)) + mf.getMainAttributes.put(Attributes.Name.CLASS_PATH, makeString(scalaInstance.value.libraryJars)) mf } (packageOptions in (Compile, packageBin)).value :+ Package.JarManifest(manifestExtra) diff --git a/sbt/src/sbt-test/package/resources/build.sbt b/sbt/src/sbt-test/package/resources/build.sbt index b24be8e9c..51f5865e6 100644 --- a/sbt/src/sbt-test/package/resources/build.sbt +++ b/sbt/src/sbt-test/package/resources/build.sbt @@ -1,3 +1,5 @@ +import Path.makeString + name := "Main Resources Test" version := "0.1" @@ -8,7 +10,7 @@ packageOptions := { def manifestExtra = { import java.util.jar._ val mf = new Manifest - mf.getMainAttributes.put(Attributes.Name.CLASS_PATH, scalaInstance.value.libraryJar.getAbsolutePath) + mf.getMainAttributes.put(Attributes.Name.CLASS_PATH, makeString(scalaInstance.value.libraryJars)) mf } Package.JarManifest(manifestExtra) +: packageOptions.value