Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

fixes issue with inter-project resolution when project delegates are …

…defined
  • Loading branch information...
commit a028f8e6d7e37a218ce2558c80f15a35451df63a 1 parent b8ba743
@harrah authored
View
1  ivy/IvyInterface.scala
@@ -41,6 +41,7 @@ sealed trait Resolver
final class RawRepository(val resolver: DependencyResolver) extends Resolver
{
def name = resolver.getName
+ override def toString = "Raw(" + resolver.toString + ")"
}
sealed case class MavenRepository(name: String, root: String) extends Resolver
{
View
1  ivy/ProjectResolver.scala
@@ -23,6 +23,7 @@ class ProjectResolver(name: String, map: Map[ModuleRevisionId, ModuleDescriptor]
{
def getName = name
def setName(name: String) = error("Setting name not supported by ProjectResolver")
+ override def toString = "ProjectResolver(" + name + ", mapped: " + map.keys.mkString(", ") + ")"
def getDependency(dd: DependencyDescriptor, data: ResolveData): ResolvedModuleRevision =
{
View
15 main/Defaults.scala
@@ -571,7 +571,10 @@ object Classpaths
normalizedName <<= name(StringUtilities.normalize),
organization <<= organization or normalizedName.identity,
classpathFilter in GlobalScope :== "*.jar",
- externalResolvers <<= externalResolvers or (resolvers map Resolver.withDefaultResolvers),
+ externalResolvers <<= (externalResolvers.task.? zipWith resolvers.identity) {
+ case (Some(delegated), Seq()) => delegated
+ case (_, rs) => task { Resolver.withDefaultResolvers(rs) }
+ },
fullResolvers <<= (projectResolver,externalResolvers,sbtPlugin,sbtResolver) map { (pr,rs,isPlugin,sr) =>
val base = pr +: rs
if(isPlugin) sr +: base else base
@@ -607,7 +610,7 @@ object Classpaths
retrievePattern in GlobalScope :== "[type]s/[organisation]/[module]/[artifact](-[revision])(-[classifier]).[ext]",
updateConfiguration <<= (retrieveConfiguration, ivyLoggingLevel)((conf,level) => new UpdateConfiguration(conf, false, level) ),
retrieveConfiguration <<= (managedDirectory, retrievePattern, retrieveManaged) { (libm, pattern, enabled) => if(enabled) Some(new RetrieveConfiguration(libm, pattern)) else None },
- ivyConfiguration <<= ivyConfiguration or mkIvyConfiguration,
+ ivyConfiguration <<= mkIvyConfiguration,
ivyConfigurations <<= (autoCompilerPlugins, internalConfigurationMap, thisProject) { (auto, internalMap, project) =>
(project.configurations ++ project.configurations.map(internalMap) ++ (if(auto) CompilerPlugin :: Nil else Nil)).distinct
},
@@ -629,8 +632,8 @@ object Classpaths
new IvySbt(conf)
},
ivyModule <<= (ivySbt, moduleSettings) map { (ivySbt, settings) => new ivySbt.Module(settings) },
- update <<= (ivyModule, updateConfiguration, cacheDirectory, scalaInstance, streams) map { (module, config, cacheDirectory, si, s) =>
- cachedUpdate(cacheDirectory / "update", module, config, Some(si), s.log)
+ update <<= (ivyModule, thisProjectRef, updateConfiguration, cacheDirectory, scalaInstance, streams) map { (module, ref, config, cacheDirectory, si, s) =>
+ cachedUpdate(cacheDirectory / "update", Project.display(ref), module, config, Some(si), s.log)
},
transitiveClassifiers in GlobalScope :== Seq(SourceClassifier, DocClassifier),
updateClassifiers <<= (ivySbt, projectID, update, transitiveClassifiers, updateConfiguration, ivyScala, streams) map { (is, pid, up, classifiers, c, ivyScala, s) =>
@@ -661,13 +664,13 @@ object Classpaths
import Cache._
import CacheIvy.{classpathFormat, /*publishIC,*/ updateIC, updateReportF}
- def cachedUpdate(cacheFile: File, module: IvySbt#Module, config: UpdateConfiguration, scalaInstance: Option[ScalaInstance], log: Logger): UpdateReport =
+ def cachedUpdate(cacheFile: File, label: String, module: IvySbt#Module, config: UpdateConfiguration, scalaInstance: Option[ScalaInstance], log: Logger): UpdateReport =
{
implicit val updateCache = updateIC
implicit val updateReport = updateReportF
type In = IvyConfiguration :+: ModuleSettings :+: UpdateConfiguration :+: HNil
def work = (_: In) match { case conf :+: settings :+: config :+: HNil =>
- log.info("Updating...")
+ log.info("Updating " + label + "...")
val r = IvyActions.update(module, config, log)
log.info("Done updating.")
scalaInstance match { case Some(si) => substituteScalaFiles(si, r); case None => r }
View
9 sbt/src/sbt-test/dependency-management/delegate/project/Build.scala
@@ -0,0 +1,9 @@
+import sbt._
+import Keys._
+
+object B extends Build
+{
+ lazy val root: Project = Project("root", file(".")) aggregate(logic, ui)
+ lazy val logic: Project = Project("logic", file("logic"), delegates = root :: Nil)
+ lazy val ui: Project = Project("ui", file("ui"), delegates = root :: Nil) dependsOn(logic)
+}
View
1  sbt/src/sbt-test/dependency-management/delegate/test
@@ -0,0 +1 @@
+> compile
Please sign in to comment.
Something went wrong with that request. Please try again.