glasser's responses on the -rc changes

This commit is contained in:
ekatek
2014-09-10 15:53:13 -07:00
parent 69f637c8e5
commit f02314f66e
3 changed files with 30 additions and 7 deletions

View File

@@ -265,8 +265,12 @@ ConstraintSolver.PackagesResolver.prototype.resolve = function (
throw e;
}
}
var ret = {
answer: resolverResultToPackageMap(res),
usedRCs: resolverOptions["useRCs"]
};
return resolverResultToPackageMap(res);
return ret;
};
var removeUnibuild = function (unitName) {

View File

@@ -390,7 +390,8 @@ ConstraintSolver.Constraint.prototype.isSatisfied = function (
}
if (self.type === "any-reasonable") {
// Non-prerelease versions are always reasonable.
// Non-prerelease versions are always reasonable, and if we are OK with
// using RCs all the time, then they are reasonable too.
if (!/-/.test(candidateUV.version) ||
resolveContext.useRCsOK)
return true;
@@ -421,9 +422,10 @@ ConstraintSolver.Constraint.prototype.isSatisfied = function (
return self.version === candidateUV.version;
}
// If you're not asking for a pre-release, you'll only get it if it was a top
// level explicit mention (eg, in the release).
if (/-/.test(candidateUV.version)) {
// If you're not asking for a pre-release (and you are not in pre-releases-OK
// mode), you'll only get it if it was a top level explicit mention (eg, in
// the release).
if (/-/.test(candidateUV.version) && !resolveContext.useRCsOK) {
if (self.version === candidateUV.version)
return true;
if (!_.has(resolveContext.topLevelPrereleases, self.name) ||

View File

@@ -528,13 +528,15 @@ _.extend(CompleteCatalog.prototype, {
messageAfterMs: 1000,
message: "Figuring out the best package versions to use. This may take a moment."
});
var ret;
try {
// Then, call the constraint solver, to get the valid transitive subset of
// those versions to record for our solution. (We don't just return the
// original version lock because we want to record the correct transitive
// dependencies)
try {
return self.resolver.resolve(deps, constr, resolverOpts);
ret = self.resolver.resolve(deps, constr, resolverOpts);
} catch (e) {
// Maybe we only failed because we need to refresh. Try to refresh
// (unless we already are) and retry.
@@ -544,12 +546,27 @@ _.extend(CompleteCatalog.prototype, {
}
catalog.official.refresh();
self.resolver || self._initializeResolver();
return self.resolver.resolve(deps, constr, resolverOpts);
ret = self.resolver.resolve(deps, constr, resolverOpts);
}
} finally {
patience.stop();
}
if (ret["usedRCs"]) {
process.stderr.write(
"\nWARNING: In order to resolve constraints, we had to use the following "+
"experimental package versions:\n");
var packages = "";
_.each(ret.answer, function(version, package) {
if (version.split('-').length > 1) {
packages+= package + "@" + version + ", ";
}
});
packages = packages.slice(0, packages.length - 2);
process.stderr.write(packages + "\n\n");
}
return ret.answer;
},
// Refresh the packages in the catalog.
//
// Reread server data from data.json on disk, then load local overrides on top