feat(rust/ninja): Implement initial scheduler, status, tools — 15/18 tests passing
Scaffolds and lands the first working slice of rust-ninja, validated
against 18 Output.test_* methods from the upstream ninja v1.13.1
misc/output_test.py harness.
Module layout (src/):
- main.rs CLI dispatch + chdir banner
- cli.rs Argument parsing for the flags exercised by tests
- graph.rs State, Rule, Edge data types
- manifest.rs Tokenize + parse build.ninja, layered variable
expansion with $$ / $\n / $| / $: escapes
- status.rs [N/M] status line; smart-terminal in-place redraw
(\r…\x1b[K), piped line-per-edge, ANSI stripping
with CLICOLOR_FORCE override, verbose passthrough
- build/
plan.rs Target resolution + topological scheduling
runner.rs Parallel scheduler, subprocess execution,
rspfile/depfile dir creation, exit-code mapping
(124/127/130/137), unknown-target error
expand.rs Edge-context expansion ($in, $out, layered)
- tools/
recompact.rs -t recompact / -t restat (.ninja_log version warn)
inputs.rs -t inputs (alpha + dep order, shell escape, --print0)
multi_inputs.rs -t multi-inputs with -d <delim> and --print0
compdb_targets.rs -t compdb-targets JSON, error/usage paths
Passing (15):
test_status, test_pr_1685, test_ninja_status_default,
test_ninja_status_quiet, test_entering_directory_on_stdout,
test_issue_1418, test_issue_1214, test_issue_1966, test_issue_2499,
test_issue_2048, test_pr_2540, test_depfile_directory_creation,
test_tool_inputs, test_tool_compdb_targets, test_tool_multi_inputs.
Deferred (3): test_explain_output (.ninja_log + restat + -d explain),
test_issue_2586 (console pool), test_issue_2621 (dyndep + multi-producer
detection).
Other changes:
- testsuite.nix handles both tarball and unpacked-tree forms of
pkgs.ninja.src
- .gitignore: stop ignoring rust/*/src/build directories so the build/
submodule is tracked
- PLAN.md: log progress, mark phases 0-6 complete
Signed-off-by: Niclas Overby <niclas@overby.me>
feat(rust/ninja): Implement initial scheduler, status, tools — 15/18 tests passing
Scaffolds and lands the first working slice of rust-ninja, validated
against 18 Output.test_* methods from the upstream ninja v1.13.1
misc/output_test.py harness.
Module layout (src/):
- main.rs CLI dispatch + chdir banner
- cli.rs Argument parsing for the flags exercised by tests
- graph.rs State, Rule, Edge data types
- manifest.rs Tokenize + parse build.ninja, layered variable
expansion with $$ / $\n / $| / $: escapes
- status.rs [N/M] status line; smart-terminal in-place redraw
(\r…\x1b[K), piped line-per-edge, ANSI stripping
with CLICOLOR_FORCE override, verbose passthrough
- build/
plan.rs Target resolution + topological scheduling
runner.rs Parallel scheduler, subprocess execution,
rspfile/depfile dir creation, exit-code mapping
(124/127/130/137), unknown-target error
expand.rs Edge-context expansion ($in, $out, layered)
- tools/
recompact.rs -t recompact / -t restat (.ninja_log version warn)
inputs.rs -t inputs (alpha + dep order, shell escape, --print0)
multi_inputs.rs -t multi-inputs with -d <delim> and --print0
compdb_targets.rs -t compdb-targets JSON, error/usage paths
Passing (15):
test_status, test_pr_1685, test_ninja_status_default,
test_ninja_status_quiet, test_entering_directory_on_stdout,
test_issue_1418, test_issue_1214, test_issue_1966, test_issue_2499,
test_issue_2048, test_pr_2540, test_depfile_directory_creation,
test_tool_inputs, test_tool_compdb_targets, test_tool_multi_inputs.
Deferred (3): test_explain_output (.ninja_log + restat + -d explain),
test_issue_2586 (console pool), test_issue_2621 (dyndep + multi-producer
detection).
Other changes:
- testsuite.nix handles both tarball and unpacked-tree forms of
pkgs.ninja.src
- .gitignore: stop ignoring rust/*/src/build directories so the build/
submodule is tracked
- PLAN.md: log progress, mark phases 0-6 complete
Signed-off-by: Niclas Overby <niclas@overby.me>