Commit Graph

5941 Commits

Author SHA1 Message Date
Ben Newman
9304f76b52 Fix tests by avoiding printing inotify warning when Console.isHeadless(). 2016-09-27 11:09:46 -04:00
Ben Newman
b976cfa552 Fix reference error for file variable in tools/isobuild/compiler.js. 2016-09-27 11:03:28 -04:00
Ben Newman
0d3466b882 Be more defensive when terminating watchers. 2016-09-27 10:41:40 -04:00
Ben Newman
ea92d83744 Don't cache exceptions in optimistic functions.
I originally added the exception-caching functionality in order to avoid
calling files.stat repeatedly for files known to be missing, but now that
we're using statOrNull, knowledge of missing files (as indicated by
statOrNull returning null) is being properly cached.

The reason it's dangerous to cache exceptions is that (for example) when
an ENOENT exception indicates the file is missing, there will be no more
change events for that file, effectively making the exception permanent,
even if the file comes to exist at a later time.
2016-09-27 10:13:19 -04:00
Jesse Rosenberger
1c42e0fe22 Await Promise when running npm install (#7805)
I believe this is the fix for the (recent) CI server timeouts.
2016-09-26 20:12:46 -04:00
Ben Newman
c6b2a2f95e Use optimistic functions in meteorNpm.getProdPackageNames. 2016-09-26 20:12:46 -04:00
Ben Newman
8e57ecb731 Use optimistic functions in Builder#copyDirectory. 2016-09-26 20:12:46 -04:00
Ben Newman
c7b8b72e77 Never yield in files.symlink. 2016-09-26 20:04:30 -04:00
Ben Newman
5af59c58bc Always use rimraf.sync in files.rm_recursive. 2016-09-26 20:04:30 -04:00
Ben Newman
50a1f11a10 Use optimistic functions in compileUnibuild. 2016-09-26 20:04:29 -04:00
Ben Newman
978df6e043 Use optimistic functions in meteorNpm.isPortable. 2016-09-26 20:04:29 -04:00
Ben Newman
d954415752 Add profiling to PathWatcher watch function. 2016-09-26 20:04:29 -04:00
Ben Newman
83e7b38779 Break circular dependency between {files,watch,optimistic}.js. 2016-09-26 20:04:28 -04:00
Ben Newman
033a935a89 Use optimistic functions to speed up IO-bound bottlenecks. 2016-09-26 20:04:28 -04:00
Ben Newman
6b320bd64b Avoid starting optimistic watchers for node_modules files.
I've also moved both try-catch blocks out of the optimistic wrapper
function in an effort to help V8 optimize the optimistic functions.
2016-09-26 20:04:28 -04:00
Ben Newman
ae7bd2e5af Ignore meaningless initial fs.watchFile callback.
As a reminder, we use fs.watchFile only as a fallback in environments
where pathwatcher.watch is not available, such as on network or virtual
file systems.
2016-09-26 19:59:40 -04:00
Ben Newman
37647c8657 Implement optimistic versions of heavily used files.* methods. 2016-09-26 18:29:08 -04:00
Ben Newman
26597c4fbb Simplify rehashing in safe-pathwatcher.js. 2016-09-26 15:58:13 -04:00
Ben Newman
9810562403 Test that one package can have both node_modules and Npm.depends. 2016-09-22 14:34:32 -04:00
Ben Newman
da5f6956aa Merge branch 'devel' into release-1.4.2 2016-09-22 14:32:07 -04:00
Ben Newman
03c5346873 Stop building meteorInstall bundle for server node_modules.
This saves a potentially large amount of work by the ImportScanner and the
Resolver during makeServerTarget, because it means we no longer have to
scan and resolve modules to build a server bundle as a backup for native
Node evaluation.

I've attempted this optimization before, but it wasn't really safe until
I fixed some obscure bugs that caused module.useNode() to fail during
`meteor test-packages` (see recent local-test:-related commits).
2016-09-22 14:27:32 -04:00
Ben Newman
726074689e Don't prepend node_modules/meteor/<package>/ for npm/... directories. 2016-09-22 14:27:31 -04:00
Ben Newman
bbac272530 Prefer node_modules directories from non-test packages. 2016-09-22 14:27:31 -04:00
Ben Newman
7401bad8e3 Tolerate multiple node_modules directories per package.
Revert "Write node_modules metadata as single strings."
This reverts commit f74975d0df.

Packages published with multiple node_modules directories won't be
loadable by versions of Meteor before 1.3, because older versions of
Meteor don't understand object-valued isopack "node_modules" fields, but
the vast majority of Meteor developers are now using either 1.3 or 1.4.
2016-09-22 13:06:03 -04:00
Ben Newman
3313180a6f Always use dev_bundle/.npm as the cache for meteor npm ... commands.
I believe a strange interaction with the global cache (~/.npm on Unix
systems) may have been the root cause of the problem fixed by this commit:
https://github.com/meteor/meteor/pull/7668/commits/ad61a935146c34e7
2016-09-21 18:53:33 -04:00
Jesse Rosenberger
7097f78926 Add support for --no-release-check to meteor test command
This functionality for the `test` command was overlooked when meteor/meteor#7445 was implemented.

Closes meteor/meteor#7026
2016-09-21 15:59:47 +03:00
Ben Newman
1b25050aa8 Delay disposing of file watchers, in case acquireWatcher called again.
Typically all outstanding watchers will be closed when the development
server restarts, but we can save a lot of effort if they survive the
restart, for the small cost of keeping them open for an extra 30sec.
2016-09-15 19:44:00 -04:00
Ben Newman
d5f239e455 Use global file watching oracle to compute file hashes cheaply.
For the galaxy-server application, this reduces the time spent in
watch.isUpToDate from six seconds to a little over second. Of course we
should also try to call it less often, but making it cheaper helps!
2016-09-15 19:42:55 -04:00
Ben Newman
219b18168d Establish a global source of truth for file watching events.
This should not only reduce the total resource usage of the file watching
system, but pave the way for a faster implementation of watch.isUpToDate.
2016-09-15 19:34:57 -04:00
Ben Newman
d618cc61a3 Optimize meteorNpm.getProdPackageNames by not calling runNpmCommand.
For the galaxy-server application, this reduces the time taken to
determine production node_modules from 1400ms to 120ms.

As another optimization, we could record the hashes of all the
package.json files encountered in this scan, and return the same set of
production package names if those hashes have not changed, though the
benefits may not be worth the additional complexity.
2016-09-15 16:20:47 -04:00
Ben Newman
1850105f90 Refactor production node_modules filtering. 2016-09-15 16:15:04 -04:00
Ben Newman
3557d31347 Give POSIX paths without drive letters to glob on Windows. 2016-09-13 15:23:11 -04:00
Ben Newman
a6b42cc418 Make includeNonCore true by default in getAllNonTestPackageNames. 2016-09-13 13:58:43 -04:00
Ben Newman
4abaa5eb20 Exclude non-core packages from localCatalog.getAllNonTestPackageNames.
This should prevent `meteor admin publish-release` from unnecessarily
checking the consistency of non-core packages.
2016-09-13 13:09:05 -04:00
Ben Newman
1d6fb36547 Include packages/non-core/*/packages/ in self-test search. 2016-09-09 17:30:54 -04:00
Ben Newman
17f79c66ce Search packages/non-core/*/packages for local packages.
Currently this finds only Blaze-related packages, but it does so without
hard-coding "blaze" in tools code.
2016-09-09 13:28:16 -04:00
Ben Newman
3fce5e6f93 Accept glob patterns for local package search directories. 2016-09-09 13:28:16 -04:00
Ben Newman
c6a54546c2 Avoid hard-coding packages/non-core/blaze in tools code.
Now that the blaze submodule is mounted inside the packages/non-core/
directory, it appears that we no longer have to mention it explicitly in
the localPackageSearchDirs array.
2016-09-09 12:12:43 -04:00
Ben Newman
9001b75f44 Move packages-for-isopackets/blaze to packages/non-core/blaze. 2016-09-09 11:17:43 -04:00
Ben Newman
b64f1147e7 Merge branch 'devel' into release-1.4.2 2016-09-08 13:31:17 -04:00
Tom Coleman
74cf7b3b6e Not sure why these weird version numbers were in there
Previously didn't cause a problem because `static-html` was a core pkg
2016-08-29 11:38:45 +10:00
Tom Coleman
edf40c430b Use isopacket packages for self-test also 2016-08-25 13:24:40 +10:00
Tom Coleman
f01653e690 Use submodules for isopacket loading 2016-08-25 12:23:33 +10:00
Tom Coleman
f69f6c091a Added a minimum version for blaze to the skel 2016-08-25 12:23:33 +10:00
Ben Newman
b34a796600 Merge branch 'devel' into release-1.4.2 2016-08-24 11:06:22 -04:00
Ben Newman
d5c83aaf8f Don't try to use native tar command on Windows.
Fixes #7689.
2016-08-22 16:52:03 -04:00
Ben Newman
88db65c837 Update modules test app to Meteor 1.4.1. 2016-08-18 17:31:21 -04:00
Ben Newman
b552011180 Revert "Fix #7491 by wrapping child process in script on OSX"
This reverts commit 98aaaed084.

This change is no longer necessary with Node 4.5.0, which was included
with Meteor 1.4.1.
2016-08-18 17:13:48 -04:00
Ben Newman
4618b3d8de Remove --no-bin-links flag from default npm rebuild arguments.
After recent discussion on https://github.com/meteor/meteor/issues/7401,
@glasser and I think the relatively obscure benefit of --no-bin-links is
outweighed by the problems it causes for packages whose rebuild scripts
need executable scripts installed in the node_modules/.bin/ directory.
2016-08-18 16:39:52 -04:00
Ben Newman
4c1fe8ff22 Convert options.npmDir only if it's a string. 2016-08-17 18:18:07 -04:00