Commit Graph

26 Commits

Author SHA1 Message Date
Eugene Yokota e9ee8a6cab Scala 3 2022-01-30 02:55:17 -05:00
Adrien Piquerez 37234e35ba Fix Scala 3 binary version
- for 3.0.1-bin-nonbootstrapped it should be 3
- for 3.0.1-SNAPSHOT it should be 3
2021-07-08 13:14:16 +02:00
Eugene Yokota ae9f17c8fc Permit dot in cross util version parsing
Ref #377
2021-05-15 14:55:23 -04:00
Eugene Yokota 0ce5142b17 Apply version number parsing fix
Ref #377

Apply the dotted-prerelease tag to SemComparator
"A pre-release version MAY be denoted by appending a hyphen and a series of dot separated identifiers immediately following the patch version."
2021-05-15 14:12:46 -04:00
Amina Adewusi 6f87212b9f Fixes sbt/sbt#6496 - bug in version parser
What is the problem?
sbt/sbt#6496 identifies a bug in the logic which assesses whether
different versions of the same transitive dependency are binary
compatible. If one of the transitive dependencies included a version
with a full-stop literal, it would be parsed incorrectly and an error
would be thrown to the user falsely saying that the dependencies are
binary incompatible.

What is the solution?
This PR fixes the regex used by the parser to include full-stop literals.

Is there anything else to be done?
It is worth us checking the rest of the codebase in case this bug might
exist in other parsers. The tests are super helpful for figuring out
which strings might break the current logic.
2021-05-14 19:39:37 +01:00
Adrien Piquerez c98e51418f Fix binary version of 3.0.1-RC1 2021-03-30 17:50:50 +02:00
Eugene Yokota 12d46e3fce Make ModuleID#cross(...) preserve existing prefix
Fixes https://github.com/sbt/sbt/issues/6280

sbt-platform-deps implements `%%%` operator in https://github.com/portable-scala/sbt-platform-deps/blob/v1.0.0/src/main/scala/org/portablescala/sbtplatformdeps/PlatformDepsBuilders.scala#L36-L43
by setting the prefix field on `sbt.librarymanagement.Binary(...)`.
Currently `.cross(...)` would wipe this out, so `%%%` and `cross(CrossVersion.for3Use2_13)` do not compose.

This changes the implementation of `.cross(...)` so it can be chained
together and it will try to preserve the prefix (and suffix) values from
the existing `crossVersion` values.
This should fix the 2.13-3.x sandwich on Scala.JS and Scala Native.
2021-01-23 15:47:33 -05:00
Eugene Yokota 417a30f8db Update to Scala 2.12.13 + 2.13.4 2021-01-17 04:18:49 -05:00
Adrien Piquerez 2b1806ae25 Add for3Use2_13 and for2_13Use3 2021-01-08 18:25:01 +01:00
Eugene Yokota 5942ccbe1f Add Scala 2.13 support 2021-01-03 00:59:38 -05:00
Adrien Piquerez f1ede7cd06 Add Scala 3 binary versioning 2020-12-17 09:32:40 +01:00
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 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 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 6a36ce7689 applying Scalafmt 2.0.0-RC6 with sbt/sbt rules 2019-04-29 23:32:52 -04:00
xuwei-k 326342cf32 fix #134 validate Configuration id 2018-08-01 22:45:02 +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
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 a1999a9b90
Cleanup VersionNumberSpec 2018-03-15 01:47:30 +00:00
Eugene Yokota c0ac7061db Reorganize existing tests 2018-01-12 23:10:15 -05:00
Dale Wijnand f45a076241
Make sure UpdateReport has a nice toString^2
Fixes sbt/sbt#3357
2017-08-07 15:10:11 +01:00
Dale Wijnand 52923854cc
Make sure UpdateReport has a nice toString
Fixes sbt/sbt#3357
2017-07-28 08:16:38 +01:00
Eugene Yokota 7b22e78fd9 Library management API
This splits the core of LM and Ivy-based implementation.

- InlineConfiguration is renamed to ModuleConfiguration
- IvyScala is renamed to ScalaModuleInfo
- UpdateConfiguration, RetrieveConfiguration, PublishConfiguration are refactored to use builder pattern.
- Adds ConfigRef for referencing Configuration
- Moves syntax related things into `sbt.librarymagement.syntax`
2017-07-15 11:17:23 -04:00