The previous algorithm had the problem that if you had builds
A = browser+os.linux.x86_64
B = browser+os.osx.x86_64
available and came in looking for "something that satisfies 'browser'
and 'os.osx.x86_64'", Meteor would happily say:
"Neato-keen! 'A' satisfies 'browser'. And 'B' satisfies
'os.osx.x86_64'! Hey, that's all I needed! Let's download
both 'A' and 'B'! Hooray!"
when choosing just 'B' would have been good enough.
also fixes a bunch of other stuff like:
- parseStack markTop works again (so you get the right line numbers in
self-test)
- you can (with appropriate env var) run apps with NO PACKAGES at
all (even ctl)
- more consistently refer to METEOR-CORE@ releases as "Meteor 1.2.3"
other changes:
- defaultReleaseVersion is not synced using 'collections' any more,
since it is a singleton and has different merge logic
- publish-release --fromCheckout renamed to --from-checkout
- $METEOR_SAVE_TMPDIRS env var to not delete files.mkdtemp stuff
- release.latestDownloaded() now comes from tropohouse
we recognized that the cross-linking stuff in
Tropohouse.maybeDownloadPackageForArchitectures doesn't quite work so we
changed it to not quite work in a different way (which allows us to
leave downloaded-builds out of the bootstrap tarball and decrease its
size by 50%). will fix later.
- Exit with failure if proxy starts to listen. Previously, we got stuck
inside ProxyRunner.start(), and since we weren't waiting on any IO
we'd exit 0! (The existence of a yielded fiber is not sufficient to
block Node exit.)
- Don't print various bits of startup text if we are stopped midway.
- Stop main Runner immediately if proxy or mongo runners invoke
onFailure, rather than waiting for wait to be called and return.
- Ensure that a few Futures don't get return called on them multiple
times.
- Ensure we don't try to call close() on the proxy's TCP server if it
failed to listen in the first place.