Improve cross-compilation tooling autodetection#1889
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| ZIG_BIN=$(resolve_zig_binary "$CROSS_DIR") | ||
| exec "$ZIG_BIN" ar -target aarch64-linux-gnu "$@" |
There was a problem hiding this comment.
Remove invalid
-target argument in zig ar fallback
When no native aarch64-linux-gnu-ar is found this wrapper now executes zig ar -target aarch64-linux-gnu …. Unlike zig cc, zig ar is just a thin shim over llvm-ar and does not accept -target; the command exits with unknown option: -target, so cross builds will fail on hosts that rely on Zig for the toolchain (which is exactly the scenario this script is meant to support). Dropping the flag or using --target=<triple> is necessary for the fallback path to work.
Useful? React with 👍 / 👎.
Expand the placeholder async migration plan into a comprehensive, opinionated design covering: current synchronous threading model per subsystem, per-subsystem cost/benefit, a phased incremental adoption strategy, tokio runtime choice with rejected alternatives, sync/async bridge patterns, backward-compat strategy, risk register, and open questions. Cross-references existing async-related tasks (#1367, #1411, #1591, #1593, #1595, #1674, #1751, #1779, #1780, #1782, #1796, #1797, #1805, #1806, #1889, #1890, #1891, #1892, #1934, #1935, #2136) and related design notes so future planners have a single anchor.
Expand the placeholder async migration plan into a comprehensive, opinionated design covering: current synchronous threading model per subsystem, per-subsystem cost/benefit, a phased incremental adoption strategy, tokio runtime choice with rejected alternatives, sync/async bridge patterns, backward-compat strategy, risk register, and open questions. Cross-references existing async-related tasks (#1367, #1411, #1591, #1593, #1595, #1674, #1751, #1779, #1780, #1782, #1796, #1797, #1805, #1806, #1889, #1890, #1891, #1892, #1934, #1935, #2136) and related design notes so future planners have a single anchor.
…4226) Captures the wrapper-level design for swapping the SSH subprocess stdio onto tokio::process::Child stdio. Records why tokio::process is preferred over a raw AsyncFd construction, what async actually buys beyond today's thread-per-half overlap (thread elimination, collapsed stderr drain and connect watchdog), the parallel AsyncSshConnection surface, a sync-vs-async bench matrix anchored on the 1 MB/s emulated link from #1889, and a recommendation to defer the implementation until the async daemon (#1935) lands so runtime ownership is settled first.
Adds crates/rsync_io/benches/ssh_sync_vs_async.rs comparing the current blocking Read+Write SSH transport against a tokio spawn_blocking shim on a userspace-throttled loopback wire. Sweeps 1 MiB and 16 MiB payloads at 200 ns/byte to simulate a slow link without requiring privileged tc qdisc netem. The optional ssh-binary smoke cell skips with a clear log line when ssh is absent on PATH, so CI runners without ssh do not fail.
Expand the placeholder async migration plan into a comprehensive, opinionated design covering: current synchronous threading model per subsystem, per-subsystem cost/benefit, a phased incremental adoption strategy, tokio runtime choice with rejected alternatives, sync/async bridge patterns, backward-compat strategy, risk register, and open questions. Cross-references existing async-related tasks (#1367, #1411, #1591, #1593, #1595, #1674, #1751, #1779, #1780, #1782, #1796, #1797, #1805, #1806, #1889, #1890, #1891, #1892, #1934, #1935, #2136) and related design notes so future planners have a single anchor.
…4226) Captures the wrapper-level design for swapping the SSH subprocess stdio onto tokio::process::Child stdio. Records why tokio::process is preferred over a raw AsyncFd construction, what async actually buys beyond today's thread-per-half overlap (thread elimination, collapsed stderr drain and connect watchdog), the parallel AsyncSshConnection surface, a sync-vs-async bench matrix anchored on the 1 MB/s emulated link from #1889, and a recommendation to defer the implementation until the async daemon (#1935) lands so runtime ownership is settled first.
Adds crates/rsync_io/benches/ssh_sync_vs_async.rs comparing the current blocking Read+Write SSH transport against a tokio spawn_blocking shim on a userspace-throttled loopback wire. Sweeps 1 MiB and 16 MiB payloads at 200 ns/byte to simulate a slow link without requiring privileged tc qdisc netem. The optional ssh-binary smoke cell skips with a clear log line when ssh is absent on PATH, so CI runners without ssh do not fail.
Expand the placeholder async migration plan into a comprehensive, opinionated design covering: current synchronous threading model per subsystem, per-subsystem cost/benefit, a phased incremental adoption strategy, tokio runtime choice with rejected alternatives, sync/async bridge patterns, backward-compat strategy, risk register, and open questions. Cross-references existing async-related tasks (#1367, #1411, #1591, #1593, #1595, #1674, #1751, #1779, #1780, #1782, #1796, #1797, #1805, #1806, #1889, #1890, #1891, #1892, #1934, #1935, #2136) and related design notes so future planners have a single anchor.
…4226) Captures the wrapper-level design for swapping the SSH subprocess stdio onto tokio::process::Child stdio. Records why tokio::process is preferred over a raw AsyncFd construction, what async actually buys beyond today's thread-per-half overlap (thread elimination, collapsed stderr drain and connect watchdog), the parallel AsyncSshConnection surface, a sync-vs-async bench matrix anchored on the 1 MB/s emulated link from #1889, and a recommendation to defer the implementation until the async daemon (#1935) lands so runtime ownership is settled first.
Adds crates/rsync_io/benches/ssh_sync_vs_async.rs comparing the current blocking Read+Write SSH transport against a tokio spawn_blocking shim on a userspace-throttled loopback wire. Sweeps 1 MiB and 16 MiB payloads at 200 ns/byte to simulate a slow link without requiring privileged tc qdisc netem. The optional ssh-binary smoke cell skips with a clear log line when ssh is absent on PATH, so CI runners without ssh do not fail.
Summary
Testing
https://chatgpt.com/codex/tasks/task_e_6906401f636c83238d1bd056f5ab6d9b