From 8790a7b45d35eb3f261c4841c8d0c8aeffa7723a Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Fri, 5 Apr 2019 15:28:49 -0400 Subject: [PATCH 1/3] bump to lm 1.3.0-M3 This also adds `CustomHttp.okhttpClient` and `CustomHttp.okhttpClientBuilder` settings to experimentally customize HTTP client. --- main/src/main/scala/sbt/Defaults.scala | 18 +++++++++++++----- .../main/scala/sbt/internal/CustomHttp.scala | 18 ++++++++++++++++++ project/Dependencies.scala | 2 +- 3 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 main/src/main/scala/sbt/internal/CustomHttp.scala diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index cfdddd6a7..166745552 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -30,7 +30,7 @@ import sbt.internal._ import sbt.internal.inc.JavaInterfaceUtil._ import sbt.internal.inc.ZincUtil import sbt.internal.io.{ Source, WatchState } -import sbt.internal.librarymanagement._ +import sbt.internal.librarymanagement.{ CustomHttp => _, _ } import sbt.internal.librarymanagement.mavenint.{ PomExtraDependencyAttributes, SbtPomExtraProperties @@ -217,6 +217,8 @@ object Defaults extends BuildCommon { artifactClassifier :== None, checksums := Classpaths.bootChecksums(appConfiguration.value), conflictManager := ConflictManager.default, + CustomHttp.okhttpClientBuilder :== CustomHttp.defaultHttpClientBuilder, + CustomHttp.okhttpClient := CustomHttp.okhttpClientBuilder.value.build, pomExtra :== NodeSeq.Empty, pomPostProcess :== idFun, pomAllRepositories :== false, @@ -2180,8 +2182,11 @@ object Classpaths { ) else None }, - dependencyResolution := IvyDependencyResolution(ivyConfiguration.value), - publisher := IvyPublisher(ivyConfiguration.value), + dependencyResolution := IvyDependencyResolution( + ivyConfiguration.value, + CustomHttp.okhttpClient.value + ), + publisher := IvyPublisher(ivyConfiguration.value, CustomHttp.okhttpClient.value), ivyConfiguration := mkIvyConfiguration.value, ivyConfigurations := { val confs = thisProject.value.configurations @@ -2428,7 +2433,7 @@ object Classpaths { private[sbt] def ivySbt0: Initialize[Task[IvySbt]] = Def.task { Credentials.register(credentials.value, streams.value.log) - new IvySbt(ivyConfiguration.value) + new IvySbt(ivyConfiguration.value, CustomHttp.okhttpClient.value) } def moduleSettings0: Initialize[Task[ModuleSettings]] = Def.task { ModuleDescriptorConfiguration(projectID.value, projectInfo.value) @@ -2499,7 +2504,10 @@ object Classpaths { ).withScalaOrganization(scalaOrganization.value) ) }, - dependencyResolution := IvyDependencyResolution(ivyConfiguration.value), + dependencyResolution := IvyDependencyResolution( + ivyConfiguration.value, + CustomHttp.okhttpClient.value + ), updateSbtClassifiers in TaskGlobal := (Def.task { val lm = dependencyResolution.value val s = streams.value diff --git a/main/src/main/scala/sbt/internal/CustomHttp.scala b/main/src/main/scala/sbt/internal/CustomHttp.scala new file mode 100644 index 000000000..c62cce702 --- /dev/null +++ b/main/src/main/scala/sbt/internal/CustomHttp.scala @@ -0,0 +1,18 @@ +package sbt.internal + +import sbt.internal.librarymanagement.{ CustomHttp => LMCustomHttp } +import okhttp3._ + +import sbt.BuildSyntax._ +import sbt.KeyRanks._ + +object CustomHttp { + val okhttpClientBuilder = + settingKey[OkHttpClient.Builder]("Builder for the HTTP client.").withRank(CSetting) + val okhttpClient = + settingKey[OkHttpClient]("HTTP client used for library management.").withRank(CSetting) + + def defaultHttpClientBuilder: OkHttpClient.Builder = { + LMCustomHttp.defaultHttpClientBuilder + } +} diff --git a/project/Dependencies.scala b/project/Dependencies.scala index be9c738d9..d866e9d98 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -14,7 +14,7 @@ object Dependencies { private val lmVersion = sys.props.get("sbt.build.lm.version") match { case Some(version) => version - case _ => "1.3.0-M2" + case _ => "1.3.0-M3" } private val zincVersion = "1.3.0-M3" From bf44a6f4460573fa96b7ac37069db3a1d851297e Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sat, 6 Apr 2019 02:08:21 -0400 Subject: [PATCH 2/3] add header --- main/src/main/scala/sbt/internal/CustomHttp.scala | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/main/src/main/scala/sbt/internal/CustomHttp.scala b/main/src/main/scala/sbt/internal/CustomHttp.scala index c62cce702..bc9a12ae2 100644 --- a/main/src/main/scala/sbt/internal/CustomHttp.scala +++ b/main/src/main/scala/sbt/internal/CustomHttp.scala @@ -1,3 +1,10 @@ +/* + * sbt + * Copyright 2011 - 2018, Lightbend, Inc. + * Copyright 2008 - 2010, Mark Harrah + * Licensed under Apache License 2.0 (see LICENSE) + */ + package sbt.internal import sbt.internal.librarymanagement.{ CustomHttp => LMCustomHttp } From 3a355f6025f9ac03505fd396a504a7433022af49 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Mon, 22 Apr 2019 14:19:18 -0400 Subject: [PATCH 3/3] refactor project/transitive-plugins --- .../project/transitive-plugins/a/build.sbt | 11 ---- .../project/transitive-plugins/b/build.sbt | 13 ----- .../project/transitive-plugins/build.sbt | 55 ++++++++++++++----- .../project/transitive-plugins/c/build.sbt | 15 ----- 4 files changed, 41 insertions(+), 53 deletions(-) delete mode 100644 sbt/src/sbt-test/project/transitive-plugins/a/build.sbt delete mode 100644 sbt/src/sbt-test/project/transitive-plugins/b/build.sbt delete mode 100644 sbt/src/sbt-test/project/transitive-plugins/c/build.sbt diff --git a/sbt/src/sbt-test/project/transitive-plugins/a/build.sbt b/sbt/src/sbt-test/project/transitive-plugins/a/build.sbt deleted file mode 100644 index b4dba18b0..000000000 --- a/sbt/src/sbt-test/project/transitive-plugins/a/build.sbt +++ /dev/null @@ -1,11 +0,0 @@ -publishTo := Some(Resolver.file("test-publish", (baseDirectory in ThisBuild).value / "repo/")) -resolvers += ("test" at ((baseDirectory in ThisBuild).value / "repo/").asURL.toString) -resolvers += Resolver.mavenLocal - -name := "demo1" - -organization := "org.example" - -version := "0.1" - -sbtPlugin := true diff --git a/sbt/src/sbt-test/project/transitive-plugins/b/build.sbt b/sbt/src/sbt-test/project/transitive-plugins/b/build.sbt deleted file mode 100644 index f3cc43f01..000000000 --- a/sbt/src/sbt-test/project/transitive-plugins/b/build.sbt +++ /dev/null @@ -1,13 +0,0 @@ -publishTo := Some(Resolver.file("test-publish", (baseDirectory in ThisBuild).value / "repo")) -resolvers += ("test" at ((baseDirectory in ThisBuild).value / "repo").asURL.toString) -resolvers += Resolver.mavenLocal - -name := "demo2" - -organization := "org.example" - -version := "0.2" - -sbtPlugin := true - -addSbtPlugin("org.example" % "demo1" % "0.1") diff --git a/sbt/src/sbt-test/project/transitive-plugins/build.sbt b/sbt/src/sbt-test/project/transitive-plugins/build.sbt index 748bb09e2..163993352 100644 --- a/sbt/src/sbt-test/project/transitive-plugins/build.sbt +++ b/sbt/src/sbt-test/project/transitive-plugins/build.sbt @@ -1,17 +1,44 @@ +ThisBuild / organization := "org.example" lazy val root = (project in file(".")) - -lazy val a = proj(project in file("a")) -lazy val b = proj(project in file("b")) -lazy val c = proj(project in file("c")) - -def proj(p: Project): Project = - p.settings( - ivyPaths := IvyPaths((baseDirectory in root).value, Some((target in root).value / "ivy-cache")), - resolvers += { - val ivyHome = Classpaths.bootIvyHome(appConfiguration.value) getOrElse sys.error("Launcher did not provide the Ivy home directory.") - Resolver.file("real-local", ivyHome / "local")(Resolver.ivyStylePatterns) - }, - resolvers += Resolver.typesafeIvyRepo("releases"), // not sure why this isn't included by default - resolvers += Resolver.mavenLocal + .settings( + commonSettings + ) + +lazy val commonSettings = Seq( + ivyPaths := IvyPaths((baseDirectory in ThisBuild).value, Some((target in LocalRootProject).value / "ivy-cache")), + publishTo := Some(Resolver.file("test-publish", (baseDirectory in ThisBuild).value / "repo/")), + // to get sbt artifacts + resolvers += { + val ivyHome = Classpaths.bootIvyHome(appConfiguration.value) getOrElse sys.error("Launcher did not provide the Ivy home directory.") + Resolver.file("real-local", ivyHome / "local")(Resolver.ivyStylePatterns) + }, + resolvers += Resolver.mavenLocal, + resolvers += ("test-repo" at ((baseDirectory in ThisBuild).value / "repo/").asURL.toString) +) + +lazy val a = (project in file("a")) + .enablePlugins(SbtPlugin) + .settings( + commonSettings, + name := "demo1", + version := "0.1" + ) + +lazy val b = (project in file("b")) + .enablePlugins(SbtPlugin) + .settings( + commonSettings, + name := "demo2", + version := "0.2", + addSbtPlugin("org.example" % "demo1" % "0.1") + ) + +lazy val c = (project in file("c")) + .enablePlugins(SbtPlugin) + .settings( + commonSettings, + name := "demo3", + version := "0.3", + addSbtPlugin("org.example" % "demo2" % "0.2") ) diff --git a/sbt/src/sbt-test/project/transitive-plugins/c/build.sbt b/sbt/src/sbt-test/project/transitive-plugins/c/build.sbt deleted file mode 100644 index 283c7fede..000000000 --- a/sbt/src/sbt-test/project/transitive-plugins/c/build.sbt +++ /dev/null @@ -1,15 +0,0 @@ -publishTo := Some(Resolver.file("test-publish", (baseDirectory in ThisBuild).value / "repo")) -resolvers += ("test" at ((baseDirectory in ThisBuild).value / "repo").asURL.toString) -resolvers += Resolver.mavenLocal - -name := "demo3" - -organization := "org.example" - -version := "0.3" - -sbtPlugin := true - -//addSbtPlugin("org.example" % "demo1" % "0.1") - -addSbtPlugin("org.example" % "demo2" % "0.2")