Commit Graph

81 Commits

Author SHA1 Message Date
David Greenspan
361a80c243 Changes from Glasser code review
Includes all discussed changes except:
- Checking for troposphere PVP compatibility
- "vConstraint" -> "versionConstraint"
- "name" -> "package" in utils.parsePackageAtVersion
2015-01-28 16:45:01 -08:00
ekatek
27f7daa7f8 Merge branch 'master' into devel 2015-01-20 18:03:40 -08:00
ekatek
c5bc843816 bring README.md files up to 1.0.3 compatibility
Fill in all packages without README.md files with a short
README.md mentioning that this is an internal Meteor package.

Break up the top paragraph of a couple of existing README.md
files to be proper long description.

There is more work to do here, involving line wrapping and the like.
2015-01-20 12:21:35 -08:00
ekatek
99124d881a increment package versions 2015-01-20 10:25:22 -08:00
David Greenspan
c71e495e10 Only test constraint-solver and PVP on server
You can still include them on the client, but they don’t work in
Safari 4 and IE 8 because semver.js uses ES 5 methods including
String#trim, Array#map/filter/forEach, and possibly others.

This should fix any unit test failures in these packages.
2015-01-15 22:15:23 -05:00
ekatek
4c42a87721 increment versions 2015-01-13 19:32:42 -08:00
ekatek
40fa95830f increment version numbers 2015-01-13 19:30:27 -08:00
David Greenspan
9d9dec602f Use the CatalogLoader in PackageResolver
PackageResolver no longer loads data from the Catalog.  Instead, it
tells CatalogLoader what to load, and it sets up the Resolver based
on what it finds in the CatalogCache.

PackageResolver now creates the Resolver inside resolve(…).  If the tool
were to invoke resolve(…) multiple times on the same PackageResolver
(which it doesn’t at the moment), the CatalogCache would persist, but
not the Resolver.  (Note that PackageResolver#resolve makes multiple
calls to the same Resolver#resolve internally.)

The purpose of this change is to stop using Resolver to store the
dependency graph.  Resolver will be replaced with a logic-solver-based
implementation that will not represent the graph as is, but instead
encode the graph as a satisfiability problem.  Meanwhile, CatalogCache
is better at storing the graph than Resolver was, because it is easy
to populate, query, and serialize.

This change brings us back to a functional “devel”.
2015-01-09 10:26:06 -08:00
David Greenspan
10698d5940 PackageConstraint has a toString() 2015-01-08 13:46:59 -08:00
David Greenspan
fe8a661e2f PackageConstraint can take a VersionConstraint
also, versionConstraint.raw is always a String
2015-01-08 13:38:17 -08:00
David Greenspan
e885e78348 Change the format returned by PVP.parseConstraint
This is a breaking change to package-version-parser.

A PackageConstraint used to look like this:

```
{ name: String,
  constraintString: String,
  constraints: [{version: String|null,
                 type: String}]}
```

Now it looks like this:
```
{ name: String,
  constraintString: String,
  vConstraint: {
    raw: String,
    alternatives: [{versionString: String|null,
                    type: String}]}}
```

Where (vConstraint instanceof VersionConstraint) and
(vConstraint.raw === constraintString).

This achieves several desirable changes at once.

* `constraint.constraints` for the disjuncts in “1.0.0||2.0.0”
  was confusing.  `alternatives` is better.
* Having a class for VersionConstraint will come in handy because
  we can add methods to it, and we can use it in the constraint
  solver to represent the problem statement.
* The names “vConstraint” and “versionString” are a little verbose,
  but there really shouldn’t be a lot of code that dives into this
  structure, and I really wanted to avoid anyone ever writing:
  `constraint.constraint.alternatives[0].version`, and then wondering
  what sort of object that was (not a parsed PackageVersion! we could
  parse eagerly but that might be slow).
2015-01-07 20:10:44 -08:00
David Greenspan
f51afe18f0 Ban constraints like foo@||
Clean up parseSimpleConstraint
2015-01-07 19:27:09 -08:00
David Greenspan
184ab3bde1 PV.parseConstraint returns a PackageConstraint
Mostly I just made parseConstraint clearer and gave the return value a
prototype.

There are new unit tests, and the existing ones have been given much
better names.

PV.parseConstraint also now optionally takes two arguments, a package name and a version constraint.  We can eventually propagate this feature to the tool and stop concatenating with “@” so much.

I’m referring to “foo@=1.0.0” as a PackageConstraint and “=1.0.0” as a version constraint.  I’ll probably add a VersionConstraint class too.
2015-01-07 19:04:55 -08:00
David Greenspan
9b6087a099 PVP: Add a test 2015-01-07 15:40:38 -08:00
David Greenspan
259f90bc5a Make PVP able to parse a version (and work on client)
Despite the name “package-version-parser,” PVP didn’t really provide a way to parse a package version.  With this change, if you want to get the minor version of “1.2.3_4”, for example, you can just write `PV.parse(“1.2.3_4”).minor`.  This simplifies the internals of PVP as well.

When you parse a version, you now get an instance of PackageVersion with a documented set of fields.

Also, make PVP work on the client.  When called directly from the tool, semver is loaded the same way as before.  When PVP is used as a package, it uses a copy of semver v4.1.0 kept inside the package.

This change is intended to be 100% behavior-preserving.
2015-01-07 15:17:30 -08:00
David Glasser
6b204ca73a Bump package versions for 1.0.2 2014-12-19 10:31:59 -08:00
David Glasser
73b809c122 Bump versions for 1.0.2. 2014-12-11 22:44:41 -08:00
David Glasser
0ed8a9b32d bump package versions for a test release 2014-12-10 14:50:11 -08:00
David Glasser
44563f13b4 Allow prerelease parts with digits and nondigits
Previously the constraint solver crashed on such things.

Fixes #3147.
2014-12-09 20:33:06 -08:00
David Glasser
6ea8443f30 Update calls to addFiles, onUse, and onTest 2014-12-09 20:18:31 -08:00
David Glasser
de5f68cf70 bump all versions (due to source-map upgrade) 2014-11-25 09:06:26 -08:00
David Greenspan
3719494af3 Add a few comments 2014-11-08 20:11:01 -08:00
David Glasser
d5afd1b6a9 Update shrinkwrap 2014-10-30 15:12:30 -07:00
David Glasser
d4feca7703 Upgrade semver to 4.1.0
I believe all the backwards-incompatible changes are to features we
don't use, like range expressions and the inc function.
2014-10-30 15:12:28 -07:00
Sashko Stubailo
36da5aecb4 Make all version numbers not have rc 2014-10-13 14:09:37 -07:00
Nick Martin
5b17ef1a30 Version bump for rc.6 2014-10-10 20:37:54 -07:00
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
Sashko Stubailo
698fbedb10 Bump all of the version numbers to rc.0 2014-10-07 17:10:48 -07:00
Sashko Stubailo
1e53f6b598 Bump all version numbers again after cherry-picking unipackage fix 2014-10-01 17:06:57 -07:00
Sashko Stubailo
0129c3f5ac Bump all of the version numbers again, to republish with the unipackage.json fix 2014-10-01 15:43:05 -07:00
Sashko Stubailo
47800298c6 Merge branch '0.9.3.1' into 0.9.4-pre.2
Conflicts:
	History.md
	packages/meteor-tool/package.js
	packages/package-version-parser/package.js
	scripts/admin/banners.json
	scripts/admin/meteor-release-experimental.json
2014-10-01 15:18:10 -07:00
Avital Oliver
b20285e633 0.9.3.1 2014-09-30 18:10:41 -07:00
Avital Oliver
3664803d1a Bump versions for 0.9.3.1-rc.0 2014-09-30 16:37:00 -07:00
Avital Oliver
f6ffe668c4 Allow more than one dash in package version names
This is consistent with the semver spec, and should fix
2014-09-30 16:16:38 -07:00
Sashko Stubailo
eecc272e4a Bump every single package version number due to a change in compilation 2014-09-29 23:44:50 -07:00
ekatek
bab557d49b incrementing package versions for a clean release 2014-09-25 18:34:34 -07:00
ekatek
90c5fc3619 increment pvp package as well 2014-09-25 11:48:54 -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
ekatek
64b0ea4f5b increment package numbers 2014-09-24 23:41:17 -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
cbe4d6dd6d increment package versions 2014-09-22 22:07:33 -07:00
ekatek
e35e64b30c user the underscore instead of a tilde 2014-09-22 21:57:23 -07:00
ekatek
220cc69e31 package versions incremented 2014-09-19 21:16:14 -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