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.
There have been a number of commits in the history for `rimraf` which
indicate others have also been struggling with ENOTEMPTY, specifically
on Windows.
https://github.com/isaacs/rimraf/commits/master
This commit, included in 2.6.1 takes a relatively aggressive approach:
d53235de86
However, due to the way the Windows filesystem is designed, this
approach may be the only way of coping with file-handles which are
cached by the OS and not released immediately upon closing a file
(in other words, at a time that Meteor would think it'd be safe to
remove the file/directory).
Attempts to help with meteor/meteor#8485.
This fixes a bug affecting namespace imports/exports such as
export * from "module"
import * as ns from "module"
where "module" is a CommonJS module that sets module.exports to an
object-like value that is not actually an object, e.g. a function.
The reify commit that fixed this bug includes a test demonstrating an
example of one such library (lodash):
benjamn/reify@b69a600e65
This is a change that was necessary on the wip-upgrade-to-node-6 branch,
and it seems better to ship it sooner rather than waiting:
meteor/meteor@d823812e85
The `winston` npm package is not an ECMAScript module, but it does export
a "default" property, and this property was accidentally clobbering the
"default" property of the namespace object, thus interfering with default
import syntax:
import winston from "winston"
Specifically, the `winston` variable would end up referring to
`require("winston").default`, rather than `require("winston")`.
Nothing is lost by fixing this problem, as you can still refer to
`winston.default` if you need to access that property.
Reported by @fermuch here:
https://github.com/meteor/meteor/pull/8327#issuecomment-304721401
Fixed by this commit:
20fdd10d04
Something went wrong with 1.5-rc.2 such that publishing meteor-tool failed
with the following error on all platforms:
While publishing package build for meteor-tool:
error: Cannot override existing build
This makes no sense to me, but it necessitates another RC release. To be
clear, meteor-tool@1.5.0-rc.2 has not been successfully published on any
platform, so please don't bother trying to update to it.