Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Handle source, docs artifacts correctly for Ivy #1016

Merged
merged 10 commits into from
Dec 13, 2013

Conversation

dansanduleac
Copy link
Contributor

Following our discussion at #1004, I've decided to handle the retrieval of source/docs artifacts by their artifact types.
The steps I took are:

  • Completely removed the Sources and Docs configurations. They were unused, incorrect with respect to what Ivy considers a configuration to be, and possibly (at least in my case) a source of confusion (should I use this? can I scope settings under it?)
  • Therefore sbt now publishes these src/doc artifacts under runtime. Why runtime? No reason specifically, and it might change, but for now it seemed like a sensible default.
  • Introduce the SettingKeys sourceArtifactTypes and docArtifactTypes: Sets which contain the artifact types that would qualify them as either source or doc artifacts.
  • Introduce a slightly improved (compared to the Ivy version) ArtifactTypeFilter which lets you apply the filter normally or inversed.
  • Use this filter in the update task (specifically, I added it to UpdateConfiguration) to allow "all artifact types except those found in either sourceArtifactTypes ordocArtifactTypes"
  • In updateClassifiers / updateSbtClassifiers, invert the filter from the UpdateConfiguration: it will therefore only let through sources and docs
  • Pass this artifact filter from the UpdateConfiguration to IvyActions.update and from there to the Ivy ResolveOptions in IvyActions.resolve
  • Change updateClassifiers to not filter out dependencies whose classifiers were deemed "not found" and thus excluded - they might still contain src/doc artifacts published in their ivys
  • Added an include-all include filter to all the ModuleIDs (and thus the DependencyDescriptors they convert to) that will allow Ivy to merge the explicitly given artifacts (where classifier=sources or javadoc) with the publications from the ModuleDescriptor (i.e. the artifacts published in an ivy)
  • After finishing the update in updateClassifiers, map over all artifacts to set their classifier to either sources or javadoc, if it's not already set, according to a reverse mapping from the types in (source|doc)ArtifactTypes to "source" and "javadoc" respectively (well, Artifact.SourceClassifier and Artifact.DocClassifier, to be precise). This is because the artifacts retrieved from Ivy publications might well not have this attribute set, and it's the unfortunate case that currently IDE plugins depend exactly on this value to classify the artifacts.

Hopefully, after this, plugins could just look at the artifact's type and see in which of the two sets contains it. That would also resolve a great deal of pain surrounding "e:classifier". For instance, I've discovered that it's impossible to use that attribute in an ivy repository if its value is not either "sources" or "javadoc" (e.g. if it's src), because plugins expect it to be one of those two values as mentioned before.

updateClassifiers of course still works as before to retrieve sources/docs artifacts from Maven repositories.

@harrah
Copy link
Member

harrah commented Dec 3, 2013

Thanks for the detailed overview description. I will run the integration tests on it when I get a chance. My initial impressions without reviewing the code are:

a) I believe sources/docs configurations are added by Ivy when the metadata source is a pom.xml
b) sbt already filters the types of artifacts from a resolution that will end up on a classpath: classpathTypes
c) presumably classpathTypes isn't enough because it doesn't defer downloads of the sources/javadocs
d) case classes are avoided unless absolutely necessary because they make keeping binary compatibility harder as well as increasing bytecode size (which increases startup time)
e) generating a pom.xml is tricky- with this change, is the main artifact in a pom.xml still correctly generated? That is, by putting classified artifacts in the runtime configuration, does MakePom still pick the right artifact to use for the type and other pom properties?

@dansanduleac
Copy link
Contributor Author

Thanks! I'll try to answer some of these.

  • I see what you mean, indeed they still get added even after my change. I'm arguing that they shouldn't get added at all -- "source" and "javadoc" shouldn't be separate configurations, and also, they're not being used in sbt anyway. In any case, even if they're still currently described under <configurations> of an ivy created from a pom.xml, it makes no difference to resolution really, because they have no artifacts in <publications> nor dependencies.
  • Indeed, I just noticed this yesterday.
  • Exactly. Of course, regardless of that, sources/javadocs for a ivy generated from a pom would never be brought in on update, since they're not in publications. But for real ivys, this would keep them out of update, just as you say.
  • I think I see your point about startup time, but I'm still unclear over the impact these changes will actually have.
    To clarify my intent, I've only made some of the *Report classes into case classes because I wanted to use the .copy method which reads much more clearly. Specifically, in the bit where I map over all of the UpdateReport's modules in updateClassifiers, to add missing classifiers. I am, however, expecting that bit to change, as relying on "classifier" to decide the artifact's source/doc-ness can now be deprecated in favor of just checking whether the artifact's type is in sourceArtifactTypes or docArtifactTypes (in the case of IDE plugins).
    Now, the way I looked at this, 0.14 is meant to collect binary-incompatible changes, but more importantly, the classes I've changed were already 1) immutable and 2) final -- essentially data classes, making them perfect candidates for a case class. If you feel strongly about this, would you mind explaining a bit further why you think this change in particular would be an issue?
  • pom.xml is still correctly generated, I believe. Only <packaging> looks at the individual artifacts. And when it looks through the artifacts, it filters out the ones with type = Artifact.PomType, Artifact.SourceType and Artifact.DocType, which are the types that are used when generating the ivy. In any case the code path hasn't changed, because this filtering is being done on module.getAllArtifacts, which would have returned all 3 artifacts (jar, doc, src) before as well, regardless of what configurations they were in.

How do you run the integration tests, is it just test or something more involved?

@harrah
Copy link
Member

harrah commented Dec 3, 2013

  • For binary compatibility, the problem is not breaking it in 0.14.0. The problem is the ability to fix bugs and make improvements in 0.14.x for x > 0.
  • For startup time, indeed a single change to a case class matters little, but many add up. When I have worked on startup time in the past, it almost always involves dropping case classes or deduplicating closures. Having wasted much time on this and combined with the binary compatibility implications, case classes need to carry their weight, unfortunately.
  • Integration tests for dependency management are run with scripted dependency-management/*. They take a long time to run due to using a fresh cache in most cases.

@dansanduleac
Copy link
Contributor Author

Ok. I'll change those back to classes, as I just noticed that I can achieve what I want through UpdateReport.substitute.

On Tue, Dec 3, 2013 at 3:57 PM, Mark Harrah notifications@github.com
wrote:

  • For binary compatibility, the problem is not breaking it in 0.14.0. The problem is the ability to fix bugs and make improvements in 0.14.x for x > 0.
  • For startup time, indeed a single change to a case class matters little, but many add up. When I have worked on startup time in the past, it almost always involves dropping case classes or deduplicating closures. Having wasted much time on this and combined with the binary compatibility implications, case classes need to carry their weight, unfortunately.

* Integration tests for dependency management are run with scripted dependency-management/*. They take a long time to run due to using a fresh cache in most cases.

Reply to this email directly or view it on GitHub:
#1016 (comment)

@dansanduleac
Copy link
Contributor Author

I've made the changes. Do you think it looks alright?
In the last commit I've deprecated def artifactConfigurations, and also fixed def artifactSetting to not call it (and thus, it will not "deduce" a configuration for the artifact from the artifactQualifier anymore). Instead, it now leaves the artifact's configurations list empty, so that the default conf is used.

@harrah
Copy link
Member

harrah commented Dec 5, 2013

Yes, I think so. What I still have to do is run the integration tests and I'd like to have another integration test for this functionality. I'm busy today, but will try to do this tomorrow. If you have time, you can run them and see if any fail. If you need help, post the output here. If you can't figure out an integration test, post to sbt-dev or provide a sample project and the commands to run on it and I'll turn it into an integration test.

So, this LGTM overall, but let's get the testing checked out before merging.

@dansanduleac
Copy link
Contributor Author

Alright, thanks a lot!
I've tried running the tests, and seems like 2 of them fail, configurations and inherit-repo, although inherit-repo looks like it has to do with not finding this com.camptocamp.tl.caltar#core;0.5 dependency.. I'll look into them in more detail when I get a chance.

I also added a late patch, as I recently realized that UpdateReport.substitute was dropping the missing artifacts lists, causing the excluding of previously-failed classifiers to not work anymore.

> scripted dependency-management/*
...
Running dependency-management / artifact
Running dependency-management / cache-classifiers
Running dependency-management / cache-local
Running dependency-management / cache-resolver
Running dependency-management / classifier
Running dependency-management / configurations
[error] x dependency-management / configurations [PENDING]
[error]    {line 14}  Command failed: compile failed
Running dependency-management / conflict
Running dependency-management / conflict-manager
Running dependency-management / cross-conflict
Running dependency-management / delegate
Running dependency-management / deliver-artifacts
Running dependency-management / exclude-bundle
Running dependency-management / exclude-scala
Running dependency-management / exclude-transitive
Running dependency-management / ext-pom-classifier
Running dependency-management / extra
Running dependency-management / force
Running dependency-management / info
Running dependency-management / inherit-repo
[info] Getting org.fusesource.jansi jansi 1.11 ...
[info] :: retrieving :: org.scala-sbt#boot-jansi
[info]  confs: [default]
[info]  1 artifacts copied, 0 already retrieved (111kB/11ms)
[info] Getting org.scala-sbt sbt 0.13.1-SNAPSHOT ...
[info] :: retrieving :: org.scala-sbt#boot-app
[info]  confs: [default]
[info]  43 artifacts copied, 0 already retrieved (12542kB/80ms)
[info] Getting Scala 2.10.3 (for sbt)...
[info] :: retrieving :: org.scala-sbt#boot-scala
[info]  confs: [default]
[info]  5 artifacts copied, 0 already retrieved (24447kB/30ms)
[info] [info] Loading project definition from C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\project
[info] [info] Updating {file:/C:/cygwin64/tmp/sbt_e9368f6c/inherit-repo/project/}inherit-repo-build...
[info] [info] Resolving org.scala-lang#scala-library;2.10.3 ...
[info] [info] Resolving org.scala-sbt#sbt;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#main;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#actions;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#classpath;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-lang#scala-compiler;2.10.3 ...
[info] [info] Resolving org.scala-lang#scala-reflect;2.10.3 ...
[info] [info] Resolving org.scala-sbt#launcher-interface;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#interface;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#io;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#control;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#completion;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#collections;0.13.1-SNAPSHOT ...
[info] [info] Resolving jline#jline;2.11 ...
[info] [info] Resolving org.scala-sbt#api;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#compiler-integration;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#incremental-compiler;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#logging;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#process;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#relation;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#compile;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#persist;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-tools.sbinary#sbinary_2.10;0.4.2 ...
[info] [info] Resolving org.scala-sbt#classfile;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#compiler-ivy-integration;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#ivy;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#cross;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.apache.ivy#ivy;2.3.0-rc1 ...
[info] [info] Resolving com.jcraft#jsch;0.1.46 ...
[info] [info] Resolving org.scala-sbt#run;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#task-system;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#tasks;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#tracking;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#cache;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#testing;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#test-agent;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#test-interface;1.0 ...
[info] [info] Resolving org.scala-sbt#main-settings;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#apply-macro;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#command;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#compiler-interface;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#precompiled-2_8_2;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#precompiled-2_9_2;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-sbt#precompiled-2_9_3;0.13.1-SNAPSHOT ...
[info] [info] Resolving org.scala-lang#jline;2.10.3 ...
[info] [info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] [info] Done updating.
[info] [info] Compiling 1 Scala source to C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\project\target\scala-2.10\sbt-0.13\classes...
[info] [warn] there were 1 deprecation warning(s); re-run with -deprecation for details
[info] [warn] one warning found
[info] [info] Set current project to root (in build file:/C:/cygwin64/tmp/sbt_e9368f6c/inherit-repo/)
[info] [info] Defining root/*:logLevel
[info] [info] The new value will be used by no settings or tasks.
[info] [info] Reapplying settings...
[info] [info] Set current project to root (in build file:/C:/cygwin64/tmp/sbt_e9368f6c/inherit-repo/)
[info] [info] Updating {file:/C:/cygwin64/tmp/sbt_e9368f6c/inherit-repo/}a...
[info] [info] Updating {file:/C:/cygwin64/tmp/sbt_e9368f6c/inherit-repo/}root...
[info] [info] Updating {file:/C:/cygwin64/tmp/sbt_e9368f6c/inherit-repo/}b...
[info] [debug] Other repositories:
[info] [debug]  FileRepository(publish-m2-local,FileConfiguration(true,None),Patterns(ivyPatterns=List(), artifactPatterns=List(C:/Users/dsandul/.m2/repository/[organisation]/[module](_[scalaVersion])(_[sbtVersion])/[revision]/[artifact]-[revision](-[classifier]).[ext]), isMavenCompatible=true, descriptorOptional=false, skipConsistencyCheck=false))
[info] [debug] Default repositories:
[info] [debug]  Raw(ProjectResolver(inter-project, mapped: ))
[info] [info] Done updating.
[info] [debug] Using inline dependencies specified in Scala.
[info] [debug] :: resolving dependencies :: root#root;0.1-SNAPSHOT
[info] [debug]  confs: [compile, runtime, test, provided, optional, compile-internal, runtime-internal, test-internal, plugin, pom, scala-tool]
[info] [debug]  validate = true
[info] [debug]  refresh = false
[info] [debug] resolving dependencies for configuration 'compile'
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [compile]
[info] [debug] resolving dependencies for configuration 'runtime'
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [runtime]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [compile]
[info] [debug] resolving dependencies for configuration 'test'
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [test]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [runtime]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [compile]
[info] [debug] resolving dependencies for configuration 'provided'
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [provided]
[info] [debug] resolving dependencies for configuration 'optional'
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [optional]
[info] [debug] resolving dependencies for configuration 'compile-internal'
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [compile-internal]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [compile]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [optional]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [provided]
[info] [debug] resolving dependencies for configuration 'runtime-internal'
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [runtime-internal]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [runtime]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [compile]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [optional]
[info] [debug] resolving dependencies for configuration 'test-internal'
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [test-internal]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [test]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [runtime]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [compile]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [optional]
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [provided]
[info] [debug] resolving dependencies for configuration 'plugin'
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [plugin]
[info] [debug] resolving dependencies for configuration 'pom'
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [pom]
[info] [debug] resolving dependencies for configuration 'scala-tool'
[info] [debug] == resolving dependencies for root#root;0.1-SNAPSHOT [scala-tool]
[info] [debug]  resolved ivy file produced in C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\target\resolution-cache\root\root\0.1-SNAPSHOT\resolved.xml.xml
[info] [debug] :: downloading artifacts ::
[info] [debug] :: resolution report :: resolve 7ms :: artifacts dl 0ms
[info] [debug]  report for root#root;0.1-SNAPSHOT compile produced in C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\target\resolution-cache\reports\root-root-compile.xml
[info] [debug]  report for root#root;0.1-SNAPSHOT runtime produced in C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\target\resolution-cache\reports\root-root-runtime.xml
[info] [debug]  report for root#root;0.1-SNAPSHOT test produced in C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\target\resolution-cache\reports\root-root-test.xml
[info] [debug]  report for root#root;0.1-SNAPSHOT provided produced in C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\target\resolution-cache\reports\root-root-provided.xml
[info] [debug]  report for root#root;0.1-SNAPSHOT optional produced in C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\target\resolution-cache\reports\root-root-optional.xml
[info] [debug]  report for root#root;0.1-SNAPSHOT compile-internal produced in C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\target\resolution-cache\reports\root-root-compile-internal.xml
[info] [debug]  report for root#root;0.1-SNAPSHOT runtime-internal produced in C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\target\resolution-cache\reports\root-root-runtime-internal.xml
[info] [debug]  report for root#root;0.1-SNAPSHOT test-internal produced in C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\target\resolution-cache\reports\root-root-test-internal.xml
[info] [debug]  report for root#root;0.1-SNAPSHOT plugin produced in C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\target\resolution-cache\reports\root-root-plugin.xml
[info] [debug]  report for root#root;0.1-SNAPSHOT pom produced in C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\target\resolution-cache\reports\root-root-pom.xml
[info] [debug]  report for root#root;0.1-SNAPSHOT scala-tool produced in C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\target\resolution-cache\reports\root-root-scala-tool.xml
[info] [debug]  resolve done (7ms resolve - 0ms download)
[info] [info] Done updating.
[info] [info] Resolving com.camptocamp.tl.caltar#core;0.5 ...
[info] [warn]   module not found: com.camptocamp.tl.caltar#core;0.5
[info] [warn]   ::::::::::::::::::::::::::::::::::::::::::::::
[info] [warn]   ::          UNRESOLVED DEPENDENCIES         ::
[info] [warn]   ::::::::::::::::::::::::::::::::::::::::::::::
[info] [warn]   :: com.camptocamp.tl.caltar#core;0.5: not found
[info] [warn]   ::::::::::::::::::::::::::::::::::::::::::::::
[info] sbt.ResolveException: unresolved dependency: com.camptocamp.tl.caltar#core;0.5: not found
[info]  at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:253)
[info]  at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:122)
[info]  at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:121)
[info]  at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:114)
[info]  at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:114)
[info]  at sbt.IvySbt$$anonfun$withIvy$1.apply(Ivy.scala:102)
[info]  at sbt.IvySbt.sbt$IvySbt$$action$1(Ivy.scala:49)
[info]  at sbt.IvySbt$$anon$3.call(Ivy.scala:58)
[info]  at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:98)
[info]  at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:81)
[info]  at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:102)
[info]  at xsbt.boot.Using$.withResource(Using.scala:11)
[info]  at xsbt.boot.Using$.apply(Using.scala:10)
[info]  at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:62)
[info]  at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:52)
[info]  at xsbt.boot.Locks$.apply0(Locks.scala:31)
[info]  at xsbt.boot.Locks$.apply(Locks.scala:28)
[info]  at sbt.IvySbt.withDefaultLogger(Ivy.scala:58)
[info]  at sbt.IvySbt.withIvy(Ivy.scala:99)
[info]  at sbt.IvySbt.withIvy(Ivy.scala:95)
[info]  at sbt.IvySbt$Module.withModule(Ivy.scala:114)
[info]  at sbt.IvyActions$.update(IvyActions.scala:121)
[info]  at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1159)
[info]  at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1157)
[info]  at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$73.apply(Defaults.scala:1180)
[info]  at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$73.apply(Defaults.scala:1178)
[info]  at sbt.Tracked$$anonfun$lastOutput$1.apply(Tracked.scala:35)
[info]  at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1182)
[info]  at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1177)
[info]  at sbt.Tracked$$anonfun$inputChanged$1.apply(Tracked.scala:45)
[info]  at sbt.Classpaths$.cachedUpdate(Defaults.scala:1185)
[info]  at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1150)
[info]  at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1128)
[info]  at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
[info]  at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
[info]  at sbt.std.Transform$$anon$4.work(System.scala:64)
[info]  at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
[info]  at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
[info]  at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
[info]  at sbt.Execute.work(Execute.scala:244)
[info]  at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
[info]  at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
[info]  at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
[info]  at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
[info]  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
[info]  at java.util.concurrent.FutureTask.run(FutureTask.java:166)
[info]  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
[info]  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
[info]  at java.util.concurrent.FutureTask.run(FutureTask.java:166)
[info]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[info]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[info]  at java.lang.Thread.run(Thread.java:724)
[info] [error] (a/*:update) sbt.ResolveException: unresolved dependency: com.camptocamp.tl.caltar#core;0.5: not found
[info] [error] Total time: 0 s, completed 04-Dec-2013 14:08:45
[info] [info] Loading project definition from C:\cygwin64\tmp\sbt_e9368f6c\inherit-repo\project
[info] [warn] Discarding 1 session setting.  Use 'session save' to persist session settings.
[info] [info] Set current project to root (in build file:/C:/cygwin64/tmp/sbt_e9368f6c/inherit-repo/)
[info] [info] Updating {file:/C:/cygwin64/tmp/sbt_e9368f6c/inherit-repo/}a...
[info] [info] Updating {file:/C:/cygwin64/tmp/sbt_e9368f6c/inherit-repo/}b...
[info] [info] Updating {file:/C:/cygwin64/tmp/sbt_e9368f6c/inherit-repo/}root...
[info] [info] Resolving com.camptocamp.tl.caltar#core;0.5 ...
[info] [warn]   module not found: com.camptocamp.tl.caltar#core;0.5
[info] [warn] ==== Extra Test Repository: tried
[info] [warn]   http://dev.camptocamp.com/files/m2_repo/com/camptocamp/tl/caltar/core/0.5/core-0.5.pom
[info] [warn]   ::::::::::::::::::::::::::::::::::::::::::::::
[info] [warn]   ::          UNRESOLVED DEPENDENCIES         ::
[info] [warn]   ::::::::::::::::::::::::::::::::::::::::::::::
[info] [warn]   :: com.camptocamp.tl.caltar#core;0.5: not found
[info] [warn]   ::::::::::::::::::::::::::::::::::::::::::::::
[info] [info] Done updating.
[info] [info] Done updating.
[info] sbt.ResolveException: unresolved dependency: com.camptocamp.tl.caltar#core;0.5: not found
[info]  at sbt.IvyActions$.sbt$IvyActions$$resolve(IvyActions.scala:253)
[info]  at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:122)
[info]  at sbt.IvyActions$$anonfun$update$1.apply(IvyActions.scala:121)
[info]  at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:114)
[info]  at sbt.IvySbt$Module$$anonfun$withModule$1.apply(Ivy.scala:114)
[info]  at sbt.IvySbt$$anonfun$withIvy$1.apply(Ivy.scala:102)
[info]  at sbt.IvySbt.sbt$IvySbt$$action$1(Ivy.scala:49)
[info]  at sbt.IvySbt$$anon$3.call(Ivy.scala:58)
[info]  at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:98)
[info]  at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:81)
[info]  at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:102)
[info]  at xsbt.boot.Using$.withResource(Using.scala:11)
[info]  at xsbt.boot.Using$.apply(Using.scala:10)
[info]  at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:62)
[info]  at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:52)
[info]  at xsbt.boot.Locks$.apply0(Locks.scala:31)
[info]  at xsbt.boot.Locks$.apply(Locks.scala:28)
[info]  at sbt.IvySbt.withDefaultLogger(Ivy.scala:58)
[info]  at sbt.IvySbt.withIvy(Ivy.scala:99)
[info]  at sbt.IvySbt.withIvy(Ivy.scala:95)
[info]  at sbt.IvySbt$Module.withModule(Ivy.scala:114)
[info]  at sbt.IvyActions$.update(IvyActions.scala:121)
[info]  at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1159)
[info]  at sbt.Classpaths$$anonfun$sbt$Classpaths$$work$1$1.apply(Defaults.scala:1157)
[info]  at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$73.apply(Defaults.scala:1180)
[info]  at sbt.Classpaths$$anonfun$doWork$1$1$$anonfun$73.apply(Defaults.scala:1178)
[info]  at sbt.Tracked$$anonfun$lastOutput$1.apply(Tracked.scala:35)
[info]  at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1182)
[info]  at sbt.Classpaths$$anonfun$doWork$1$1.apply(Defaults.scala:1177)
[info]  at sbt.Tracked$$anonfun$inputChanged$1.apply(Tracked.scala:45)
[info]  at sbt.Classpaths$.cachedUpdate(Defaults.scala:1185)
[info]  at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1150)
[info]  at sbt.Classpaths$$anonfun$updateTask$1.apply(Defaults.scala:1128)
[info]  at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
[info]  at sbt.$tilde$greater$$anonfun$$u2219$1.apply(TypeFunctions.scala:42)
[info]  at sbt.std.Transform$$anon$4.work(System.scala:64)
[info]  at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
[info]  at sbt.Execute$$anonfun$submit$1$$anonfun$apply$1.apply(Execute.scala:237)
[info]  at sbt.ErrorHandling$.wideConvert(ErrorHandling.scala:18)
[info]  at sbt.Execute.work(Execute.scala:244)
[info]  at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
[info]  at sbt.Execute$$anonfun$submit$1.apply(Execute.scala:237)
[info]  at sbt.ConcurrentRestrictions$$anon$4$$anonfun$1.apply(ConcurrentRestrictions.scala:160)
[info]  at sbt.CompletionService$$anon$2.call(CompletionService.scala:30)
[info]  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
[info]  at java.util.concurrent.FutureTask.run(FutureTask.java:166)
[info]  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
[info]  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
[info]  at java.util.concurrent.FutureTask.run(FutureTask.java:166)
[info]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[info]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[info]  at java.lang.Thread.run(Thread.java:724)
[info] [error] (a/*:update) sbt.ResolveException: unresolved dependency: com.camptocamp.tl.caltar#core;0.5: not found
[info] [error] Total time: 0 s, completed 04-Dec-2013 14:08:47
[error] x dependency-management / inherit-repo
[error]    {line 10}  Command failed: update failed
Running dependency-management / inline-dependencies-a
Running dependency-management / invalidate-internal
Running dependency-management / ivy-settings-a
Running dependency-management / ivy-settings-b
Running dependency-management / ivy-settings-c
Running dependency-management / ivy-settings-multi-a
Running dependency-management / ivy-settings-multi-b
Running dependency-management / java.net
Running dependency-management / latest-local-plugin

@harrah
Copy link
Member

harrah commented Dec 5, 2013

Ok, you can individual tests like scripted dependency-management/inherit-repo. If it fails without your changes, then perhaps the test needs to be updated.

@dansanduleac
Copy link
Contributor Author

Both tests that failed for me fail in exactly the same way for origin/0.14 and origin/0.13, so I reckon they should be updated. For inherit-repo, I noticed that the camptocamp repository it was referencing doesn't exist anymore.

@harrah
Copy link
Member

harrah commented Dec 10, 2013

Thanks. I've deleted inherit-repo- it was testing something that has been discouraged for a while, now deprecated, and will be removed in 0.14.0. The configurations test is marked pending and the output correctly shows it as a pending test, so that's ok.

@dansanduleac
Copy link
Contributor Author

Thank you. Oh.. I see. I mistook the [error] it showed for "test failed".

On Tue, Dec 10, 2013 at 5:02 PM, Mark Harrah notifications@github.com
wrote:

Thanks. I've deleted inherit-repo- it was testing something that has been discouraged for a while, now deprecated, and will be removed in 0.14.0. The configurations test is marked pending and the output correctly shows it as a pending test, so that's ok.

Reply to this email directly or view it on GitHub:
#1016 (comment)

harrah added a commit that referenced this pull request Dec 13, 2013
Handle source, docs artifacts correctly for Ivy
@harrah harrah merged commit ae6ed37 into sbt:0.14 Dec 13, 2013
@harrah
Copy link
Member

harrah commented Dec 13, 2013

Ran the tests and they pass, so LGTM. Merged to 0.14.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants