按显式配置控制 Windows sccache

未配置 wrapper 时默认回退到直接 rustc

处理 sccache 探测失败与 wrapper 配置冲突

同步更新开发运维和排障文档
This commit is contained in:
2026-09-14 06:19:38 +00:00
parent e85c216112
commit 136756134a
4 changed files with 62 additions and 17 deletions
+25 -11
View File
@@ -591,23 +591,37 @@ function buildLocalRustProcessEnv(env, options = {}) {
String(mergedEnv.RUSTC_WRAPPER ?? '').trim(),
String(mergedEnv.CARGO_BUILD_RUSTC_WRAPPER ?? '').trim(),
].filter(Boolean);
const customWrapper = wrappers.find(
(wrapper) => !isSccacheRustcWrapper(wrapper),
);
if (customWrapper) {
mergedEnv.RUSTC_WRAPPER = customWrapper;
mergedEnv.CARGO_BUILD_RUSTC_WRAPPER = customWrapper;
const uniqueWrappers = [...new Set(wrappers)];
if (uniqueWrappers.length > 1) {
mergedEnv.RUSTC_WRAPPER = '';
mergedEnv.CARGO_BUILD_RUSTC_WRAPPER = '';
if (options.log !== false) {
console.warn(
'[dev:rust] RUSTC_WRAPPER 与 CARGO_BUILD_RUSTC_WRAPPER 配置冲突,回退到直接 rustc。',
);
}
return mergedEnv;
}
const rustcWrapperBypass = resolveLocalDevRustcWrapperBypass(options);
mergedEnv.RUSTC_WRAPPER = rustcWrapperBypass;
mergedEnv.CARGO_BUILD_RUSTC_WRAPPER = rustcWrapperBypass;
const configuredWrapper = uniqueWrappers[0] ?? '';
if (configuredWrapper && !isSccacheRustcWrapper(configuredWrapper)) {
mergedEnv.RUSTC_WRAPPER = configuredWrapper;
mergedEnv.CARGO_BUILD_RUSTC_WRAPPER = configuredWrapper;
return mergedEnv;
}
const rustcWrapper = configuredWrapper
? resolveLocalDevRustcWrapperBypass(options)
: '';
mergedEnv.RUSTC_WRAPPER = rustcWrapper;
mergedEnv.CARGO_BUILD_RUSTC_WRAPPER = rustcWrapper;
if (options.log !== false) {
console.warn(
rustcWrapperBypass
rustcWrapper
? '[dev:rust] 本地 dev 构建启用 sccache wrapper。'
: '[dev:rust] 本地 dev 构建未找到可用 sccache,回退到直接 rustc。',
: configuredWrapper
? '[dev:rust] sccache wrapper 探测失败,回退到直接 rustc。'
: '[dev:rust] 未显式配置 Rust wrapper,使用直接 rustc。',
);
}
return mergedEnv;