From c338e87d0a91d2654d9295a8f603768b0c4e73b6 Mon Sep 17 00:00:00 2001 From: Martin Duhem Date: Mon, 14 Mar 2016 15:57:41 +0100 Subject: [PATCH 1/4] Pending test for sbt/sbt#2435 --- .../a/A.scala | 5 ++++ .../b/B.scala | 5 ++++ .../build.sbt | 22 ++++++++++++++++++ .../cached-resolution-configurations/pending | 11 +++++++++ .../repo/a/b/1.0.0/b1.jar | Bin 0 -> 718 bytes .../repo/a/b/1.0.0/b2.jar | Bin 0 -> 718 bytes .../repo/a/b/1.0.0/b3.jar | Bin 0 -> 3849 bytes .../repo/a/b/1.0.0/ivy.xml | 16 +++++++++++++ .../repo/a/b/1.0.1/b1.jar | Bin 0 -> 718 bytes .../repo/a/b/1.0.1/b2.jar | Bin 0 -> 718 bytes .../repo/a/b/1.0.1/b3.jar | Bin 0 -> 3849 bytes .../repo/a/b/1.0.1/ivy.xml | 16 +++++++++++++ 12 files changed, 75 insertions(+) create mode 100644 sbt/src/sbt-test/dependency-management/cached-resolution-configurations/a/A.scala create mode 100644 sbt/src/sbt-test/dependency-management/cached-resolution-configurations/b/B.scala create mode 100644 sbt/src/sbt-test/dependency-management/cached-resolution-configurations/build.sbt create mode 100644 sbt/src/sbt-test/dependency-management/cached-resolution-configurations/pending create mode 100644 sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/b1.jar create mode 100644 sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/b2.jar create mode 100644 sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/b3.jar create mode 100644 sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/ivy.xml create mode 100644 sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/b1.jar create mode 100644 sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/b2.jar create mode 100644 sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/b3.jar create mode 100644 sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/ivy.xml diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/a/A.scala b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/a/A.scala new file mode 100644 index 000000000..4e33d90d9 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/a/A.scala @@ -0,0 +1,5 @@ +package a + +object A { + romanowski.sbt.bug.MissingClass("A") +} diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/b/B.scala b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/b/B.scala new file mode 100644 index 000000000..acf3023b8 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/b/B.scala @@ -0,0 +1,5 @@ +package b + +object B { + romanowski.sbt.bug.MissingClass("A") +} diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/build.sbt b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/build.sbt new file mode 100644 index 000000000..3665d3634 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/build.sbt @@ -0,0 +1,22 @@ +def myResolver = resolvers += Resolver.file("buggy", file("repo"))( + Patterns( + ivyPatterns = Seq("[organization]/[module]/[revision]/ivy.xml"), + artifactPatterns = Seq("[organization]/[module]/[revision]/[artifact]"), + isMavenCompatible = false, + descriptorOptional = true, + skipConsistencyCheck = true + ) +) + +lazy val a = project settings( + myResolver, + updateOptions := updateOptions.value.withCachedResolution(true), //comment this line to make ws compile + libraryDependencies += "a" % "b" % "1.0.0" % "compile->runtime", + libraryDependencies += "a" % "b" % "1.0.0" % "compile->runtime2" +) + +lazy val b = project dependsOn(a) settings( + myResolver, + updateOptions := updateOptions.value.withCachedResolution(true), //comment this line to make ws compile + libraryDependencies += "a" % "b" % "1.0.1" % "compile->runtime" +) diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/pending b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/pending new file mode 100644 index 000000000..6fdf810e0 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/pending @@ -0,0 +1,11 @@ +# In this test, we have a project `a`, on which a project `b` depends. +# project `a` has a library dependency on: +# - "a" % "b" % "1.0.0" % "compile->runtime" +# - "a" % "b" % "1.0.0" % "compile->runtime2" +# project "b" depends on: +# - project `a` +# - "b" % "b" % "1.0.1" % "compile->runtime" +# "a" % "b" % "1.0.0" will be evicted in favor of "a" % "b" % "1.0.1", but we +# have to keep the dependency on the two configurations "runtime" and "runtime2". +# This test makes sure that we actually do. +> compile diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/b1.jar b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/b1.jar new file mode 100644 index 0000000000000000000000000000000000000000..619fa9368613a1a6314479f29f8b0ca95e9930cc GIT binary patch literal 718 zcmWIWW@Zs#;Nak3U=J|yU_b&Q3@i-3t|5-Po_=onzK(vLZmz*0dcJP|PBAci_C0gj z$6HtLBCofu*10q1HwPJ9F@Es$(;3|po@af}YJ2K1axtlX4*Jx+MnuRk#mUIKC}^Xn z!WmJ6Ptwz3#dw$hAW5{cMfv_k+GIt~~lIEjM)M>95sI z5r1_`9X+zXWa>B<)bzcAa+s@ky=LIN#I`{njqtlt@1%0XgF_Gmg?Ca)AW}o7>Idt;nB3Ajc zYBnq^>+eYTDJGpew{nkX*<#MW7LWIEPnF*4^|h3>rTIq0-_q@|FaPYnG$(zx%|-EL zN{4Tro0hg(e3`);uk6i1Q`I*Asd-#j(^Bx`ah72Ixq}r4bZ!+p?D^4qO+QbjL^7IR z>DG&aw;xx&6_sQ8`&YM7J%%|*+4F4EG@iP7Y^|gtN3=F%0IKZ2cNrVBB uc#z`^lz319uB3!)3MhV&Z2-kD0xSkH;jtay&B_LnVgkZiAZ^VA;sF3jz6q58 literal 0 HcmV?d00001 diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/b2.jar b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/b2.jar new file mode 100644 index 0000000000000000000000000000000000000000..619fa9368613a1a6314479f29f8b0ca95e9930cc GIT binary patch literal 718 zcmWIWW@Zs#;Nak3U=J|yU_b&Q3@i-3t|5-Po_=onzK(vLZmz*0dcJP|PBAci_C0gj z$6HtLBCofu*10q1HwPJ9F@Es$(;3|po@af}YJ2K1axtlX4*Jx+MnuRk#mUIKC}^Xn z!WmJ6Ptwz3#dw$hAW5{cMfv_k+GIt~~lIEjM)M>95sI z5r1_`9X+zXWa>B<)bzcAa+s@ky=LIN#I`{njqtlt@1%0XgF_Gmg?Ca)AW}o7>Idt;nB3Ajc zYBnq^>+eYTDJGpew{nkX*<#MW7LWIEPnF*4^|h3>rTIq0-_q@|FaPYnG$(zx%|-EL zN{4Tro0hg(e3`);uk6i1Q`I*Asd-#j(^Bx`ah72Ixq}r4bZ!+p?D^4qO+QbjL^7IR z>DG&aw;xx&6_sQ8`&YM7J%%|*+4F4EG@iP7Y^|gtN3=F%0IKZ2cNrVBB uc#z`^lz319uB3!)3MhV&Z2-kD0xSkH;jtay&B_LnVgkZiAZ^VA;sF3jz6q58 literal 0 HcmV?d00001 diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/b3.jar b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/b3.jar new file mode 100644 index 0000000000000000000000000000000000000000..1c3f8c4e1fa3efc98b9500acd55465f08f41ea2b GIT binary patch literal 3849 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 U@Z6#T07U1<)AL63DK4J=4Ke?MjsO4v literal 0 HcmV?d00001 diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/ivy.xml b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/ivy.xml new file mode 100644 index 000000000..19fab2e82 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.0/ivy.xml @@ -0,0 +1,16 @@ + + + a + + + + + + + + + + + + + diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/b1.jar b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/b1.jar new file mode 100644 index 0000000000000000000000000000000000000000..619fa9368613a1a6314479f29f8b0ca95e9930cc GIT binary patch literal 718 zcmWIWW@Zs#;Nak3U=J|yU_b&Q3@i-3t|5-Po_=onzK(vLZmz*0dcJP|PBAci_C0gj z$6HtLBCofu*10q1HwPJ9F@Es$(;3|po@af}YJ2K1axtlX4*Jx+MnuRk#mUIKC}^Xn z!WmJ6Ptwz3#dw$hAW5{cMfv_k+GIt~~lIEjM)M>95sI z5r1_`9X+zXWa>B<)bzcAa+s@ky=LIN#I`{njqtlt@1%0XgF_Gmg?Ca)AW}o7>Idt;nB3Ajc zYBnq^>+eYTDJGpew{nkX*<#MW7LWIEPnF*4^|h3>rTIq0-_q@|FaPYnG$(zx%|-EL zN{4Tro0hg(e3`);uk6i1Q`I*Asd-#j(^Bx`ah72Ixq}r4bZ!+p?D^4qO+QbjL^7IR z>DG&aw;xx&6_sQ8`&YM7J%%|*+4F4EG@iP7Y^|gtN3=F%0IKZ2cNrVBB uc#z`^lz319uB3!)3MhV&Z2-kD0xSkH;jtay&B_LnVgkZiAZ^VA;sF3jz6q58 literal 0 HcmV?d00001 diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/b2.jar b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/b2.jar new file mode 100644 index 0000000000000000000000000000000000000000..619fa9368613a1a6314479f29f8b0ca95e9930cc GIT binary patch literal 718 zcmWIWW@Zs#;Nak3U=J|yU_b&Q3@i-3t|5-Po_=onzK(vLZmz*0dcJP|PBAci_C0gj z$6HtLBCofu*10q1HwPJ9F@Es$(;3|po@af}YJ2K1axtlX4*Jx+MnuRk#mUIKC}^Xn z!WmJ6Ptwz3#dw$hAW5{cMfv_k+GIt~~lIEjM)M>95sI z5r1_`9X+zXWa>B<)bzcAa+s@ky=LIN#I`{njqtlt@1%0XgF_Gmg?Ca)AW}o7>Idt;nB3Ajc zYBnq^>+eYTDJGpew{nkX*<#MW7LWIEPnF*4^|h3>rTIq0-_q@|FaPYnG$(zx%|-EL zN{4Tro0hg(e3`);uk6i1Q`I*Asd-#j(^Bx`ah72Ixq}r4bZ!+p?D^4qO+QbjL^7IR z>DG&aw;xx&6_sQ8`&YM7J%%|*+4F4EG@iP7Y^|gtN3=F%0IKZ2cNrVBB uc#z`^lz319uB3!)3MhV&Z2-kD0xSkH;jtay&B_LnVgkZiAZ^VA;sF3jz6q58 literal 0 HcmV?d00001 diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/b3.jar b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/b3.jar new file mode 100644 index 0000000000000000000000000000000000000000..1c3f8c4e1fa3efc98b9500acd55465f08f41ea2b GIT binary patch literal 3849 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 U@Z6#T07U1<)AL63DK4J=4Ke?MjsO4v literal 0 HcmV?d00001 diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/ivy.xml b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/ivy.xml new file mode 100644 index 000000000..a734f26d0 --- /dev/null +++ b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/repo/a/b/1.0.1/ivy.xml @@ -0,0 +1,16 @@ + + + a + + + + + + + + + + + + + From b95b0e56280040968d519f6ac418b43fdbb5ac4f Mon Sep 17 00:00:00 2001 From: Martin Duhem Date: Mon, 14 Mar 2016 13:28:50 +0100 Subject: [PATCH 2/4] Use configuration of evicted nodes with cached resolution Consider a configuration where we have two projects, A and B. A has a library dependency on "a" % "b" % "1.0.0" % "compile->runtime" and "a" % "b" % "1.0.0" % "compile->runtime2" B depends on project A, and has a library dependency on "a" % "b" % "1.0.1" % "compile->runtime". Note that project B depends on a more recent version of "a" % "b" than project A, and that it depends ONLY on it's "runtime" configuration. However, when compiling project B, we expect to have on the classpath project A, and "a" % "b" % "1.0.1" % "compile->runtime" AND "a" % "b" % "1.0.1" % "compile->runtime2" because it is part of the compile configuration of project A. This commit changes the cached resolution engine so that it behaves like that, by first resolving dependencies on other project and then ensuring that the dependent project specifies dependencies on the same configurations. Mark test dependency-management/cached-resolution-configurations as passing. --- .../CachedResolutionResolveEngine.scala | 31 ++++++++++++++++++- .../{pending => test} | 0 2 files changed, 30 insertions(+), 1 deletion(-) rename sbt/src/sbt-test/dependency-management/cached-resolution-configurations/{pending => test} (100%) diff --git a/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala b/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala index a1fc5ddfc..b18924df8 100644 --- a/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala +++ b/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala @@ -327,12 +327,41 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine { Left(new ResolveException(messages, failed, failedPaths)) } } - val results = mds map { + val (internal, external) = mds.partition { case (_, _, dd) => cache.internalDependency(dd, projectResolver).isDefined } + val internalResults = internal map { case (md, changing, dd) => cache.getOrElseUpdateMiniGraph(md, changing, logicalClock, miniGraphPath, cachedDescriptor, log) { doWork(md, dd) } } + val externalResults = external map { + case (md0, changing, dd) => + val configurationsInInternal = internalResults flatMap { + case Right(ur) => ur.allModules.flatMap { + case md => + val sameName = md.name == dd.getDependencyId.getName + val sameOrg = md.organization == dd.getDependencyId.getOrganisation + if (sameName && sameOrg) md.configurations + else None + } + case _ => Nil + } + + dd match { + case d: DefaultDependencyDescriptor => + configurationsInInternal foreach { c => + val configurations = c.split(";").map(_.split("->")) + configurations foreach { conf => d.addDependencyConfiguration(conf(0), conf(1)) } + } + + case _ => () + } + + // cache.getOrElseUpdateMiniGraph(md0, changing, logicalClock, miniGraphPath, cachedDescriptor, log) { + doWork(md0, dd) + // } + } + val results = internalResults ++ externalResults val uReport = mergeResults(md0, results, missingOk, System.currentTimeMillis - start, os, log) val cacheManager = getSettings.getResolutionCacheManager cacheManager.saveResolvedModuleDescriptor(md0) diff --git a/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/pending b/sbt/src/sbt-test/dependency-management/cached-resolution-configurations/test similarity index 100% rename from sbt/src/sbt-test/dependency-management/cached-resolution-configurations/pending rename to sbt/src/sbt-test/dependency-management/cached-resolution-configurations/test From 2165c347c178d13b7069a417fe14fa7cd221c992 Mon Sep 17 00:00:00 2001 From: Martin Duhem Date: Mon, 11 Apr 2016 10:06:13 +0200 Subject: [PATCH 3/4] Re-enable caching and updating minigraph in cached resolution --- .../scala/sbt/ivyint/CachedResolutionResolveEngine.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala b/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala index b18924df8..06e253ab5 100644 --- a/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala +++ b/ivy/src/main/scala/sbt/ivyint/CachedResolutionResolveEngine.scala @@ -357,9 +357,9 @@ private[sbt] trait CachedResolutionResolveEngine extends ResolveEngine { case _ => () } - // cache.getOrElseUpdateMiniGraph(md0, changing, logicalClock, miniGraphPath, cachedDescriptor, log) { - doWork(md0, dd) - // } + cache.getOrElseUpdateMiniGraph(md0, changing, logicalClock, miniGraphPath, cachedDescriptor, log) { + doWork(md0, dd) + } } val results = internalResults ++ externalResults val uReport = mergeResults(md0, results, missingOk, System.currentTimeMillis - start, os, log)