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.
Unlike the last one, this actually tracks what builds we have
downloaded, and merges new ones in. It also doesn't waste space with
extra unnecessary downloaded-builds directories.
Should still fix the greedy algorithm in getBuildsForArches.
Still needs better error handling/reporting
publish-for-arch now works again (for non-release non-includeTool
packages) and you can actually download multiple builds of a version!
This makes a few changes:
- renames the thing inside a unipackage to 'unibuild' from
'build' (previously 'slice'); 'build' continues to refer to a specific
instance of a version of a package (ie a tarball)
- renames the 'architecture' field of a build (which is a plus-separated
string of arches) to 'buildArchitectures'
- oops! we were not actually making any packages binary-specific (ie
they were all browser+os!) fixed this, and another bug that it
revealed
- updates the unipackage format to unipackage-pre2, and allow us
to recognize (but not load, just ignore) unipackage-pre1
- some fixes for the recent schema change that removes packageName and
version from Build records
the "We pass" comment was stolen back from devel
basically, whenever doing eachUsedBuild, you really want to pass in the
arch of the overall compilation (or for plugins, the host arch), not the
arch of the unibuild you happen to be sitting in right now. because if
you're sitting in a generic "os" unibuild, it won't know whether to use
os.mac or os.linux or whatever if you pass in "os"!
we changed the effective format without changing the name a while ago
anyway. Technically we didn't need this before because we also changed
the .build dir name to .build.foo but this is still reasonable.
This fix obviates the direct need for bb7710067, but given that we are
allowing colons in package names, we might as well allow them in
generated file names anyway (and keep bb7710067).
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"
In particular, this becomes especially important with packaging
since we ping the server with a DDP connection every time you
run an app. Multiple times actually.
So now there's no ECONN error messages printed