Commit Graph

96 Commits

Author SHA1 Message Date
Eugene Yokota 9d87715100 Automatic eviction warning
This extracts info.versionScheme from POM and uses that to guide the
eviction report instead of taking a stab in the dark that all Scala
libraries are using pvp.
2020-08-05 16:39:11 -04:00
Eugene Yokota 5f4cbad6c4 support UNC path
Fixes https://github.com/sbt/sbt/issues/5596
2020-06-25 23:24:43 -04:00
Eugene Yokota 375613efbf Make validateProtocol return Boolean
Ref https://github.com/sbt/sbt/issues/4905

To deprecate and unsupport HTTP, first log all the error messages out then throw at sbt level.
2020-06-06 19:29:09 -04:00
Eugene Yokota fd71e8cb17 Bump Contraband 2020-04-06 18:15:46 -04:00
Eugene Yokota b01b61384e Add custom handling for Disabled companion object
https://github.com/sbt/librarymanagement/pull/316 started returning Disabled companion object for `apply()` instead of creating a new instance.
This leaked into JSON as it uses runtime types for union. This works around that by providing a hand-crafted format.

Ref https://github.com/sbt/sbt/pull/4997
2019-08-28 18:33:46 -04:00
Eugene Yokota 2071b29748 Remove unused file 2019-08-28 18:28:30 -04:00
Eugene Yokota 337716830f Deprecate HTTP resolvers (take 2)
Ref https://github.com/sbt/sbt/issues/4905
Ref https://github.com/sbt/librarymanagement/pull/312

Based on the discussion in https://github.com/sbt/sbt/issues/4905, this will exempt localhost, and also allows per-resolver opt-in for HTTP.
2019-08-28 15:20:23 -04:00
Eugene Yokota 7ad02276e9 adding try-catch per review 2019-08-27 23:37:45 -04:00
Eugene Yokota 5480646715 pass in Locale
toLowerCase would act differently in Turkey.
2019-08-27 17:51:19 -04:00
Eugene Yokota c5ce636376 Flip the default to not use Gigahorse by default
Fixes https://github.com/sbt/sbt/issues/3570

The primary motivation for bringing in Gigahorse was to speed up the dependency resolution, especially in a high-latency environment like Australia, by enabling keep-alive. One of unintended consequences was that it ended up exposing either a bug in okhttp or Nexus / Artifactory's handling of keep-alive, since corporate users behind these proxy repositories started to experience problem publishing. Multiple people have also reported that putting network proxies like HAProxy works around this issue, which seems consistent with the theory.

Now that dependency resolution has switched to using Coursier by default, I am just going to flip the default here so publishing would use Ivy's default URL handler based on `java.net.HttpURLConnection` - 5681e1a77a/src/java/org/apache/ivy/util/url/BasicURLHandler.java
2019-08-27 17:47:32 -04:00
Eugene Yokota d0ce65378c Refactor system properties lookup 2019-08-27 17:18:05 -04:00
Eugene Yokota 4a1b6232e4 deprecate CrossVersion.Disabled 2019-08-22 13:11:10 -04:00
Eugene Yokota c22cb34e7b Make CrossVersion.Disabled stable
Fixes https://github.com/sbt/sbt/issues/4975

This makes `CrossVersion.Disabled` a stable identifier by reverting `final def` back to `final val`.

This is to fix Scala.JS build

```
[error] ScalaJSCrossVersion.scala:34:23: stable identifier required, but sbt.`package`.CrossVersion.Disabled found.
[error]     case CrossVersion.Disabled =>
[error]                       ^
[error] one error found
[error] (Compile / compileIncremental) Compilation failed
```

### notes

- #121 added `final val Disabled = sbt.librarymanagement.Disabled` but it was just a companion object
- #280 actually made it `final val Disabled = sbt.librarymanagement.Disabled()`, but this broke Cat's build that was calling `CrossVersion.Disabled()`
- #290 changed to `final def Disabled = sbt.librarymanagement.Disabled` and `object Disabled extends sbt.librarymanagement.Disabled`
- This changes back to `final val Disabled = sbt.librarymanagement.Disabled` (but because we changed the companion object in #290 that's ok)
2019-08-22 01:54:14 -04:00
Eugene Yokota a9873101bf Fix validatePatterns
https://github.com/sbt/librarymanagement/pull/312 had a bug.
2019-08-17 22:17:58 -04:00
Eugene Yokota 8fee1e2666 improve "X is evicted completely"
Fixes https://github.com/sbt/sbt/issues/4946

1. This rewords "evicted completely" to "evicted for all versions"
2. Skips transitive and complete evictions (eviction that has no winner version)
2019-08-13 23:35:50 -04:00
Eugene Yokota c89695b4b2 Deprecate HTTP resolvers
Ref https://github.com/sbt/sbt/issues/4905
2019-08-01 16:20:22 -04:00
Eugene Yokota 6a36ce7689 applying Scalafmt 2.0.0-RC6 with sbt/sbt rules 2019-04-29 23:32:52 -04:00
Eugene Yokota 2f8d9ad8ca move CrossVersion to src/
Fixes sbt/sbt#4595
Ref #290
Ref #280

This is bit of an odd one.

To keep bincompat and also to fix sbt 0.13 compatibility issue we have made `Disabled` companion object extend `Disabled` type.
This actually created a subtle deserialization issue:

```
[error] scala.MatchError: Disabled() (of class sbt.librarymanagement.Disabled$)
[error] 	at sjsonnew.FlatUnionFormats$$anon$5.write(FlatUnionFormats.scala:220)
[error] 	at sjsonnew.JsonWriter.addField(JsonFormat.scala:40)
[error] 	at sjsonnew.JsonWriter.addField$(JsonFormat.scala:37)
[error] 	at sjsonnew.FlatUnionFormats$$anon$5.addField(FlatUnionFormats.scala:208)
[error] 	at sjsonnew.Builder.addField(Builder.scala:43)
[error] 	at sbt.librarymanagement.ModuleIDFormats$$anon$1.write(ModuleIDFormats.scala:46)
```

This is because Contraband generates `flatUnionFormat5[CrossVersion, Disabled, ...]` for all of the subtypes of `CrossVersion`, which uses the runtime type information. Now that `Disabled` object is also in the mix, this created JSON that `CrossVersionFormats` cannot deserialize. This brings the code into src/ so we can write this part manually.
2019-04-01 23:35:39 -04:00
eugene yokota 82735ae983
Merge pull request #290 from eed3si9n/wip/disabled-bincompat
make object Disabled extend Disabled
2019-01-23 19:40:04 -05:00
Eugene Yokota 75c319e6bb make object Disabled extend Disabled
Ref https://github.com/sbt/librarymanagement/pull/280

This is to workaround bincompat error detected by sbt community build.

```
[cats] [error] java.lang.NoSuchMethodError: sbt.librarymanagement.CrossVersion$.Disabled()Lsbt/librarymanagement/Disabled$;
```
2019-01-23 15:06:47 -05:00
bigwheel 8d4f6cee48 [Fix #287] Add alternative constructor for binary compatibility 2019-01-14 19:02:41 +09:00
bigwheel c1a93c65b7 [Fix #287] Eviction warning summary shows only binary incompatible 2019-01-10 22:24:11 +09:00
Dale Wijnand ead0f82575
Fix CrossVersion.Disabled compat 2018-11-24 09:31:30 +00:00
eugene yokota 4b179e526d
Merge pull request #270 from andreaTP/coursierAgain
Add Coursier as a  library management implementation
2018-10-29 13:26:30 -04:00
Dale Wijnand 58bfe85f42 Collapse eviction warnings
Rather than

    [warn] There may be incompatibilities among your library dependencies.
    [warn] Run 'evicted' to see detailed eviction warnings
    [info] Done updating.
    [warn] There may be incompatibilities among your library dependencies.
    [warn] Run 'evicted' to see detailed eviction warnings
    [info] Done updating.
    [warn] There may be incompatibilities among your library dependencies.
    [warn] Run 'evicted' to see detailed eviction warnings
    [info] Done updating.
    [warn] There may be incompatibilities among your library dependencies.
    [warn] Run 'evicted' to see detailed eviction warnings

I would get:

    [warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings
    [info] Done updating.
    [warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings
    [info] Done updating.
    [warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings
    [info] Done updating.
    [warn] There may be incompatibilities among your library dependencies; run 'evicted' to see detailed eviction warnings

which is a touch better. (IMO!)
2018-10-18 14:10:59 -04:00
tanishiking 1d429e4c51 Update scaladoc for SemanticVersionSelector
Fix for https://github.com/sbt/sbt/issues/4422
2018-10-17 00:30:13 +09:00
Leonard Ehrenfried ed25bcba43 Add implementation of coursier 2018-10-15 10:24:34 +01:00
Eugene Yokota f1a99e5e4a Fix the contains issue
Fixes https://github.com/sbt/librarymanagement/issues/259
2018-10-15 03:02:53 -04:00
Eugene Yokota 02475c7a66 -Xfatal-warnings 2018-09-21 01:16:55 -04:00
xuwei-k 326342cf32 fix #134 validate Configuration id 2018-08-01 22:45:02 +09:00
Eugene Yokota 22a4eed65f Default eviction warning to summary 2018-07-01 02:10:41 -04:00
Peter Neyens 3b9385dfc5 Set Gigahorse readTimeout to 1 hour 2018-06-16 13:19:32 +01:00
Eugene Yokota c0a0b7db0c Merge branch '1.1.x' into wip/merge-1.1.x 2018-06-14 01:42:01 -04:00
tanishiking24 c24ab5c4ee Enable sbt to specify config.resource without disabling gigahorse
Fix https://github.com/sbt/sbt/issues/3585.
Gigahorse.config tries to load specified config file in sbt's classpath
and of course fail to find the specified config file, and throw
java.io.IOException if we specify config.resource, because

We can avoid trying to load specified config file inside sbt by
avoid using Gigahorse.config that call `ConfigFactory.load()` inside.

This commit fixes librarymanagement not to use Gigahorse.config and make
it use gigahorse.Config() which returns gigahorse's default config
without calling `ConfigFactory.load()` instead.
2018-05-17 10:46:21 +09:00
tanishiking24 d5f5cbb061 Rename VersionNumber#satisfies to VersionNumber#matchesSemVer
VersionNumber#matchesSemVer receive SemanticSelector instead of String
2018-05-12 12:28:03 +09:00
tanishiking24 4e8b6dc7aa Use contraband for generating SemanticSelector instead of using case class. 2018-05-12 12:23:58 +09:00
tanishiking24 f8efdb1ac2 Make semantic selector honor semver ordering around pre-release tags.
- When major, minor, and patch are equal, a pre-release version has lower precedence than a normal version. Example: 1.0.0-alpha < 1.0.0.
- Precedence for two pre-release versions with the same major, minor, and patch version MUST be determined by comparing each <del>dot</del> hyphen separated identifier from left to right until a difference is found as follows
- identifiers consisting of only digits are compared numerically and identifiers with letters or hyphens are compared lexically in ASCII sort order.
- Numeric identifiers always have lower precedence than non-numeric identifiers.
- A larger set of pre-release fields has a higher precedence than a smaller set, if all of the preceding identifiers are equal.
- Example: 1.0.0-alpha < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 1.0.0.

https://semver.org/#spec-item-11
2018-05-11 02:15:43 +09:00
tanishiking24 c0c88eda9f Add semantic version number selector API.
This semantic version number selector API is based on
- https://draftin.com/documents/375100?token=rR30GmJJzi4l3BRlD-cHs8lcAcdDAXH4oTzqOWeL0CT0BNv3PZEx0g8pBkI13sQgYXTBqShZ0Ucsqek3Fn3d-aU
- https://docs.npmjs.com/misc/semver
2018-05-09 02:53:01 +09:00
xuwei-k 4d3818f9f7 use foldLeft instead of /:
02776afa79/src/library/scala/collection/IterableOnce.scala (L465)
2018-05-03 23:03:44 +09:00
eugene yokota cf9311a2e3
Merge pull request #222 from dwijnand/cleanup/VersionNumber
Cleanup & tweak VersionNumber
2018-04-05 11:41:25 -04:00
Dale Wijnand f74ec06699
Change semantics to match previous semantics
We're unsure about SemVer's semantics around pre-releases, so for now we
just revert this refactoring to preserve the semantics it's always had.
2018-04-05 14:42:41 +01:00
Dale Wijnand 79e31a3e0f
Allow pre-release versions to be compatible with normal versions 2018-04-03 17:48:26 +01:00
Eugene Yokota 1073513b49 Merge branch '1.1.x' into wip/merge-1.1.x 2018-03-27 06:19:28 -04:00
Eugene Yokota a29a12054a bump contraband to 0.4.0
Ref https://github.com/sbt/contraband/issues/119
2018-03-23 22:21:05 +09:00
Dale Wijnand 0f93849214
Cleanup & tweak VersionNumber 2018-03-20 09:38:54 +00:00
Dale Wijnand c6b2b626c8
Merge pull request #221 from dwijnand/cleanup/VersionNumberSpec
Cleanup VersionNumberSpec
2018-03-20 09:36:36 +00:00
Dale Wijnand 4b9eb388a2
In VersionNumberSpec switch to FreeSpec, add "assert" prefix 2018-03-19 19:47:55 +00:00
Dale Wijnand f159846376
In VersionNumberSpec pass VersionString explicitly 2018-03-19 14:58:08 +00:00
Dale Wijnand dee7390117
Rename to MakePomConfigurationExtra.scala to match
See for example CrossVersionExtra.scala
2018-03-15 14:57:50 +00:00
Dale Wijnand a1999a9b90
Cleanup VersionNumberSpec 2018-03-15 01:47:30 +00:00