summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* v1.8.2v1.8.2Nico Weber2017-09-1014-66/+187
|\
| * mark this 1.8.2.gitNico Weber2017-09-101-1/+1
| |
| * Merge pull request #1323 from bradking/tolerate-phony-self-referenceNico Weber2017-09-1012-64/+185
| |\ | | | | | | Restore tolerance of self-referencing phony build statements
| | * Restore tolerance of self-referencing phony build statementsBrad King2017-09-088-3/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since commit v1.8.0^2~3^2~1 (Teach RecomputeDirty to detect cycles in the build graph, 2015-11-13) we correctly reject self-referencing phony build statements like build a: phony a as cycles. Unfortunately this breaks support for CMake 2.8.12.x and 3.0.x because those versions incorrectly produce edges of this form (that we used to tolerate). In order to preserve compatibility with those CMake versions we need to restore tolerance of these edges. Add a special case to the manifest parser to filter out self-referencing inputs of phony edges of the form produced by those CMake versions. Warn by default, but add a `-w phonycycle={err,warn}` option to make it an error. Fixes: #1322
| | * Factor ManifestParser options into a structureBrad King2017-09-078-62/+75
| |/ | | | | | | | | | | This will allow more options to be added without updating everywhere that constructs a ManifestParser. Also extend the AssertParse function to take the options so tests can control them.
* | v1.8.1v1.8.1Nico Weber2017-09-063-30/+27
|\ \ | |/
| * mark this 1.8.1.gitNico Weber2017-09-061-1/+1
| |
| * Merge pull request #1318 from atetubou/fix_for_maxpath_testNico Weber2017-09-051-28/+25
| |\ | | | | | | fix normalizer test for _MAX_PATH
| | * fix normalizer test for _MAX_PATHTakuto Ikuta2017-09-051-28/+25
| |/
* | v1.8.0v1.8.0Nico Weber2017-09-0340-436/+1097
|\ \ | |/
| * mark this 1.8.0.gitNico Weber2017-09-031-1/+1
| |
| * Merge pull request #1313 from adzenith/patch-3Nico Weber2017-09-031-0/+5
| |\ | | | | | | Add `deps` and `recompact` tools to manual
| | * Add _Available since Ninja 1.4._ to `deps` and `recompact`Nikolaus Wittenstein2017-08-301-2/+2
| | |
| | * Add `deps` and `recompact` tools to manualNikolaus Wittenstein2017-08-291-0/+5
| | | | | | | | | The `deps` tool in particular is very useful to know about.
| * | Merge pull request #1314 from atetubou/fix_windows_pathNico Weber2017-08-302-59/+50
| |\ \ | | |/ | |/| Remove path component limit from input of CanonicalizePath in windows
| | * Remove path component limit from input of CanonicalizePath in windowsTakuto Ikuta2017-08-302-59/+50
| |/
| * Merge pull request #1111 from bradking/detect-cycles-earlyNico Weber2017-06-228-166/+175
| |\ | | | | | | Detect build graph cycles as early as possible
| | * Drop unnecessary cycle detection in Plan::AddTargetBrad King2017-06-194-100/+55
| | | | | | | | | | | | | | | We now detect and reject cycles in DependencyScan::RecomputeDirty before Plan::AddTarget is called so we can assume DAG input to the Plan.
| | * Teach RecomputeDirty to detect cycles in the build graphBrad King2017-06-193-20/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | RecomputeDirty is the earliest traversal of the build graph complete with depfile-loaded dependencies. Teach it to detect cycles and fail immediately. This avoids the need to tolerate cycles in RecomputeDirty only to diagnose them later. It also enables future simplification of Plan and Builder logic because they will be able to assume DAG input. When RecomputeDirty detects a cycle, reject it with an error message like that previously produced by Plan::CheckDependencyCycle. Previously we used the stat state of each node to determine whether we reached it earlier in the walk. Retain this approach for leaf nodes, but add an explicit walk state mark for each Edge so that we can have a temporary mark to aid cycle detection.
| | * Add infrastructure for efficient walks through the `Edge` graphBrad King2017-06-192-2/+11
| | | | | | | | | | | | Store a mark in each `Edge` to be updated as it is encountered by a walk.
| | * Refactor RecomputeDirty to take a node instead of an edgeBrad King2017-06-195-47/+39
| | | | | | | | | | | | | | | | | | All call sites have a node on which they call `in_edge()` to call RecomputeDirty. Simplify call sites by taking the node directly and calling `in_edge()` internally.
| | * Simplify BuildTest.StatFailureAbortsBuild test caseBrad King2017-06-191-2/+2
| | | | | | | | | | | | | | | Remove a dependency cycle from the test case, as cycles are covered by other tests. Ensure this case covers stat failure on a valid graph.
| * | Merge pull request #1292 from gtristan/work-around-zero-mtimeNico Weber2017-06-191-0/+5
| |\ \ | | |/ | |/| Work around mtime being set to 0 sometimes
| | * Work around mtime being set to 0 sometimesPatrick Griffis2017-06-181-0/+5
| |/
| * Merge pull request #1291 from colincross/fix1290Nico Weber2017-06-172-1/+32
| |\ | | | | | | Fix segfault on edge with no inputs
| | * Fix segfault on edge with no inputsColin Cross2017-06-162-1/+32
| |/ | | | | | | | | | | | | | | PR #1281 added a deference of most_recent_input without checking for NULL, which can occur if a build rule has no inputs. Check it for null before dereferencing, and add a test. Fixes #1290.
| * Merge pull request #1156 from cdbennett/windows-binary-mode-outputNico Weber2017-06-141-0/+15
| |\ | | | | | | Write subprocess output to stdout in binary mode
| | * Write subprocess output to stdout in binary modeColin D Bennett2016-05-121-0/+15
| | | | | | | | | | | | | | | | | | | | | | | | Set stdout to binary mode while writing subprocess output, so that the CR in a CR LF sequence is not replaced with CR LF itself, which would result in CR CR LF. Based on patch posted by nico in issue #773 comment.
| * | Merge pull request #1287 from ivadasz/dragonfly_patchesNico Weber2017-06-141-3/+7
| |\ \ | | | | | | | | Add support for DragonFly BSD.
| | * | Add support for DragonFly.Imre Vadász2017-06-101-3/+7
| | | | | | | | | | | | | | | | | | | | DragonFly uses a fork of FreeBSD ports, and also uses the /usr/local prefix. And ppoll is also available in DragonFly.
| * | | Merge pull request #1281 from colincross/rebuild_on_errorNico Weber2017-06-149-30/+106
| |\ \ \ | | |/ / | |/| | Rebuild edges that update their output file on error
| | * | Always rebuild on errorsColin Cross2017-05-227-27/+45
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://groups.google.com/forum/#!msg/ninja-build/YQuGNrECI-4/ti-lAs9SPv8J discusses a case where an rule updates its output file and then fails. The next run of ninja considers the ouptut file clean and doesn't rebuild it. Always stat output files after they are built, and write the mtime into .ninja_log. Consider output files dirty if the recorded mtime is older than the most recent input file.
| | * | Add a test that fails if a rule updates it output file but failsColin Cross2017-05-223-2/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | https://groups.google.com/forum/#!msg/ninja-build/YQuGNrECI-4/ti-lAs9SPv8J discusses a case where an rule updates its output file and then fails. The next run of ninja considers the ouptut file clean and doesn't rebuild it. Add a test for this case, which currently fails.
| | * | Move stat metric to DiskInterfaceColin Cross2017-05-222-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Stat is not always used through Node::Stat, it is often used directly through DiskInterface. THe next patches will cause it to be called even more often through DiskInterface, so move the metrics to DiskInterface.
| * | | Merge pull request #1280 from RedBeard0531/zsh_completion_explicit_fileNico Weber2017-05-181-1/+6
| |\ \ \ | | |/ / | |/| | Make zsh completion use explicitly specified ninja files
| | * | Make zsh completion use explicitly specified ninja filesMathias Stearn2017-05-181-1/+6
| |/ /
| * | Revert 78f893bdbb1e4bf3e3eac41a59d39854b8045150Nico Weber2017-05-151-1/+1
| | | | | | | | | | | | | | | These brackets are supposed to not be replaced here, but in the source files, see paragraph right above the changed line. Fixes #1212 again.
| * | Merge pull request #1271 from atetubou/faster_clparserNico Weber2017-05-1112-82/+388
| |\ \ | | | | | | | | Faster clparser
| | * | Reduce GetFullPathName callsTakuto Ikuta2017-05-091-2/+4
| | | |
| | * | Fix for reviewTakuto Ikuta2017-05-095-20/+20
| | | |
| | * | Make clparser fastertikuta2017-05-086-79/+130
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch improves perfromance of clparser. * Reduce the number of calling GetFullPathName. * Use StringPiece for Split and Join. * Add EqualsCaseInsensitive for StringPiece not to generate new string instance. * Add some utility member in StringPiece class.
| | * | Add string_piece_utilTakuto Ikuta2017-04-265-0/+253
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Following functions are implemented for further performance optimization. * JoinStringPiece * SplitStringPiece * EqualsCaseInsensitiveASCII * ToLowerASCII To improve performance of CLParser, I will introduce above functions into include_normalize-win32.cc.
| * | Merge pull request #1267 from atetubou/clparser_perftestNico Weber2017-04-173-15/+169
| |\ \ | | | | | | | | Add clparser_perftest
| | * | delete nTakuto Ikuta2017-04-121-0/+0
| | | |
| | * | use usTakuto Ikuta2017-04-121-2/+2
| | | |
| | * | add gitignoreTakuto Ikuta2017-04-122-0/+1
| | | |
| | * | remove util.hTakuto Ikuta2017-04-121-1/+0
| | | |
| | * | Add clparser_perftestTakuto Ikuta2017-04-122-15/+169
| |/ /
| * | Merge pull request #1255 from tchajed/bind-localhostNico Weber2017-03-101-2/+6
| |\ \ | | | | | | | | browse: Bind to localhost by default
| | * | browse: Bind to localhost by defaultTej Chajed2017-03-091-2/+6
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | Previously the browse server would bind to "", which is translated to 0.0.0.0 (all interfaces), and then the hostname as retrieved by socket.gethostname() was presented to the user. The hostname is now "localhost" by default and is configurable, so the original behavior is achieved with `ninja -t browse -a ""`.