alpha
Login
or
Join now
yen.salif.eu
/
noverby
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
[★] Personal Monorepo
Star
0
Fork
0
Atom
Configure Feed
Issues
Pull Requests
Commits
Tags
Feed URL
Select the types of activity you want to include in your feed.
Overview
Issues
Pulls
Pipelines
noverby
/
rust
/
ninja
/
src
/
at
main
2 folders
5 files
Niclas Overby
fix(rust/ninja): Expand $in_newline in edge variable context
3mo ago
205668b8
build
fix(rust/ninja): Expand $in_newline in edge variable context CMake Ninja emits linker rules whose object list lives ONLY in a response file, via "rspfile_content = \$in_newline \$LINK_PATH \$LINK_LIBRARIES". The three copies of expand_in_edge (build runner, graph-json tool, compdb-targets tool) synthesized \$in and \$out but not \$in_newline, so it resolved as an unknown variable (empty) and the rsp was written with no objects. The graph-json tool feeds the per-edge Nix lowering, so the lowered link got an empty rsp and failed with "ld: no object files specified" -- hit on the one ~900-object link (Darling libsystem_kernel firstpass + finalpass; verified 877 objects now emitted into rspfile_content). Add \$in_newline as the newline-joined form of the edge explicit inputs (matching \$in, which stays space-joined) in all three copies. Implicit and order-only inputs are excluded, per Ninja semantics. Covered by two unit tests in expand.rs. Signed-off-by: Niclas Overby <niclas@overby.me>
3 months ago
tools
fix(rust/ninja): Expand $in_newline in edge variable context CMake Ninja emits linker rules whose object list lives ONLY in a response file, via "rspfile_content = \$in_newline \$LINK_PATH \$LINK_LIBRARIES". The three copies of expand_in_edge (build runner, graph-json tool, compdb-targets tool) synthesized \$in and \$out but not \$in_newline, so it resolved as an unknown variable (empty) and the rsp was written with no objects. The graph-json tool feeds the per-edge Nix lowering, so the lowered link got an empty rsp and failed with "ld: no object files specified" -- hit on the one ~900-object link (Darling libsystem_kernel firstpass + finalpass; verified 877 objects now emitted into rspfile_content). Add \$in_newline as the newline-joined form of the edge explicit inputs (matching \$in, which stays space-joined) in all three copies. Implicit and order-only inputs are excluded, per Ninja semantics. Covered by two unit tests in expand.rs. Signed-off-by: Niclas Overby <niclas@overby.me>
3 months ago
cli.rs
feat(rust/ninja): Implement GNU make jobserver client and add jobserver test suite - src/build/jobserver.rs: Posix FIFO client for the GNU make jobserver protocol. Parses MAKEFLAGS to find --jobserver-auth=fifo:PATH (and --jobserver-fds=R,W which is rejected with the canonical Pipe-based protocol is not supported! warning), opens the FIFO read+write nonblock, and exposes try_acquire / release built around the implicit slot + per-token byte read/write semantics. - src/build/runner.rs: integrate the client into the dispatch loop. When a jobserver is active, the local -j cap is raised to unlimited so the upstream pool alone bounds parallelism; held tokens are tracked per plan slot and returned to the FIFO on completion. An explicit -j N on the command line short-circuits jobserver detection entirely, matching reference ninja. - src/cli.rs: jobs_count() now mirrors reference ninja's GuessParallelism(): cores + 2, with a floor of 2 even on 1 CPU. Without this the taskset-restricted leg of the FIFO test would cap us at parallelism 1. - testsuite.nix + default.nix: parametrize the test driver over module/className so jobserver_test.JobserverTest methods can run through the same Nix harness as Output.test_*; wire all four jobserver_test.py methods into checks. - Cargo.toml: add libc dep for fstat/fcntl plumbing. - PLAN.md: mark Phase 3 jobserver as done and bump the test count banner to 18+4+7. Signed-off-by: Niclas Overby <niclas@overby.me>
6 months ago
graph.rs
feat(rust/ninja): Enforce -k N keep-going threshold and pool depth limits - CLI: -k now takes a numeric argument matching upstream ninja (-k 0 = unlimited, -k N = stop after N failures, default = stop on first failure). The first failing exit code is preserved as the process exit status; in-flight edges still drain so their FAILED blocks are printed. - Manifest: pool blocks now capture depth = N. The implicit console pool defaults to depth 1. - Scheduler: per-pool in-flight counters cap concurrent edges by name (rule- or edge-bound pool = name). Edges held back by a full pool yield to other ready edges and resume once a slot frees. - PLAN.md: mark Phase 5 -k N and Phase 8 pool depth limiting as done. Signed-off-by: Niclas Overby <niclas@overby.me>
6 months ago
main.rs
feat(rust/ninja): Support include/subninja and add CMake-generated roundtrip check Signed-off-by: Niclas Overby <niclas@overby.me>
6 months ago
manifest.rs
feat(rust/ninja): Enforce -k N keep-going threshold and pool depth limits - CLI: -k now takes a numeric argument matching upstream ninja (-k 0 = unlimited, -k N = stop after N failures, default = stop on first failure). The first failing exit code is preserved as the process exit status; in-flight edges still drain so their FAILED blocks are printed. - Manifest: pool blocks now capture depth = N. The implicit console pool defaults to depth 1. - Scheduler: per-pool in-flight counters cap concurrent edges by name (rule- or edge-bound pool = name). Edges held back by a full pool yield to other ready edges and resume once a slot frees. - PLAN.md: mark Phase 5 -k N and Phase 8 pool depth limiting as done. Signed-off-by: Niclas Overby <niclas@overby.me>
6 months ago
status.rs
feat(rust/ninja): Implement true console-pool exclusive terminal locking Signed-off-by: Niclas Overby <niclas@overby.me>
6 months ago