fix(build): target-aware stack flag so windows-gnu toolchain links#2539
Open
galaxy-luke wants to merge 1 commit into
Open
fix(build): target-aware stack flag so windows-gnu toolchain links#2539galaxy-luke wants to merge 1 commit into
galaxy-luke wants to merge 1 commit into
Conversation
build.rs injected /STACK:8388608 guarded only by #[cfg(windows)]. This is MSVC linker syntax; on x86_64-pc-windows-gnu the GNU linker (ld) doesn't recognize it and fails with: ld.exe: cannot find /STACK:8388608: No such file or directory Branch on CARGO's TARGET env var (build.rs cfg(target_env) reflects the host, not the target). MSVC keeps /STACK:N; GNU uses -Wl,--stack,N. Fixes rtk-ai#1814 Co-Authored-By: Claude <noreply@anthropic.com>
|
luke seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
Author
|
您好!我已經完成 CLA 的簽署。再麻煩抽空協助 Review 以及核准 Workflow 執行,謝謝! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Building rtk from source (or
cargo install --git) on thex86_64-pc-windows-gnutoolchain fails during the final link:This makes rtk impossible to install for anyone on the GNU toolchain (e.g. users with only MSYS2/MinGW and no MSVC Build Tools). See #1814.
Root cause
build.rsreserves a larger main-thread stack (correct — Clap + the command graph can exceed the default 1 MiB), but the flag is injected under#[cfg(windows)]only:/STACK:Nis MSVC linker syntax. Onwindows-gnu, the GNU linker (ld, driven bygcc) doesn't recognize it and treats it as a file path → link failure.Fix
Branch on the target being built. Subtlety:
#[cfg(target_env = ...)]inside build.rs reflects the host, not the target being compiled, so we read Cargo'sTARGETenv var instead:*-pc-windows-msvc→/STACK:8388608(unchanged)*-pc-windows-gnu→-Wl,--stack,8388608(GNU equivalent)Verification
Built and installed on Windows 11 with
stable-x86_64-pc-windows-gnu+ MinGW-w64 (UCRT), where it previously failed with the exact error above. After the fix,cargo +stable-x86_64-pc-windows-gnu install --path . --lockedsucceeds;rtk --version/rtk gainwork.Fixes #1814