These packages need to be installed when we run `npm install` in
`bundle/programs/server` (which this commit ensures), but they don't need
to be part of the dev bundle.
Breaking on the first statement in the program used to be the only way to
get the debugger to stop at any breakpoints, but more recent versions of
node-inspector (compatible with Node 4) do a much better job of stopping
at breakpoints after the program starts.
* Include process.{platform,arch} in .meteor-last-rebuild-version.json.
This supports rebuilding binary npm packages published by completely
different architectures, not just different versions of Node.
* Make publish-for-arch unnecessary in most cases.
* Don't rebuild binary packages when Node patch version changes.
* Permit patch-compatible versions in .meteor-last-rebuild-version.json.
This is a more general solution than simply discarding the patch version
for currentVersions.versions.node, as I did in a previous commit.
This will make it much easier to fix bugs and make improvements going
forward, since they won't have to wait for the next release of Meteor.
One functional change: when the parent process exits, it no longer forces
all connected shell clients to disconnect, which is actually a more
convenient behavior, because it gives the clients a chance to reconnect
when/if the server starts up again, and it's easy enough to kill the
clients if that's what you want.
According to the README, this implementation is approximately 2.7 times
slower than native: https://www.npmjs.com/package/bcryptjs
Apps that wish to continue using the native bcrypt package should run
`meteor npm install --save bcrypt` in the root application directory, and
the npm-bcrypt package will prefer that implementation.
The previous code did not accommodate the possibility that
`meteorNpm.getProdPackageNames` might return a package name that contained
one or more `/` characters.
Fixes#7579.
The node-gyp tool uses `process.env.HOME || process.env.USERPROFILE` to
determine where it should install the .node-gyp directory containing Node
headers and libraries, and we now preinstall that directory at
dev_bundle/.node-gyp/, so (with this change) no download should be
necessary.
There is unfortunately no way to access the special Recoverable
constructor defined in node/lib/repl.js unless we temporarily use the
defaultEval function, trigger a recoverable error, and capture its
.constructor property. Fortunately we are that clever.
Fixes#7504.
The logic at the top of this function was basically just for the case of
"file is in imports but also a test file". But the logic caught up some
other edge cases, such as "file is in node_modules but also a test file".
After running `meteor build` in created archive `Readme` file with next content:
```text
This is a Meteor application bundle. It has only one external dependency:
Node.js 0.10.40 or newer. To run the application:
$ (cd programs/server && npm install)
$ export MONGO_URL='mongodb://user:password@host:port/databasename'
$ export ROOT_URL='http://example.com'
$ export MAIL_URL='smtp://user:password@mailhost:port/'
$ node main.js
Use the PORT environment variable to set the port where the
application will listen. The default is 80, but that will require
root on most systems.
Find out more about Meteor at meteor.com.
```
Since Meteor@1.4 requires nodejs@4.4.7 and fails on nodejs@0.10.*, generated `Readme` must be updated
This reverts commit 9e6ebde836.
Now that the `dev_bundle` link is called `.meteor/local/dev_bundle`, and
`.meteor/local` is already ignored, we don't need to ignore
`.meteor/dev_bundle` anymore.