Commit Graph

351 Commits

Author SHA1 Message Date
Josh Suereth 8166c8aa5d Fix NPE in ChainrResolver when there is no ivy file for a dependency. 2014-09-25 08:08:26 -04:00
Josh Suereth 7e100a0fe0 Add workaround (and warning message) for when ChainResolver gets a null publication date while we investigate other issues.
* Attempt to set publication date to last modified time, if the stars align
* Issue warning about undefined resolution behavior otherwise
* Add scripted test which exercises the NPE issue in resolving -SNAPSHOTs.
* Commit scalariform style edit in Act.scala

* After parsing and transforming the pom, check for pub date.
* If we don't have a pub date, try to grab lastModified from the URL
* If we can't do anything, issue a warning about the problem artifact.
2014-09-24 18:23:15 -04:00
Josh Suereth 704d823849 Fix URL resolver so that we can push Maven artifacts to local maven repositories.
* Hook "LocalIfFile" repository to also handle publishing
* Add test to ensure mavne publishign works.
2014-09-24 14:37:26 -04:00
Josh Suereth 305d34d011 Merge pull request #1600 from topping/0.13
PR for #1589
2014-09-24 09:11:57 -04:00
Brian Topping db04fa53be Add warning for bad XML parse of settings file 2014-09-22 10:56:10 -04:00
Brian Topping 7edf77bc28 Additional updates, should be clean now. 2014-09-17 15:24:33 -04:00
Josh Suereth c1fd09e6bf Merge pull request #1590 from jedesah/0.13
Add developer key
2014-09-17 10:32:04 -04:00
Jean-Rémi Desjardins 53e4bce5e3 Fix obtuse compilation error 2014-09-16 09:26:43 -07:00
Jean-Rémi Desjardins 956c3da82a Merge branch '0.13' of github.com:sbt/sbt into 0.13 2014-09-16 09:20:21 -07:00
Eugene Yokota 577496b1b6 Expose Ivy's circular dependency check via UpdateOptions 2014-09-16 09:22:21 -04:00
Brian Topping e81e8596b7 Tested PR for #485. Had a hard time squashing this, maybe because I did a merge in between. Sorry about that! 2014-09-15 15:26:45 -04:00
Brian Topping 300bd9a752 Merge remote-tracking branch 'upstream/0.13' into 0.13 2014-09-15 11:14:13 -04:00
Brian Topping cf48063f2f Untested PR for #485. Unable to test because unable to build 2014-09-15 10:48:47 -04:00
Jean-Rémi Desjardins ad07757087 Add constructor to avoid binary compatibility issues 2014-09-11 09:36:37 -07:00
Jean-Rémi Desjardins 4c99188f06 Merge branch '0.13' of github.com:sbt/sbt into 0.13 2014-09-10 22:56:01 -07:00
Jean-Rémi Desjardins ac83ec98f2 Add developers keySetting
The motivation for this is mainly to avoid having to define a pomExtra to publish to Maven central
2014-09-10 20:18:28 -07:00
Josh Suereth bff6d7adfa Fixes from review, better names and internal code documentation. 2014-09-10 07:56:19 -04:00
Josh Suereth e1130eabbc Fix Maven configuration mappings in Ivy.
It turns out there was a very subtle, and evil, issue sitting the Ivy/maven configuration, and it
related to dependency mapping.    A mapping of `foo->bar(*)` means that the local configuration
`foo` depends on the remote configuration `bar`, if it exists, or *ALL CONFIGURATIONS* if `bar`
does not exist.   Since the default Ivy configuration mapping was using the random `master`
configuration, which AFAICT is NEVER specified, just an assumed default, this would cause leaks
between maven + ivy projects.

i.e. if  a maven POM depends on a module denoted by an ivy.xml file, then you'd wind up accidentally
bleeding ALL the ivy module's configurations into the maven module's configurations.

This fix works around the issue, by assuming that if there is no `master` configuration, than the
maven default of `compile` is intended.   As sbt forces generated `ivy.xml` files to abide by
maven conventions, this works in all of our test cases.   The only scenario where it wouldn't work
is those who have custom ivy.xml files *and* have pom.xml files which rely on those custom ivy.xml files,
a very unlikely situation where the workaround is:  "define a master configuration".

Includes a test demonstrating the issue.
2014-09-09 17:45:02 -04:00
Josh Suereth cd9205cffe Split out inter-project resolver into its own Chain.
Fixes #1565

* Create two chains if we have inter-project resolver
  - One which ensures inter-project deps are always taken
  - One which will look in all "other" repositories for
    dependencies and will use the "most up-to-date" -SNAPSHOT
    strategy.
* No additional tests, as this would simple break every
  multi-project test if it were wrong.
2014-09-05 10:40:49 -04:00
Eugene Yokota 9018085a7a Merge branch '0.13' into 0.13.6 2014-08-24 18:24:37 -04:00
Josh Suereth ca0665d7f0 Merge pull request #1537 from sbt/fix/1275
Improves pom dynamic revision conversion
2014-08-24 18:19:02 -04:00
Eugene Yokota 97110b6c9d #1541. Use HTTPS for sbt plugin repository 2014-08-24 16:37:24 -04:00
Eugene Yokota 090e3a6468 #1541. Use HTTPS for Typesafe repository 2014-08-23 17:47:48 -04:00
Eugene Yokota d86e6ccd26 Fixes #1549. Use HTTPS for Java.net Maven 2 repository 2014-08-23 17:47:48 -04:00
Eugene Yokota 1566058227 Deprecate JavaNet1Repository. #1541
I don’t think there’s an alternative for java.net Maven 1 repository.
2014-08-23 17:47:47 -04:00
Eugene Yokota 92214f739a Based on Ivy's behavior, bringing back approximation
I assumed 1.1+ should be treated as 1.+, but it seems like Ivy treats
it more as “any version that starts with 1.1” including 1.10.
Josh’s original implementation approximates this by making ranges for
multiple digits, 1.1~1.2, 1.10~1.20, etc.
2014-08-22 03:54:32 -04:00
Havoc Pennington 9728c086bc Merge pull request #1538 from sbt/fix/1439
Fixes #1439. Fixes metabuild downloading unused Scala 2.10.2
2014-08-20 14:26:02 -04:00
Eugene Yokota 676e95eaee Fixes #1201. Display instruction to overrideScalaVersion
scala-library is currently treated as just one of the library modules.
This means that it’s at the mercy of eviction if some other library
uses newer version of scala-library.
This commit displays a instruction on how to force scalaVersion if
warnScalaVersionEviction flag is true on EvictionWarningOptions.
2014-08-18 00:54:19 -04:00
Eugene Yokota cc02bcef87 Fixes #1439. Fixes metabuild downloading unused Scala 2.10.2
Scala instance is added to the Ivy graph via autoLibraryDependency.
For metabuilds, scala-library is scoped under “provided” configuration,
which does not seem to evict modules on “compiled” configuration.
This commit turns overrideScalaVersion flag to true for the metabuilds,
so override rules are added for the following modules:
- scala-library
- scala-compiler
- scala-reflect
2014-08-17 23:18:32 -04:00
Eugene Yokota 697a28771e Fixes #1275. Fixes pom dynamic revision conversion
Ivy and pom uses slightly different notation for version range and
dynamic revision.
This change fixes the dynamic revisions involving “+”.
First, when a revision like “1.1+” is found, it will now be treated as
“1.+”.
Next, when it finds a revision like “1+” is found, it will be treated
as “+”.
The conversion of “+” is hardcoded to be “[0,)”.
2014-08-16 22:38:35 -04:00
Eugene Yokota 74c6c18a4c Fixes #1484. Fixes another variant of update NPE
Ivy gives an array that contains null for caller configurations.
sbinary barfs when it sees null. Curiously two of the sbt plugins that
hit this bug happens to be from Typesafe:
    addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.2")
    addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager"  % "0.7.3")
2014-08-15 02:57:17 -04:00
Eugene Yokota 1e3f31df16 ModuleDetailReport => OrganizationArtifactReport
ModuleDetailReport hasn’t been released yet, so this rename is safe.
2014-08-15 01:57:21 -04:00
Josh Suereth e49e6b46f9 Merge pull request #1520 from sbt/fix/1514
Fixes #1514, #321. Fixes -SNAPSHOT issue by re-implemeting ChainResolver
2014-08-12 10:04:10 -04:00
Eugene Yokota ad2ac6198f Using iterators 2014-08-11 22:49:48 -04:00
Eugene Yokota 333eb706b0 Special treatment for a special resolver: inter-project 2014-08-11 12:45:14 -04:00
Josh Suereth d20bfa50ef Merge pull request #1491 from sbt/fix/528
Unresolved dependency warning includes source position. Fixes #528
2014-08-11 07:51:33 -04:00
Eugene Yokota 8e682691c2 Fixes #1514, #321. Fixes -SNAPSHOT issue by re-implemeting ChainResolver.
Adds `lastestSnapshots` flag to `updateOptions`, which controls the behavior of the chained resolver. Up until 0.13.6, sbt was picking the first `-SNAPSHOT` revision it found along the chain. When  is enabled (default: ), it will look into all resolvers on the chain, and compare them using the publish date.
The tradeoff is probably a longer resolution time if you have many remote repositories on the build or you live away from the severs. So here's how to disable it:

    updateOptions := updateOptions.value.withLatestSnapshots(false)

Ivy by default uses latest-revision as the latest strategy. This strategy I don't think takes in account for the possibility that a changing revision may exist in multiple repositories/resolvers with having identical version number like 0.1.0-SNAPSHOT.
The implementation is a bit hacky, but I think it attacks the core of this problem.
2014-08-10 18:56:58 -04:00
Roberto Tyley 1185e5b5dd Fix pom-export of Maven Central repository
Commit a1e26ca6 broke the `make-pom` & `pom-advanced` dependency-management
tests by replacing one reference to `IBiblioResolver.DEFAULT_M2_ROOT` in
`Resolver`, but not the other reference in `MakePom`:

https://travis-ci.org/sbt/sbt/jobs/31939788#L2517-L2519

...the secure url was no longer recognised as the default Maven Repository
root, so was erroneously exported.
2014-08-08 17:08:54 -04:00
Eugene Yokota 9e245b3fc3 Adds sbt.repository.secure (default: true) #1494 2014-08-08 17:08:54 -04:00
Roberto Tyley 16eb7b28fd Use HTTPS for downloading artifacts from Maven Central
Sonatype have enabled HTTPS access for Maven Central:

http://central.sonatype.org/articles/2014/Aug/03/https-support-launching-now/

Note that the Ivy class IBiblioResolver contains the old http url
(ie DEFAULT_M2_ROOT="http://repo1.maven.org/maven2/"):

http://svn.apache.org/viewvc/ant/ivy/core/trunk/src/java/org/apache/ivy/plugins/resolver/IBiblioResolver.java?revision=1557968&view=markup#l72
2014-08-08 17:07:44 -04:00
Eugene Yokota 302362fad4 Adds `dependencyPositions` task to explicitly track dependency positions. 2014-08-08 00:53:09 -04:00
Eugene Yokota 8ecc9edbea Moves JCenter and Bintray repo into object Resolver. #1405
This is more consistent with other hardcoded repos like Sonatype.
Also hardcoding everything to https.
2014-08-07 15:50:57 -04:00
Evgeny Goldin 89049a58de JCenter and BintrayMavenRepository resolvers added 2014-08-06 01:43:19 +02:00
Eugene Yokota 4be04bf894 Adds UnresolvedWarningConfiguration that caches ModuleID -> SourcePosition mapping.
UnresolvedWarning is moved back to IvyActions.scala where it belongs.
The mapping between ModuleID and SourcePosition is passed in as UnresolvedWarningConfiguration.
This is calculated once in Defaults using State and is cached to filesystem.
2014-08-03 02:31:56 -04:00
Eugene Yokota 44241ce97c Unresolved dependency warning includes source position. Fixes #528
Unresolved dependency warning is moved to UnresolvedDependencyWarning class including
the fail path that was added in #1467.
To display the source position, I need to access the State, so I had to move the
error processing out of IvyActions and add UnresolvedDependencyWarning, which is
aware of State.
2014-08-02 06:25:24 -04:00
Eugene Yokota 78def4d4e3 Fixes NullPointerException during update. Fixes #1484 2014-08-01 21:00:41 -04:00
Eugene Yokota 5bcff4c5c9 scalariform formatting 2014-07-29 22:03:02 -04:00
Eugene Yokota f4cae232bb Improve doc on ModuleDetailReport per @jsuereth 2014-07-28 13:25:54 -04:00
Eugene Yokota 2b8fa35b8d Implements eviction warning stories. #1200
This implements all stories from https://github.com/sbt/sbt/wiki/User-Stories%3A-Conflict-Warning.
When scalaVersion is no longer effective an eviction warning will display.

    Scala version was updated by one of library dependencies:
        * org.scala-lang:scala-library:2.10.2 -> 2.10.3

When there're suspected incompatibility in directly depended Java libraries,
eviction warnings will display.

   There may be incompatibilities among your library dependencies.
   Here are some of the libraries that were evicted:
      * commons-io:commons-io:1.4 -> 2.4

When there's suspected incompatiblity in directly depended Scala libraries,
eviction warnings will display.

  There may be incompatibilities among your library dependencies.
  Here are some of the libraries that were evicted:
      * com.typesafe.akka:akka-actor_2.10:2.1.4 -> 2.3.4

This also adds 'evicted' task, which displays more detailed eviction warnings.
2014-07-27 12:26:12 -04:00
Eugene Yokota 439f8498b6 pseudo-case class VersionNumber
VersionNumber is a pseudo-case class that represents any form of
version number. The unapply extractor can parse String into
three sequences that makes up VersionNumber.
VersionNumberCompatibility trait uses two VersionNumber instances
to evaluate binary compatibility between them.
Two implementations SemVer and SecondSegment are provided.
2014-07-27 12:14:30 -04:00