Nico Weber [Tue, 11 Feb 2014 20:19:01 +0000 (12:19 -0800)]
Allocate per-edge BindingEnvs lazily.
In chrome, only 2000 of 22000 build edges have bindings. A BindingEnv is
64 bytes, so allocating these only when needed saves a bit over 1 MB of
memory. Since env chains are shorter for lookups, builds also become a
tiny bit faster.
Evan Martin [Thu, 23 Jan 2014 16:29:38 +0000 (08:29 -0800)]
Merge pull request #710 from purcell/patch-1
ninja-mode: add autoload cookie for the mode itself
Steve Purcell [Wed, 22 Jan 2014 12:01:16 +0000 (12:01 +0000)]
ninja-mode: add autoload cookie for the mode itself
Evan Martin [Tue, 21 Jan 2014 18:57:29 +0000 (10:57 -0800)]
Merge branch 'fix-provide-form' of git://github.com/yasuyk/ninja
Conflicts:
misc/ninja-mode.el
Evan Martin [Tue, 21 Jan 2014 18:56:43 +0000 (10:56 -0800)]
Merge branch 'fix-warning' of git://github.com/yasuyk/ninja
Conflicts:
misc/ninja-mode.el
Evan Martin [Tue, 21 Jan 2014 16:40:26 +0000 (08:40 -0800)]
Merge pull request #705 from yasuyk/elpa
emacs: ELPA compatibility
Yasuyuki Oka [Tue, 21 Jan 2014 13:33:35 +0000 (22:33 +0900)]
emacs: Place provide form at end of file
Any errors in the code after "provide" will leave the feature
registered, so it should always be at the end.
Yasuyuki Oka [Tue, 21 Jan 2014 13:29:41 +0000 (22:29 +0900)]
emacs: Fix a warning
Fix a following byte-compile warning:
ninja-mode.el:18:7:Warning: assignment to free variable `ninja-keywords'
Yasuyuki Oka [Tue, 21 Jan 2014 13:19:19 +0000 (22:19 +0900)]
emacs: ELPA compatibility
Nico Weber [Thu, 9 Jan 2014 08:27:35 +0000 (00:27 -0800)]
Merge pull request #702 from nickhutchinson/feature/win32-escaping-fix
Don’t unnecessarily escape backslashes in Win32 paths
Nico Weber [Thu, 9 Jan 2014 03:54:01 +0000 (19:54 -0800)]
Merge pull request #701 from nickhutchinson/feature/msvc-gtest-cflags
configure.py: use /FS flag under vs2013 when compiling gtest
Nicholas Hutchinson [Thu, 9 Jan 2014 02:35:36 +0000 (15:35 +1300)]
configure.py: use /FS flag under vs2013 when compiling gtest
Nicholas Hutchinson [Wed, 8 Jan 2014 20:38:20 +0000 (09:38 +1300)]
Don’t unnecessarily escape backslashes in Win32 paths
Under ::CommandLineToArgvW() rules, the backslash character only gets special treatment if it’s immediately followed by a double quote. So, when checking to see if a string needs Win32 escaping, it’s sufficient to check for the presence of a double quote character. This allows paths like "foo\bar" to be recognised as “sensible” paths, which don’t require the full escaping.
Nico Weber [Tue, 7 Jan 2014 00:17:14 +0000 (16:17 -0800)]
Merge pull request #697 from nico/gclogs
Remove old outputs from build log and deps log during recompaction.
Nico Weber [Tue, 7 Jan 2014 00:15:23 +0000 (16:15 -0800)]
Make BuildLogUser reference constant.
Nico Weber [Mon, 6 Jan 2014 23:57:33 +0000 (15:57 -0800)]
Merge pull request #690 from nickhutchinson/feature/escape-paths-properly
More robust escaping of $in, $out paths
Nicholas Hutchinson [Sat, 30 Nov 2013 22:33:02 +0000 (22:33 +0000)]
More robust escaping of $in, $out paths
In summary: don’t escape if the path doesn’t contain problematic characters, otherwise:
- Shell: enclose string in single quotes, escape embedded single quotes with the magic quote-backslash-quote sequence
- Win32: Escape double quotes by doubling the number of consecutive backslashes that precede them (if any) and adding one more. Finally, double the number of trailing backslashes, and enclose the whole thing in double quotes.
Nico Weber [Sat, 4 Jan 2014 05:32:41 +0000 (21:32 -0800)]
Add a comment.
Nico Weber [Sat, 4 Jan 2014 05:26:50 +0000 (21:26 -0800)]
Rename "IsDead" to "BuildLogUser".
Nico Weber [Sat, 4 Jan 2014 05:12:31 +0000 (21:12 -0800)]
Move duplicated code into a helper function.
Nico Weber [Sat, 4 Jan 2014 04:43:42 +0000 (20:43 -0800)]
Add a test for collection of dead log entries.
Nico Weber [Fri, 3 Jan 2014 05:16:38 +0000 (21:16 -0800)]
Add a test for collection of dead deps entries.
Nico Weber [Thu, 2 Jan 2014 05:37:47 +0000 (21:37 -0800)]
Fix DepsLogTest.Recompact by making sure outputs aren't garbag-collected.
Nico Weber [Thu, 2 Jan 2014 04:46:18 +0000 (20:46 -0800)]
Make tests compile (one fails atm).
Nico Weber [Thu, 2 Jan 2014 04:31:34 +0000 (20:31 -0800)]
Remove dead entries in .ninja_log and .ninja_deps while recompacting.
For .ninja_deps, remove objects that have no in-edges or whose in-edges
do not have a "deps" attribute. (This matches the behaviour of `-t
deps`).
BuildLog doesn't know about state, so let its recompact method take
delegate that decides is a path is life or not, and implement it in
NinjaMain.
Nico Weber [Fri, 13 Dec 2013 21:02:40 +0000 (13:02 -0800)]
Merge pull request #695 from nico/norange
Fix additional range in character class.
Nico Weber [Fri, 13 Dec 2013 21:01:02 +0000 (13:01 -0800)]
Fix additional range in character class.
The range was added in
7ab6dcbdb6447861eefafc47fc3e10f3273cede2, but that
change only tried to add ! to the character class. Fix by moving '-' to the end
of the class.
Fixes #694.
Nico Weber [Fri, 6 Dec 2013 00:10:29 +0000 (16:10 -0800)]
Merge pull request #691 from TheOneRing/fix-msvc13
fixed platform_helper.py msvc_needs_fs test for python 3
Patrick von Reth [Thu, 5 Dec 2013 09:37:52 +0000 (10:37 +0100)]
fixed platform_helper.py msvc_needs_fs test
Nico Weber [Mon, 18 Nov 2013 10:00:36 +0000 (02:00 -0800)]
Merge pull request #688 from ndmitchell/master
Fix up platform_helper for MSVC
Neil Mitchell [Mon, 18 Nov 2013 06:32:32 +0000 (06:32 +0000)]
Fix up platform_helper for MSVC, with Python 2.6.8 the arguments have to be in a list, not space separated (unless you set Shell to true)
Evan Martin [Mon, 28 Oct 2013 17:21:12 +0000 (10:21 -0700)]
Merge pull request #683 from nico/ruletest
Add a test that shows that there is a single global namespace for rules.
Nico Weber [Sun, 27 Oct 2013 19:38:34 +0000 (12:38 -0700)]
Add a test that shows that there is a single global namespace for rules.
Nico Weber [Sun, 27 Oct 2013 03:16:07 +0000 (20:16 -0700)]
Merge pull request #682 from nico/pep8
Wrap to 79 colums. No functionality change.
Nico Weber [Sun, 27 Oct 2013 03:15:23 +0000 (20:15 -0700)]
Wrap to 79 colums. No functionality change.
Nico Weber [Sat, 19 Oct 2013 18:03:51 +0000 (11:03 -0700)]
Merge pull request #674 from nico/style
Minor style fixes. No functionality change.
Nico Weber [Sat, 19 Oct 2013 18:03:15 +0000 (11:03 -0700)]
Minor style fixes. No functionality change.
Nico Weber [Fri, 18 Oct 2013 23:43:05 +0000 (16:43 -0700)]
Merge pull request #665 from syntheticpp/localized-showinclude
add deps_prefix for localized /showIncludes' output parsing
Peter Kümmel [Sun, 13 Oct 2013 10:20:17 +0000 (12:20 +0200)]
add deps_prefix for localized /showIncludes' output parsing
Nico Weber [Fri, 18 Oct 2013 04:16:13 +0000 (21:16 -0700)]
Merge pull request #671 from sgraham/compile-vs2013
Fix compilation on VS2013
Scott Graham [Fri, 18 Oct 2013 04:12:11 +0000 (21:12 -0700)]
Fix compilation on VS2013
Evan Martin [Thu, 12 Sep 2013 02:05:21 +0000 (19:05 -0700)]
mark this 1.4.0.git, update RELEASING
Nico Weber [Wed, 11 Sep 2013 21:50:04 +0000 (14:50 -0700)]
Merge pull request #657 from sgraham/keeprsp2
add -d keeprsp to preserve @rsp files on success on windows
Scott Graham [Tue, 10 Sep 2013 22:34:01 +0000 (15:34 -0700)]
add -d keeprsp to preserve @rsp files on success on windows
Nico Weber [Sun, 8 Sep 2013 02:16:49 +0000 (19:16 -0700)]
Merge pull request #655 from nico/simp
Simplify.
Nico Weber [Sun, 8 Sep 2013 02:16:21 +0000 (19:16 -0700)]
Simplify.
Nico Weber [Sun, 8 Sep 2013 02:14:17 +0000 (19:14 -0700)]
Merge pull request #654 from rgeary1/buildTestFix
Fix for build test for BuildWithDepsLogTest.RestatMissingDepfileDepslog
Richard Geary [Sat, 7 Sep 2013 14:03:00 +0000 (10:03 -0400)]
Fix for build test for BuildWithDepsLogTest.RestatMissingDepfileDepslog
Nico Weber [Fri, 6 Sep 2013 21:37:33 +0000 (14:37 -0700)]
Merge pull request #653 from nico/msg
Make depslog v1->v3 message less scary.
Nico Weber [Fri, 6 Sep 2013 21:29:32 +0000 (14:29 -0700)]
Make depslog v1->v3 message less scary.
See the comment 5 lines up for details.
Nico Weber [Mon, 2 Sep 2013 23:10:59 +0000 (16:10 -0700)]
Merge pull request #650 from nico/simplify
Simplify.
Nico Weber [Mon, 2 Sep 2013 23:09:00 +0000 (16:09 -0700)]
Simplify.
Nico Weber [Mon, 2 Sep 2013 23:02:44 +0000 (16:02 -0700)]
Merge pull request #649 from nico/fff
Delete a line I failed to delete in
d7a46654a7be1.
Nico Weber [Mon, 2 Sep 2013 23:01:46 +0000 (16:01 -0700)]
Delete a line I failed to delete in
d7a46654a7be1.
Nico Weber [Mon, 2 Sep 2013 22:52:21 +0000 (15:52 -0700)]
Merge pull request #648 from nico/landmaxim
Land the majority of pull request #608.
Maxim Kalaev [Mon, 2 Sep 2013 22:44:32 +0000 (15:44 -0700)]
Fix restat rebuild if deps are missing.
Fixes issue #603.
Apparently, the problem was caused by my fix r "consider target dirty if
depfile is missing" (bcc8ad1), which was not working correctly with
restat rules cleaning nodes. Switching to deps only triggered an easily
observable issue.
Fix by setting a flag in edges with invalid deps, and not cleaning edges
with that flag set.
Maxim Kalaev [Mon, 2 Sep 2013 22:32:19 +0000 (15:32 -0700)]
Share more code between CleanNode() and RecomputeDirty().
Move a common loop into the new function RecomputeOutputsDirty().
Simplifies things a bit, and makes it harder for the restat path to have
different behavior from the regular path.
No dramatic behavior change (the restat path now also calls
RestatIfNecessary()).
Maxim Kalaev [Mon, 2 Sep 2013 22:24:26 +0000 (15:24 -0700)]
Check depslog timestamp in LoadDepsFromLog(), not in RecomputeOutputDirty().
RecomputeOutputDirty() is called from two places:
1. RecomputeDirty(), which calls LoadDeps().
2. CleanNode(), which always passes 0 for the deps mtime.
So this is no behavior change in either case.
deps_mtime was nonzero only in deps mode, and it got passed all over the
place. This makes things simpler.
Evan Martin [Mon, 2 Sep 2013 19:12:23 +0000 (12:12 -0700)]
Merge pull request #647 from bmeurer/SimplifyGetProcessorCount
Simplify implementation of GetProcessorCount().
Benedikt Meurer [Sun, 1 Sep 2013 09:12:23 +0000 (11:12 +0200)]
Simplify implementation of GetProcessorCount().
The current implementation is unnecessarily complex, because:
- The BSD derived systems implement sysconf(_SC_NPROCESSORS_ONLN)
in terms of sysctl({CTL_HW,HW_NCPU}).
- get_nprocs() is a GNU extension, and glibc implements
sysconf(_SC_NPROCESSORS_ONLN) in terms of get_nprocs().
Nico Weber [Wed, 28 Aug 2013 22:03:10 +0000 (15:03 -0700)]
Merge pull request #645 from nico/maximfix
Fix an issue with more than 64k deps, spotted by maximuska.
Nico Weber [Wed, 28 Aug 2013 22:00:05 +0000 (15:00 -0700)]
Fix an issue with more than 64k deps, spotted by maximuska.
Also add a test for this case, which would have spotted the issue too.
Nico Weber [Wed, 28 Aug 2013 21:05:04 +0000 (14:05 -0700)]
Merge pull request #644 from nico/v3
Deps log format v3
Nico Weber [Wed, 28 Aug 2013 21:03:53 +0000 (14:03 -0700)]
document an assumption
Nico Weber [Wed, 28 Aug 2013 20:29:02 +0000 (13:29 -0700)]
Deps log format v3
This fixes two bugs.
1.) It makes the record size field 4 byte instead of 2, and allows a max
record size of 512kB. This fixes #605, ninja "only" supporting 8k
dependencies per file -- 512kB have room for 128k dependencies. (If that's
still not enough, the current design can support at least 4x that if the
constant is tweaked.)
2.) It makes all records 4-byte aligned, which is probably needed to make the
`reinterpret_cast<int*>(buf)` work on SPARC (cf issue #481), and it's
generally nicer too. (Since there's already one reinterpret_cast, convert
a memcpy() to reinterpret_cast in another branch too).
Nico Weber [Mon, 26 Aug 2013 23:10:24 +0000 (16:10 -0700)]
Merge pull request #642 from nico/depslogidx
Suffix depslog path records with their expected index.
Nico Weber [Mon, 26 Aug 2013 22:19:21 +0000 (15:19 -0700)]
Suffix depslog path records with their expected index.
ninja assumes that numbering path entries in the deps log in order produces
valid dense integer ids. If two ninja processes write to the same deps log
concurrently, this is not true. Store the expected indices of path records
in the log and treat the rest of a deps log as invalid if the dense id of a
path record doesn't match the expected id stored in the log. Addresses the
rest of issue #595.
This requires bumping the deps log file format version. Do not migrate the
old version to the new, as the old format did not have this protection, and
might hence contain invalid data. (Unlikely, but possible.)
Also store the record id as one's complement, to make them look less like
regular deps record values. Since each record is written atomically this
isn't really necessary, but it makes the format somewhat more robust (and
easier to read in a hex editor).
Nico Weber [Fri, 23 Aug 2013 19:22:08 +0000 (12:22 -0700)]
Merge pull request #641 from nico/ocd2
Minor style fixes, no behavior change.
Nico Weber [Fri, 23 Aug 2013 19:20:55 +0000 (15:20 -0400)]
Minor style fixes, no behavior change.
Nico Weber [Fri, 23 Aug 2013 13:59:05 +0000 (06:59 -0700)]
Merge pull request #628 from rnk/wstr
Use fwrite in the msvc tool instead of printf
Nico Weber [Thu, 22 Aug 2013 23:27:29 +0000 (16:27 -0700)]
Merge pull request #640 from nico/edgetest
Add a test for issue #638.
Nico Weber [Thu, 22 Aug 2013 23:24:04 +0000 (19:24 -0400)]
Add a test for issue #638.
Nico Weber [Thu, 22 Aug 2013 23:16:23 +0000 (16:16 -0700)]
Merge pull request #639 from rgeary1/StatusMessageFix
Fix for #638 incorrect number of total edges in the status message
Richard Geary [Thu, 22 Aug 2013 22:08:12 +0000 (18:08 -0400)]
Fix for incorrect number of total edges in the status message
Reid Kleckner [Mon, 19 Aug 2013 23:44:30 +0000 (16:44 -0700)]
Merge branch 'master' into wstr
Reid Kleckner [Mon, 19 Aug 2013 23:44:16 +0000 (16:44 -0700)]
Avoid indexing into an empty string.
Nico Weber [Tue, 13 Aug 2013 22:49:38 +0000 (15:49 -0700)]
Merge pull request #635 from johan/patch-1
Proof reading
Johan Sundström [Tue, 13 Aug 2013 01:47:06 +0000 (18:47 -0700)]
Proof reading
Evan Martin [Sun, 11 Aug 2013 17:02:06 +0000 (10:02 -0700)]
Merge pull request #633 from rgeary1/NestedPhonyPrintsDone
Fix : Pure nested phony rules do not print "no work to do"
Richard Geary [Sun, 11 Aug 2013 00:14:49 +0000 (20:14 -0400)]
Fix for missing "no work to do." message if all build edges are phony rules.
Added NestedPhonyPrintsDone unit test
Richard Geary [Sun, 11 Aug 2013 00:13:41 +0000 (20:13 -0400)]
Add to .gitignore : SublimeText project files, *.patch files, ..ninja_deps, .ninja_log
Evan Martin [Wed, 7 Aug 2013 16:19:47 +0000 (09:19 -0700)]
Merge pull request #631 from kimgr/master
Fix tabs/spaces inconsistency.
Kim Grasman [Mon, 5 Aug 2013 15:52:51 +0000 (17:52 +0200)]
Fix tabs/spaces inconsistency.
Evan Martin [Fri, 26 Jul 2013 22:32:39 +0000 (15:32 -0700)]
Merge pull request #627 from idealisms/master
Fix the browse tool.
Reid Kleckner [Fri, 26 Jul 2013 22:27:30 +0000 (15:27 -0700)]
Use fwrite in the msvc tool instead of printf
This allows wide characters from the compiler to propagate through the
msvc tool. Similar to
ad76e867f782e75e0fed620e7b39f7099af154a9.
Tony Chang [Fri, 26 Jul 2013 21:24:52 +0000 (14:24 -0700)]
Fix the browse tool.
ReadFlags was altering argv in real_main causing us
to pass the wrong value into the NinjaMain constructor.
Fix this by storing the ninja command before real_main
runs.
Evan Martin [Wed, 24 Jul 2013 22:38:12 +0000 (15:38 -0700)]
Merge pull request #626 from nico/logwrite
Build log write error checking.
Nico Weber [Wed, 24 Jul 2013 21:07:12 +0000 (14:07 -0700)]
Build log write error checking.
Like
f6f00aa40f0c541df06, but for the build log instead of the deps log.
Nico Weber [Wed, 24 Jul 2013 20:30:29 +0000 (13:30 -0700)]
Merge pull request #612 from maximuska/proposed/deps_log_write_errors_checking
Proposed/deps log write errors checking
Nico Weber [Sat, 20 Jul 2013 19:14:07 +0000 (12:14 -0700)]
Merge pull request #625 from nico/land
Merge pull request #617.
Chris Hopman [Tue, 16 Jul 2013 23:00:28 +0000 (16:00 -0700)]
Add test for correct restat logic
When a single output of an edge is dirty, the restat check should
leave all outputs of that edge dirty.
Chris Hopman [Wed, 3 Jul 2013 21:26:25 +0000 (14:26 -0700)]
Fix restat dirty check logic for edges with multiple outputs
In a normal dependency scan (see DependencyScan::RecomputeDirty) we mark
all outputs of an Edge as dirty if any of the outputs is dirty. This is
the correct behavior because if any output is dirty, we will run the
command for that Edge and that can touch any of the outputs of the Edge
and so all the outputs should be marked dirty.
When updating the dirty state of Node's for a restat check, we were not
applying this logic, instead only those outputs that were actually
"dirty" were marked dirty.
Before this patch, restat edges with multiple outputs caused not all
dependent edges to run.
Nico Weber [Sat, 20 Jul 2013 04:47:00 +0000 (21:47 -0700)]
Merge pull request #624 from nico/landmaxim
Land the first two commits of pull request #608.
Maxim Kalaev [Fri, 28 Jun 2013 17:48:30 +0000 (20:48 +0300)]
minor: removing noop call to MarkDirty(), fixing comment
Maxim Kalaev [Thu, 27 Jun 2013 18:55:38 +0000 (21:55 +0300)]
Removing a redundant stat() call with 'deps' and 'restat = 1'
Nico Weber [Fri, 19 Jul 2013 00:54:33 +0000 (17:54 -0700)]
Merge pull request #623 from nico/fix
Fix diagnostic formatting regression caused by
adaa91a33eb2cf23b88.
Nico Weber [Fri, 19 Jul 2013 00:51:10 +0000 (17:51 -0700)]
Fix diagnostic formatting regression caused by
adaa91a33eb2cf23b88.
Ninja regressed to include a location for every file on the include stack for
nested diagnostics, i.e. it would print:
input:1: include.ninja:1: expected path
Fix this so that it prints only the current file location, like it used to:
include.ninja:1: expected path
Also add a test for this.
Nico Weber [Thu, 18 Jul 2013 21:41:16 +0000 (14:41 -0700)]
Merge pull request #622 from nico/test
Add test for a manifest ending in the middle of a keyword.
Nico Weber [Thu, 18 Jul 2013 21:39:41 +0000 (14:39 -0700)]
Add test for a manifest ending in the middle of a keyword.
Evan Martin [Thu, 18 Jul 2013 20:36:58 +0000 (13:36 -0700)]
Merge pull request #621 from nico/ninjaload
Reuse ManifestParser::Load() in ManifestParser::ParseFileInclude().