Thanks to changes in the `build-node-for-dev-bundle.sh` script done in
0583e5883c, we now build a tarball which
is identical to the structure provided by Node.js themselves.
While generally we are using the main Node releases, this will allow
our users to (if need be), use a tarball directly in place of their own
in production without additional changes. Similarly, the only change
we need to make now when building the dev bundle is to use a different
URL.
In an effort to maintain parity with the official Node.js build, which
sets `node_prefix` to `/`, this takes advantage of the `DESTDIR`
variable which changes the actual installation location used by
`make install`. Without this, it relies on the `PREFIX` which is now
explicitly set to `/`, even though it won't be installed there.
See the `install.py` script for more information, in the form of code:
2a97eb61c6/tools/install.py (L13)
/cc @benjamn
To remain the same as official Node.js releases, we need to build with
the `small-icu` ICU (International Components for Unicode) package.
For Node.js 4.x this means ICU 56.x. As found with `process.config` on
an official Node.js release.
See https://github.com/nodejs/node/wiki/Intl#configure-node-with-specific-icu-source.
This switches Meteor's CircleCI builds from Circle 1.0 to Circle 2.0 which
has a bit more control over the workflow.
Currently, this eliminates the existing ci.sh script which was already a bit
incompatible when I was attempting to run Windows builds on another environment.
It's possible that we should change this to a Node.js wrapper script.
Other improvements:
- We now store Core Dumps in build artifacts. CircleCI 2.0 advertised this as
one of the features of CircleCI 2.0, but honestly, it was far from
straightforward. Perhaps if we were using another Dockerimage, but it was
far from as easy as flipping a switch. In addition to saving the Core Dump,
this also saves the Node.js binary which was included in the Dev Bundle. This
can be very handy for post-mortem debugging with tools like lldb, gdb, or mdb.
- Memory usage is now logged throughout the build via a background process which
logs `ps` output to a file which is persisted to the build artifacts. This
should help identify if builds are terminating for some environmental reason.
Since the -beta152.1 suffix is redundant with the meteor-tool version and
the release version, I'm using just -beta.1 for those versions, but I'm
using -beta152.1 for all other package versions, to avoid overlap with
versions previously published on the release-1.6 branch.