There were two separate issues here:
- npm-shrinkwrap.json wasn't actually being used as part of the
watchset/buildinfo, so changes to it might not cause the package to
be considered for rebuilding
- meteor-npm only compared top-level changes when deciding whether to
update, not all changes
Fixes#1648
stat fails if a symlink points to something nonexistent. since we're
literally looking for stuff physically under a directory, we don't need
to chase symlinks.
This is useful when the output tarball would just be unpacked immediately
anyway, e.g. because it is part of a larger build process. This shaves
eight seconds off my build. :)
This reverts commit 32fc06e7f8.
As Glasser points out, our command option parsing is such that all `-a`
flags for commands have to be consistent in whether they are boolean or
not. Since we could easily imagine wanting a boolean `-a` or `-r` flag
in the future, we should be careful about adding these aliases. We'll
update the docs to remove `-a` and `-r` instead.
They are not safe for spaces in paths. There might be other places to look for trouble.
I've run the following command to produce this commit: (on OS X, copy-and-pasting the below exactly)
find . -type f -name '*.sh' -print0 | # Find all .sh files
xargs -0 fgrep -H -- '`' | # See all places with backticks in them
fgrep 'cd `dirname $0' | # I deemed these problematic (variable assignments are safe)
cut -d ':' -f 1 | # Take the <file> from <file>:<line> produced by "grep -H"
tr '\n' '\0' | # Also here, spaces can be problematic - always do "xargs -0"!
xargs -0 -- sed -i '' 's/cd `dirname $0`/cd "`dirname "$0"`"/g'
The significance of adding the two levels of "'s can be verified by running the following in your Terminal:
$ node -e 'console.log(process.argv.splice(1))' -- `echo 1 2`
[ '1', '2' ]
$ node -e 'console.log(process.argv.splice(1))' -- "`echo 1 2`"
[ '1 2' ]
$ node -e 'console.log(process.argv.splice(1))' -- "`echo "1 2"`"
[ '1 2' ]
The linux tar whinges about unrecognised headers (though newer versions
include an option to not warn).
By building tar files without proprietary, we will be able to use
files.createTarball() in more places.
For example, undo commits 1c36bbaa79 and
1e2a40ef2b
This is only intended for testing. No data is preserved from one run to
the next, and if any mongod exits for any reason, the rest are killed;
there is no mongod restarting.
It takes a while (~20 seconds) to start up because it waits for the
replset to be ready.
Before this, if the runner decided to stop (eg, because mongod is
crashing too much) while waiting for file change, it would crash due to
an attempt to wait within a fiber. Fixing that bug by adding an inFiber
would then lead to the process just not exiting, because nothing stops
the wait-specific future.
Doing so reveals a deadlock in the stop code (which causes self-test to
fail, yay). Fix it by trying harder to not stop the (all or app) runner
until after the app runner has processed the "hey you should stop"
return false from onRunEnd.
Now any plugin can request that its files be treated as "templates" by
setting an isTemplate flag.
(This API is just as supported as you'd expect based on the fact that
you still can't access it without calling a function which starts with
"_transitional_".)
Tested by renaming leaderboard.js to a.js and confirming that it still
works (and that it *doesn't* if templating does not set isTemplate).
If you happen to introduce a circular require into the stack, this
object will be undefined.
Instead, hang on to `require('./run-log.js')`, which is the exports
module which does get filled in later.
Use heartbeatInterval: 0 to disable heartbeats for testing.
No need to add `_internal` to the public connection API because we
can get to the internal session through the server.
This breaks a strong dependency between the webapp package and the
bundler. Now we can change the standard page format, add more hooks,
etc without changing the tools (and hot code push works properly).
This is an incompatible change to the definition of the
browser-program-pre1 format: it no longer contains a "page" field
pointing to a boilerplate defined using ad hoc ##FOO##
substitution. Instead, the manifest can contain "head" and "body"
entries for data added with compileStep.appendDocument(). (Note that in
Blaze, <body> in a template file no longer calls appendDocument.)
WebApp.addHtmlAttributeHook callbacks now return attribute objects (like
those that Spacebars supports) rather than strings.