mirror of
https://github.com/meteor/meteor.git
synced 2026-05-02 03:01:46 -04:00
@@ -27,13 +27,26 @@ CS.PackagesResolver = function (catalog, options) {
|
|||||||
// included versions are the only pre-releases that are allowed to match
|
// included versions are the only pre-releases that are allowed to match
|
||||||
// constraints that don't specifically name them during the "try not to
|
// constraints that don't specifically name them during the "try not to
|
||||||
// use unanticipated pre-releases" pass
|
// use unanticipated pre-releases" pass
|
||||||
|
// - missingPreviousVersionIsError - throw an error if a package version in
|
||||||
|
// previousSolution is not found in the catalog
|
||||||
CS.PackagesResolver.prototype.resolve = function (dependencies, constraints,
|
CS.PackagesResolver.prototype.resolve = function (dependencies, constraints,
|
||||||
options) {
|
options) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
options = options || {};
|
||||||
var input = new CS.Input(dependencies, constraints, self.catalogCache,
|
var input = new CS.Input(dependencies, constraints, self.catalogCache,
|
||||||
options);
|
_.pick(options, 'upgrade', 'anticipatedPrereleases',
|
||||||
|
'previousSolution'));
|
||||||
input.loadFromCatalog(self.catalogLoader);
|
input.loadFromCatalog(self.catalogLoader);
|
||||||
|
|
||||||
|
if (options.previousSolution && options.missingPreviousVersionIsError) {
|
||||||
|
_.each(options.previousSolution, function (version, package) {
|
||||||
|
if (! input.catalogCache.hasPackageVersion(package, version)) {
|
||||||
|
CS.throwConstraintSolverError(
|
||||||
|
"Package version not in catalog: " + package + " " + version);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
return CS.PackagesResolver._resolveWithInput(input, this._options.nudge);
|
return CS.PackagesResolver._resolveWithInput(input, this._options.nudge);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -391,6 +391,8 @@ _.extend(ProjectContext.prototype, {
|
|||||||
var anticipatedPrereleases = self._getAnticipatedPrereleases(
|
var anticipatedPrereleases = self._getAnticipatedPrereleases(
|
||||||
depsAndConstraints.constraints, cachedVersions);
|
depsAndConstraints.constraints, cachedVersions);
|
||||||
|
|
||||||
|
var isFirstAttempt = true;
|
||||||
|
|
||||||
// Nothing before this point looked in the official or project catalog!
|
// Nothing before this point looked in the official or project catalog!
|
||||||
// However, the resolver does, so it gets run in the retry context.
|
// However, the resolver does, so it gets run in the retry context.
|
||||||
catalog.runAndRetryWithRefreshIfHelpful(function () {
|
catalog.runAndRetryWithRefreshIfHelpful(function () {
|
||||||
@@ -399,7 +401,8 @@ _.extend(ProjectContext.prototype, {
|
|||||||
|
|
||||||
var resolveOptions = {
|
var resolveOptions = {
|
||||||
previousSolution: cachedVersions,
|
previousSolution: cachedVersions,
|
||||||
anticipatedPrereleases: anticipatedPrereleases
|
anticipatedPrereleases: anticipatedPrereleases,
|
||||||
|
missingPreviousVersionIsError: isFirstAttempt
|
||||||
};
|
};
|
||||||
if (self._upgradePackageNames)
|
if (self._upgradePackageNames)
|
||||||
resolveOptions.upgrade = self._upgradePackageNames;
|
resolveOptions.upgrade = self._upgradePackageNames;
|
||||||
@@ -432,6 +435,8 @@ _.extend(ProjectContext.prototype, {
|
|||||||
|
|
||||||
self._completedStage = STAGE.RESOLVE_CONSTRAINTS;
|
self._completedStage = STAGE.RESOLVE_CONSTRAINTS;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
isFirstAttempt = false;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user