From dda803085e5bd5cd325a5de0f3a8b946f7e369e1 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Thu, 25 Feb 2016 23:00:57 -0500 Subject: [PATCH 1/6] Merge --- launch/src/main/input_resources/sbt/sbt.boot.properties | 2 +- src/main/conscript/sbt/launchconfig | 1 - src/main/conscript/scalas/launchconfig | 1 - src/main/conscript/screpl/launchconfig | 1 - 4 files changed, 1 insertion(+), 4 deletions(-) diff --git a/launch/src/main/input_resources/sbt/sbt.boot.properties b/launch/src/main/input_resources/sbt/sbt.boot.properties index 3bbd92970..c19b6aa57 100644 --- a/launch/src/main/input_resources/sbt/sbt.boot.properties +++ b/launch/src/main/input_resources/sbt/sbt.boot.properties @@ -12,10 +12,10 @@ [repositories] local - jcenter: https://jcenter.bintray.com/ maven-central typesafe-ivy-releases: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly sbt-ivy-snapshots: https://repo.scala-sbt.org/scalasbt/ivy-snapshots/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly +${{repositories}} [boot] directory: ${sbt.boot.directory-${sbt.global.base-${user.home}/.sbt}/boot/} diff --git a/src/main/conscript/sbt/launchconfig b/src/main/conscript/sbt/launchconfig index 81d7bfd1b..033dc550b 100644 --- a/src/main/conscript/sbt/launchconfig +++ b/src/main/conscript/sbt/launchconfig @@ -12,7 +12,6 @@ [repositories] local - jcenter: https://jcenter.bintray.com/ maven-central typesafe-ivy-releases: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly sbt-ivy-snapshots: https://repo.scala-sbt.org/scalasbt/ivy-snapshots/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly diff --git a/src/main/conscript/scalas/launchconfig b/src/main/conscript/scalas/launchconfig index ff63d0fa8..0d0d5664c 100644 --- a/src/main/conscript/scalas/launchconfig +++ b/src/main/conscript/scalas/launchconfig @@ -12,7 +12,6 @@ [repositories] local - jcenter: https://jcenter.bintray.com/ maven-central typesafe-ivy-releases: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly sbt-ivy-snapshots: https://repo.scala-sbt.org/scalasbt/ivy-snapshots/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly diff --git a/src/main/conscript/screpl/launchconfig b/src/main/conscript/screpl/launchconfig index ffdf06ee8..afa5eb125 100644 --- a/src/main/conscript/screpl/launchconfig +++ b/src/main/conscript/screpl/launchconfig @@ -12,7 +12,6 @@ [repositories] local - jcenter: https://jcenter.bintray.com/ maven-central typesafe-ivy-releases: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly sbt-ivy-snapshots: https://repo.scala-sbt.org/scalasbt/ivy-snapshots/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly From 31e07492c7363c73117c19e064023d1d3c972c1a Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Fri, 25 Dec 2015 21:49:01 -0500 Subject: [PATCH 2/6] Add JCenter change to 0.13.9's notes --- notes/0.13.9.markdown | 2 ++ 1 file changed, 2 insertions(+) diff --git a/notes/0.13.9.markdown b/notes/0.13.9.markdown index dab3fcd0f..e82387097 100644 --- a/notes/0.13.9.markdown +++ b/notes/0.13.9.markdown @@ -51,12 +51,14 @@ [2046]: https://github.com/sbt/sbt/issues/2046 [2097]: https://github.com/sbt/sbt/pull/2097 [2129]: https://github.com/sbt/sbt/pull/2129 + [1938]: https://github.com/sbt/sbt/pull/1938 ### Fixes with compatibility implications - Starting 0.13.9, `crossScalaVersions` default value is fixed back to the older 0.12.x behavior. See below for details. - Starting 0.13.9, the generated POM files no longer include dependencies on source or javadoc jars obtained via `withSources()` or `withJavadoc()`. See below for details. - Scala version is bumped to 2.10.5. This brings in the fix for [SI-9027][SI9027]: XML node sequence literal bug. [#1666][1666]/[#2068][2068] by [@eed3si9n][@eed3si9n] +- Change launcher configuration so [JCenter](https://bintray.com/bintray/jcenter) is looked at first before all other external repositories. [#1938][1938] ### Improvements From cd373c99ad730f9daacf3dd378aa71dfe7b1dcd7 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Fri, 25 Dec 2015 23:20:56 -0500 Subject: [PATCH 3/6] Add useJCenter setting, which is set to false. Fixes #2217 Adds a new setting `useJCenter`, which is set to `false` by default. When set to `true`, JCenter will be placed as the first external resolver to find library dependencies. The implementation of `externalResolvers` is changed to incorporate the setting by calling `Resolver.reorganizeAppResolvers`. These changes were required because `externalResolvers` uses whatever that's in the launchconfig, which the build user may not upgrade. --- main/src/main/scala/sbt/Defaults.scala | 9 +++++---- main/src/main/scala/sbt/Keys.scala | 1 + notes/0.13.10/make-JCenter-opt-in.markdown | 7 +++++++ .../default-resolvers/build.sbt | 16 ++++++++++++++++ .../dependency-management/default-resolvers/test | 5 +++++ 5 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 notes/0.13.10/make-JCenter-opt-in.markdown create mode 100644 sbt/src/sbt-test/dependency-management/default-resolvers/build.sbt create mode 100644 sbt/src/sbt-test/dependency-management/default-resolvers/test diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 2860c67d8..519467705 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -1148,6 +1148,7 @@ object Classpaths { moduleConfigurations :== Nil, publishTo :== None, resolvers :== Nil, + useJCenter :== false, retrievePattern :== Resolver.defaultRetrievePattern, transitiveClassifiers :== Seq(SourceClassifier, DocClassifier), sourceArtifactTypes :== Artifact.DefaultSourceTypes, @@ -1174,10 +1175,10 @@ object Classpaths { organizationHomepage <<= organizationHomepage or homepage, projectInfo <<= (name, description, homepage, startYear, licenses, organizationName, organizationHomepage, scmInfo, developers) apply ModuleInfo, overrideBuildResolvers <<= appConfiguration(isOverrideRepositories), - externalResolvers <<= (externalResolvers.task.?, resolvers, appResolvers) { - case (Some(delegated), Seq(), _) => delegated - case (_, rs, Some(ars)) => task { ars ++ rs } // TODO - Do we need to filter out duplicates? - case (_, rs, _) => task { Resolver.withDefaultResolvers(rs) } + externalResolvers <<= (externalResolvers.task.?, resolvers, appResolvers, useJCenter) { + case (Some(delegated), Seq(), _, _) => delegated + case (_, rs, Some(ars), uj) => task { ars ++ Resolver.reorganizeAppResolvers(rs, uj, true) } + case (_, rs, _, uj) => task { Resolver.withDefaultResolvers(rs, uj) } }, appResolvers <<= appConfiguration apply appRepositories, bootResolvers <<= appConfiguration map bootRepositories, diff --git a/main/src/main/scala/sbt/Keys.scala b/main/src/main/scala/sbt/Keys.scala index 5536feeca..86ef49416 100644 --- a/main/src/main/scala/sbt/Keys.scala +++ b/main/src/main/scala/sbt/Keys.scala @@ -345,6 +345,7 @@ object Keys { val projectResolver = TaskKey[Resolver]("project-resolver", "Resolver that handles inter-project dependencies.", DTask) val fullResolvers = TaskKey[Seq[Resolver]]("full-resolvers", "Combines the project resolver, default resolvers, and user-defined resolvers.", CTask) val otherResolvers = SettingKey[Seq[Resolver]]("other-resolvers", "Resolvers not included in the main resolver chain, such as those in module configurations.", CSetting) + val useJCenter = SettingKey[Boolean]("use-jcenter", "Use JCenter as the default repository.", BSetting) val moduleConfigurations = SettingKey[Seq[ModuleConfiguration]]("module-configurations", "Defines module configurations, which override resolvers on a per-module basis.", BMinusSetting) val retrievePattern = SettingKey[String]("retrieve-pattern", "Pattern used to retrieve managed dependencies to the current build.", DSetting) val retrieveConfiguration = SettingKey[Option[RetrieveConfiguration]]("retrieve-configuration", "Configures retrieving dependencies to the current build.", DSetting) diff --git a/notes/0.13.10/make-JCenter-opt-in.markdown b/notes/0.13.10/make-JCenter-opt-in.markdown new file mode 100644 index 000000000..6ca9bec03 --- /dev/null +++ b/notes/0.13.10/make-JCenter-opt-in.markdown @@ -0,0 +1,7 @@ + + [@eed3si9n]: https://github.com/eed3si9n + [2217]: https://github.com/sbt/sbt/issues/2217 + +### Fixes with compatibility implications + +- sbt 0.13.10 adds a new setting `useJCenter`, which is set to `false` by default. When set to `true`, JCenter will be placed as the first external resolver to find library dependencies. [#2217][2217] by [@eed3si9n][@eed3si9n] diff --git a/sbt/src/sbt-test/dependency-management/default-resolvers/build.sbt b/sbt/src/sbt-test/dependency-management/default-resolvers/build.sbt new file mode 100644 index 000000000..dfb7fbb1c --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/default-resolvers/build.sbt @@ -0,0 +1,16 @@ +lazy val check = taskKey[Unit]("") +lazy val check2 = taskKey[Unit]("") + +lazy val root = (project in file(".")). + settings( + check := { + val fr = fullResolvers.value + assert(!(fr exists { _.name == "jcenter" })) + assert(fr exists { _.name == "public" }) + }, + check2 := { + val fr = fullResolvers.value + assert(fr exists { _.name == "jcenter" }) + assert(fr exists { _.name == "public" }) + } + ) diff --git a/sbt/src/sbt-test/dependency-management/default-resolvers/test b/sbt/src/sbt-test/dependency-management/default-resolvers/test new file mode 100644 index 000000000..2513e8edf --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/default-resolvers/test @@ -0,0 +1,5 @@ +> check + +> set useJCenter := true + +> check2 From f41d53e20f9c3e79336f6d814025ce1a76530a2a Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Thu, 25 Feb 2016 23:07:39 -0500 Subject: [PATCH 4/6] Minor fix from merging --- launch/src/main/input_resources/sbt/sbt.boot.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/launch/src/main/input_resources/sbt/sbt.boot.properties b/launch/src/main/input_resources/sbt/sbt.boot.properties index c19b6aa57..9234be5f8 100644 --- a/launch/src/main/input_resources/sbt/sbt.boot.properties +++ b/launch/src/main/input_resources/sbt/sbt.boot.properties @@ -15,7 +15,6 @@ maven-central typesafe-ivy-releases: https://repo.typesafe.com/typesafe/ivy-releases/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly sbt-ivy-snapshots: https://repo.scala-sbt.org/scalasbt/ivy-snapshots/, [organization]/[module]/[revision]/[type]s/[artifact](-[classifier]).[ext], bootOnly -${{repositories}} [boot] directory: ${sbt.boot.directory-${sbt.global.base-${user.home}/.sbt}/boot/} From b1b7430d9ca77dbe5fa65e4b3e9cc83d765776f2 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sun, 21 Feb 2016 04:08:12 -0500 Subject: [PATCH 5/6] Fixes #2464. Actually reorganize appResolvers Fixes #2464 and Fixes #2465 appResolvers is a set of resolvers specified in the launcher configuration. This list fluctuates depending on the version of sbt, and sbt 0.13.10 meant to stabilize it by weeding out JCenter even when it includes it, which failed when I applied the filter on the wrong list. This should correct it. --- main/src/main/scala/sbt/Defaults.scala | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 519467705..c29c31ad7 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -1177,10 +1177,14 @@ object Classpaths { overrideBuildResolvers <<= appConfiguration(isOverrideRepositories), externalResolvers <<= (externalResolvers.task.?, resolvers, appResolvers, useJCenter) { case (Some(delegated), Seq(), _, _) => delegated - case (_, rs, Some(ars), uj) => task { ars ++ Resolver.reorganizeAppResolvers(rs, uj, true) } - case (_, rs, _, uj) => task { Resolver.withDefaultResolvers(rs, uj) } + case (_, rs, Some(ars), uj) => task { ars ++ rs } + case (_, rs, _, uj) => task { Resolver.withDefaultResolvers(rs, uj, true) } + }, + appResolvers := { + val ac = appConfiguration.value + val uj = useJCenter.value + appRepositories(ac) map { ars => Resolver.reorganizeAppResolvers(ars, uj, true) } }, - appResolvers <<= appConfiguration apply appRepositories, bootResolvers <<= appConfiguration map bootRepositories, fullResolvers <<= (projectResolver, externalResolvers, sbtPlugin, sbtResolver, bootResolvers, overrideBuildResolvers) map { (proj, rs, isPlugin, sbtr, boot, overrideFlag) => boot match { From 5a0df332936d781c2ea6847bc0fe4733a1c094ec Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sun, 21 Feb 2016 06:44:35 -0500 Subject: [PATCH 6/6] Adds test for #2466 per review --- .../sbt-test/dependency-management/default-resolvers/test | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sbt/src/sbt-test/dependency-management/default-resolvers/test b/sbt/src/sbt-test/dependency-management/default-resolvers/test index 2513e8edf..0d310c9f5 100644 --- a/sbt/src/sbt-test/dependency-management/default-resolvers/test +++ b/sbt/src/sbt-test/dependency-management/default-resolvers/test @@ -3,3 +3,9 @@ > set useJCenter := true > check2 + +> reload + +> set resolvers += Resolver.jcenterRepo + +> check2