From 7acc3ac3f6431a71807f3538cc0bec7691cb99ae Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Mon, 22 Jul 2013 16:02:49 +0200 Subject: [PATCH 01/10] use new sbt-cross-building plugin --- build.sbt | 2 ++ project/plugins.sbt | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 5e74aa15e..3c1a62542 100644 --- a/build.sbt +++ b/build.sbt @@ -2,6 +2,8 @@ seq(lsSettings :_*) CrossBuilding.crossSbtVersions := Seq("0.11.1", "0.11.2", "0.11.3", "0.12") +crossBuildingSettings + CrossBuilding.scriptedSettings libraryDependencies += "com.github.mdr" %% "ascii-graphs" % "0.0.2" diff --git a/project/plugins.sbt b/project/plugins.sbt index 80dd7f871..fe876fa09 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -4,4 +4,4 @@ addSbtPlugin("me.lessis" % "ls-sbt" % "0.1.2") resolvers += "Coda Hale's Repo" at "http://repo.codahale.com" -addSbtPlugin("net.virtual-void" % "sbt-cross-building" % "0.7.0") +addSbtPlugin("net.virtual-void" % "sbt-cross-building" % "0.8.0-RC1") From 0ff4284cb6ad6e88faffd98ed2bb805d204a577d Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Mon, 22 Jul 2013 16:03:39 +0200 Subject: [PATCH 02/10] add sbt 0.13 to the cross building versions --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 3c1a62542..0079bca58 100644 --- a/build.sbt +++ b/build.sbt @@ -1,6 +1,6 @@ seq(lsSettings :_*) -CrossBuilding.crossSbtVersions := Seq("0.11.1", "0.11.2", "0.11.3", "0.12") +CrossBuilding.crossSbtVersions := Seq("0.11.1", "0.11.2", "0.11.3", "0.12", "0.13") crossBuildingSettings From 236ecf9e6beab1d5a3a1b9e4df884d51fc8a3162 Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Mon, 22 Jul 2013 16:04:58 +0200 Subject: [PATCH 03/10] fix dependencies to use versions which are available for scala 2.9 and 2.10 --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 0079bca58..4d8645611 100644 --- a/build.sbt +++ b/build.sbt @@ -6,4 +6,4 @@ crossBuildingSettings CrossBuilding.scriptedSettings -libraryDependencies += "com.github.mdr" %% "ascii-graphs" % "0.0.2" +libraryDependencies += "com.github.mdr" %% "ascii-graphs" % "0.0.3" From 5817584e44e6347ca3423ae6d715047b1769854b Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Mon, 22 Jul 2013 16:11:59 +0200 Subject: [PATCH 04/10] workaround for jrudolph/sbt-cross-building#24 --- build.sbt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sbt b/build.sbt index 4d8645611..579a1c8ad 100644 --- a/build.sbt +++ b/build.sbt @@ -1,9 +1,9 @@ seq(lsSettings :_*) -CrossBuilding.crossSbtVersions := Seq("0.11.1", "0.11.2", "0.11.3", "0.12", "0.13") - crossBuildingSettings +CrossBuilding.crossSbtVersions := Seq("0.11.1", "0.11.2", "0.11.3", "0.12", "0.13") + CrossBuilding.scriptedSettings libraryDependencies += "com.github.mdr" %% "ascii-graphs" % "0.0.3" From 60aa77dc1030ab78318955b22fab4012fc87868d Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Mon, 22 Jul 2013 16:12:10 +0200 Subject: [PATCH 05/10] more warnings --- build.sbt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.sbt b/build.sbt index 579a1c8ad..308327c27 100644 --- a/build.sbt +++ b/build.sbt @@ -7,3 +7,5 @@ CrossBuilding.crossSbtVersions := Seq("0.11.1", "0.11.2", "0.11.3", "0.12", "0.1 CrossBuilding.scriptedSettings libraryDependencies += "com.github.mdr" %% "ascii-graphs" % "0.0.3" + +scalacOptions ++= Seq("-deprecation", "-unchecked") From 8836c5e174b5d1438143cf98aa5d7c11b0f5d395 Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Mon, 22 Jul 2013 16:12:44 +0200 Subject: [PATCH 06/10] use linked plugins.sbt for all scripted tests --- .../intervalRangedVersions/project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 120000 src/sbt-test/sbt-dependency-graph/intervalRangedVersions/project/plugins.sbt diff --git a/src/sbt-test/sbt-dependency-graph/intervalRangedVersions/project/plugins.sbt b/src/sbt-test/sbt-dependency-graph/intervalRangedVersions/project/plugins.sbt deleted file mode 100644 index aa477166c..000000000 --- a/src/sbt-test/sbt-dependency-graph/intervalRangedVersions/project/plugins.sbt +++ /dev/null @@ -1 +0,0 @@ -addSbtPlugin("net.virtual-void" % "sbt-dependency-graph" % "0.7.3-SNAPSHOT") diff --git a/src/sbt-test/sbt-dependency-graph/intervalRangedVersions/project/plugins.sbt b/src/sbt-test/sbt-dependency-graph/intervalRangedVersions/project/plugins.sbt new file mode 120000 index 000000000..0caf1de77 --- /dev/null +++ b/src/sbt-test/sbt-dependency-graph/intervalRangedVersions/project/plugins.sbt @@ -0,0 +1 @@ +../../plugins.sbt \ No newline at end of file From f8b00e65119f9f5d80b95f6e5f18f95d583b8cf8 Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Mon, 22 Jul 2013 16:13:06 +0200 Subject: [PATCH 07/10] give every sub-project its own directory in scripted test --- .../testDotFileGeneration/project/Build.scala | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sbt-test/sbt-dependency-graph/testDotFileGeneration/project/Build.scala b/src/sbt-test/sbt-dependency-graph/testDotFileGeneration/project/Build.scala index 2becd0917..a4a1622ba 100644 --- a/src/sbt-test/sbt-dependency-graph/testDotFileGeneration/project/Build.scala +++ b/src/sbt-test/sbt-dependency-graph/testDotFileGeneration/project/Build.scala @@ -10,20 +10,20 @@ object Build extends sbt.Build { seq(scalaVersion := "2.9.2") lazy val justATransiviteDependencyEndpointProject = - Project("just-a-transitive-dependency-endpoint", file(".")) + Project("just-a-transitive-dependency-endpoint", file("a")) .settings(defaultSettings: _*) lazy val justATransitiveDependencyProject = - Project("just-a-transitive-dependency", file(".")) + Project("just-a-transitive-dependency", file("b")) .settings(defaultSettings: _*) .dependsOn(justATransiviteDependencyEndpointProject) lazy val justADependencyProject = - Project("just-a-dependency", file(".")) + Project("just-a-dependency", file("c")) .settings(defaultSettings: _*) lazy val test_project = - Project("test-dot-file-generation", file(".")) + Project("test-dot-file-generation", file("d")) .settings(graphSettings: _*) .settings(defaultSettings: _*) .settings( From 2b20d7fa4190e377d3be4fd39112abbbe5d1383c Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Mon, 22 Jul 2013 16:13:58 +0200 Subject: [PATCH 08/10] fix test to use scala version known to have no conflicts --- .../sbt-dependency-graph/intervalRangedVersions/build.sbt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/sbt-test/sbt-dependency-graph/intervalRangedVersions/build.sbt b/src/sbt-test/sbt-dependency-graph/intervalRangedVersions/build.sbt index 19030bcf6..0ef12f58a 100644 --- a/src/sbt-test/sbt-dependency-graph/intervalRangedVersions/build.sbt +++ b/src/sbt-test/sbt-dependency-graph/intervalRangedVersions/build.sbt @@ -2,7 +2,7 @@ import net.virtualvoid.sbt.graph.Plugin._ graphSettings -scalaVersion := "2.9.2" +scalaVersion := "2.9.1" libraryDependencies ++= Seq( "com.codahale" % "jerkson_2.9.1" % "0.5.0" @@ -13,9 +13,9 @@ TaskKey[Unit]("check") <<= (ivyReport in Test, asciiTree in Test) map { (report, val expectedGraph = """default:default-dbc48d_2.9.2:0.1-SNAPSHOT [S] | +-com.codahale:jerkson_2.9.1:0.5.0 [S] - | +-org.codehaus.jackson:jackson-core-asl:1.9.12 - | +-org.codehaus.jackson:jackson-mapper-asl:1.9.12 - | +-org.codehaus.jackson:jackson-core-asl:1.9.12 + | +-org.codehaus.jackson:jackson-core-asl:1.9.13 + | +-org.codehaus.jackson:jackson-mapper-asl:1.9.13 + | +-org.codehaus.jackson:jackson-core-asl:1.9.13 | """.stripMargin IO.writeLines(file("/tmp/blib"), sanitize(graph).split("\n")) IO.writeLines(file("/tmp/blub"), sanitize(expectedGraph).split("\n")) From 9d373bee73b65b04055dfd0fb2356363da20dd7a Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Mon, 22 Jul 2013 16:20:56 +0200 Subject: [PATCH 09/10] reorganize ignoreMissingUpdate to rely on `updateConfiguration in ignoreMissingUpdate` --- src/main/scala-sbt-0.11/sbt/SbtDependencyGraphCompat.scala | 5 ++--- src/main/scala-sbt-0.12/sbt/SbtDependencyGraphCompat.scala | 5 ++--- src/main/scala/net/virtualvoid/sbt/graph/Plugin.scala | 1 + 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/scala-sbt-0.11/sbt/SbtDependencyGraphCompat.scala b/src/main/scala-sbt-0.11/sbt/SbtDependencyGraphCompat.scala index 6a4bc3535..e6ff9bb49 100644 --- a/src/main/scala-sbt-0.11/sbt/SbtDependencyGraphCompat.scala +++ b/src/main/scala-sbt-0.11/sbt/SbtDependencyGraphCompat.scala @@ -9,11 +9,10 @@ object SbtDependencyGraphCompat { * to ignore missing artifacts. */ def ignoreMissingUpdateT = - ignoreMissingUpdate <<= (ivyModule, thisProjectRef, updateConfiguration, cacheDirectory, scalaInstance, transitiveUpdate, streams) map { (module, ref, config, cacheDirectory, si, reports, s) => + ignoreMissingUpdate <<= (ivyModule, thisProjectRef, updateConfiguration in ignoreMissingUpdate, cacheDirectory, scalaInstance, transitiveUpdate, streams) map { (module, ref, config, cacheDirectory, si, reports, s) => val depsUpdated = reports.exists(!_.stats.cached) - val missingOkConfig = new UpdateConfiguration(config.retrieve, true, config.logging) - Classpaths.cachedUpdate(cacheDirectory / "update", Project.display(ref), module, missingOkConfig, Some(si), depsUpdated, s.log) + Classpaths.cachedUpdate(cacheDirectory / "update", Project.display(ref), module, config, Some(si), depsUpdated, s.log) } import complete.DefaultParsers._ diff --git a/src/main/scala-sbt-0.12/sbt/SbtDependencyGraphCompat.scala b/src/main/scala-sbt-0.12/sbt/SbtDependencyGraphCompat.scala index 72826e3f5..56df72740 100644 --- a/src/main/scala-sbt-0.12/sbt/SbtDependencyGraphCompat.scala +++ b/src/main/scala-sbt-0.12/sbt/SbtDependencyGraphCompat.scala @@ -9,13 +9,12 @@ object SbtDependencyGraphCompat { * to ignore missing artifacts. */ def ignoreMissingUpdateT = - ignoreMissingUpdate <<= (ivyModule, thisProjectRef, updateConfiguration, cacheDirectory, scalaInstance, transitiveUpdate, executionRoots, resolvedScoped, skip in update, streams) map { + ignoreMissingUpdate <<= (ivyModule, thisProjectRef, updateConfiguration in ignoreMissingUpdate, cacheDirectory, scalaInstance, transitiveUpdate, executionRoots, resolvedScoped, skip in update, streams) map { (module, ref, config, cacheDirectory, si, reports, roots, resolved, skip, s) => val depsUpdated = reports.exists(!_.stats.cached) val isRoot = roots contains resolved - val missingOkConfig = new UpdateConfiguration(config.retrieve, true, config.logging) - Classpaths.cachedUpdate(cacheDirectory / "update", Project.display(ref), module, missingOkConfig, Some(si), skip = skip, force = isRoot, depsUpdated = depsUpdated, log = s.log) + Classpaths.cachedUpdate(cacheDirectory / "update", Project.display(ref), module, config, Some(si), skip = skip, force = isRoot, depsUpdated = depsUpdated, log = s.log) } tag(Tags.Update, Tags.Network) def getTerminalWidth: Int = JLine.usingTerminal(_.getTerminalWidth) diff --git a/src/main/scala/net/virtualvoid/sbt/graph/Plugin.scala b/src/main/scala/net/virtualvoid/sbt/graph/Plugin.scala index 4ca5fd38a..24f6cca6a 100755 --- a/src/main/scala/net/virtualvoid/sbt/graph/Plugin.scala +++ b/src/main/scala/net/virtualvoid/sbt/graph/Plugin.scala @@ -79,6 +79,7 @@ object Plugin extends sbt.Plugin { (c: String) => file("%s/cache/%s-%s-%s.xml" format (home, projectID.organization, crossName(ivyModule), c)) } }, + updateConfiguration in ignoreMissingUpdate <<= updateConfiguration(config => new UpdateConfiguration(config.retrieve, true, config.logging)), SbtDependencyGraphCompat.ignoreMissingUpdateT, filterScalaLibrary in Global := true ) ++ Seq(Compile, Test, Runtime, Provided, Optional).flatMap(ivyReportForConfig) From f7c66f5cd174280845cd5b8ec1d267c833ecfcf7 Mon Sep 17 00:00:00 2001 From: Johannes Rudolph Date: Mon, 22 Jul 2013 16:24:15 +0200 Subject: [PATCH 10/10] add support for sbt 0.13, fixes #35 --- build.sbt | 5 +++ .../sbt/SbtDependencyGraphCompat.scala | 39 +++++++++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 src/main/scala-sbt-0.13/sbt/SbtDependencyGraphCompat.scala diff --git a/build.sbt b/build.sbt index 308327c27..5000fd925 100644 --- a/build.sbt +++ b/build.sbt @@ -8,4 +8,9 @@ CrossBuilding.scriptedSettings libraryDependencies += "com.github.mdr" %% "ascii-graphs" % "0.0.3" +libraryDependencies <++= scalaVersion { version => + if (version startsWith "2.1") Seq("org.scala-lang" % "scala-reflect" % version % "provided") + else Nil +} + scalacOptions ++= Seq("-deprecation", "-unchecked") diff --git a/src/main/scala-sbt-0.13/sbt/SbtDependencyGraphCompat.scala b/src/main/scala-sbt-0.13/sbt/SbtDependencyGraphCompat.scala new file mode 100644 index 000000000..a75305639 --- /dev/null +++ b/src/main/scala-sbt-0.13/sbt/SbtDependencyGraphCompat.scala @@ -0,0 +1,39 @@ +package sbt + +import net.virtualvoid.sbt.graph.Plugin._ +import Keys._ +import CrossVersion._ + +object SbtDependencyGraphCompat { + /** + * This is copied directly from sbt/main/Defaults.java and then changed to update the UpdateConfiguration + * to ignore missing artifacts. + */ + def ignoreMissingUpdateT = + ignoreMissingUpdate <<= Def.task { + val depsUpdated = transitiveUpdate.value.exists(!_.stats.cached) + val isRoot = executionRoots.value contains resolvedScoped.value + val s = streams.value + val scalaProvider = appConfiguration.value.provider.scalaProvider + + // Only substitute unmanaged jars for managed jars when the major.minor parts of the versions the same for: + // the resolved Scala version and the scalaHome version: compatible (weakly- no qualifier checked) + // the resolved Scala version and the declared scalaVersion: assume the user intended scalaHome to override anything with scalaVersion + def subUnmanaged(subVersion: String, jars: Seq[File]) = (sv: String) => + (partialVersion(sv), partialVersion(subVersion), partialVersion(scalaVersion.value)) match { + case (Some(res), Some(sh), _) if res == sh => jars + case (Some(res), _, Some(decl)) if res == decl => jars + case _ => Nil + } + val subScalaJars: String => Seq[File] = Defaults.unmanagedScalaInstanceOnly.value match { + case Some(si) => subUnmanaged(si.version, si.jars) + case None => sv => if(scalaProvider.version == sv) scalaProvider.jars else Nil + } + val transform: UpdateReport => UpdateReport = r => Classpaths.substituteScalaFiles(scalaOrganization.value, r)(subScalaJars) + + val show = Reference.display(thisProjectRef.value) + Classpaths.cachedUpdate(s.cacheDirectory, show, ivyModule.value, (updateConfiguration in ignoreMissingUpdate).value, transform, skip = (skip in update).value, force = isRoot, depsUpdated = depsUpdated, log = s.log) + } + + def getTerminalWidth: Int = JLine.usingTerminal(_.getWidth) +}