Commit Graph

21 Commits

Author SHA1 Message Date
David Glasser
7126e17109 Allow any number of spaces by || in constraints
Previously, exactly one was required, but this was not explicitly
documented.
2014-10-09 21:20:14 -07:00
Avital Oliver
a9ea64a7c3 Allow more than one dash in package version names
This is consistent with the semver spec, and should fix
2014-09-30 11:49:43 -07:00
Nick Martin
1db094b411 Revert "Ignore packages with malformed versions or malformed constraints"
This reverts commit 8fe23b418b.
2014-09-25 11:41:56 -07:00
Avital Oliver
8fe23b418b Ignore packages with malformed versions or malformed constraints
This allows us to later increase the pool for well-formed versions without requiring
moving the catalog's data.json into a new folder, which would require re-syncing
the entire catalog.
2014-09-24 23:19:59 -07:00
Avital Oliver
2a71dbfc41 Change output range for PackageVersionParser.versionMagnitude
It's now back to returning 10000 for "1.0.0", as it was before
the recent changes to allow for wrapped package version numbers
and prerelease versions. Given that there are other constants
in the cost function used in the constraint solver, this gives
us much more confidence that we haven't fundamentally changed
the behavior of `meteor add` or `meteor update` in 0.9.3.
2014-09-24 17:44:44 -07:00
Avital Oliver
782c0ac1bb Support semver prerelease versions
The semver library's compare functions already did the right thing,
but our `PackageVersion.versionMagnitude` did not. It now almost
correctly works for prerelease versions with a few caveats described
in a [* XXX!] comment.

While at it, add many tests which caught a separate bug due to
adding a number to a string for versions such as "1.2.3_50".
(That version would have been chosen over "5.0.0"!)
2014-09-23 15:19:20 -07:00
ekatek
e35e64b30c user the underscore instead of a tilde 2014-09-22 21:57:23 -07:00
ekatek
e1311c407c function to check if a version constraint is compatible with pre0.9.3 versions, default token to send to syncNewData includes format specifications 2014-09-19 16:56:25 -07:00
ekatek
d8377487dc support multiple major versions in meteor 0.9.3 and above. A little hacky in the tool around keeping old interfaces, but it works 2014-09-18 00:12:30 -07:00
ekatek
69f637c8e5 glassers comments on wrap numbers 2014-09-10 15:53:23 -07:00
ekatek
390b6394b5 strip out extra dependencies on semver in tool 2014-09-10 15:53:23 -07:00
ekatek
8f29056b4c wrapping external library versions support in p-v-p and constraint-solver 2014-09-10 15:53:23 -07:00
David Glasser
43e01c09eb Improve treatment of prerelease (dashed) packages
Drop the "at-least" constraint type entirely. It was not user-accessible
and was only used in the form ">=0.0.0" to represent a constraint with
no version constraint at all. This type of constraint is now called
"any-reasonable".

The definition of "any-reasonable" is:

  - Any version that is not a pre-release (has no dash)
  - Or a pre-release version that is explicitly mentioned in a TOP-LEVEL
    constraint passed to the constraint solver

For example, constraints from .meteor/packages, constraints from the
release, and constraints from the command line of "meteor add" end up
being top-level.

Why only top-level-constrained pre-release versions, and not versions we
find explicitly desired by some other desired version while walking the
graph?

The constraint solver assumes that adding a constraint to the resolver
state can't make previously impossible choices now possible.  If
pre-releases mentioned anywhere worked, then applying the constraints
"any reasonable" followed by "1.2.3-rc1" would result in "1.2.3-rc1"
ruled first impossible and then possible again. That's no good, so we
have to fix the meaning based on something at the start.  (We could try
to apply our prerelease-avoidance tactics solely in the cost functions,
but then it becomes a much less strict rule.)

At the very least, this change should allow you to run meteor on a
preview branch like cordova-hcp without getting a conflict between the
prerelease package on the branch/release and the lack of an explicit
constraint in .meteor/packages on that package, because we are
reintepreting the .meteor/packages constraint as meaning "anything
reasonable" and the in-the-release version counts as reasonable.
2014-08-26 21:54:48 -07:00
David Glasser
628be93f61 fix tests that tested lies! 2014-08-21 17:09:23 -07:00
David Glasser
f39a820d96 Don't parse '@>=' ranges by default
They are still used internally by the constraint solver (to implement
update --breaking) but cannot be externally specified.

Also, stop supporting "@none", whatever that was.
2014-08-15 22:12:04 -07:00
David Glasser
e59fb948b5 fix tests broken by 6850b679e9 2014-07-30 19:24:55 -07:00
Slava Kim
98d9a56a62 Extend the number of types of constraints from 2 to 3
Instead of having a "exact" flag, have a "type" field with 3 different values
2014-05-15 18:16:30 -07:00
ekatek
f2d3972857 integration mostly works except for bizarre constraint solver output bug 2014-05-09 15:15:45 -07:00
Geoff Schmidt
985ffea9fa WIP - make package build run the constraint solver.
move constraint solver from a package into the tool.
unipackage loading is broken; next step is to fix that
2014-03-12 19:02:47 -07:00
Slava Kim
9dd40fa1db extract parseVersionConstraint from parseConstraint 2014-03-05 01:25:51 -08:00
Slava Kim
468f32bd80 package-version-parser package
first version of a package that parses smart package version string
2014-03-04 23:08:38 -08:00