mirror of
https://github.com/vercel-labs/scriptc.git
synced 2026-10-02 08:35:07 +08:00
* Expand LLVM native output targets - Add owned helper and runtime-pack contracts for macOS x64, Linux glibc/musl, Windows x64, and WASI. - Generalize LLVM target selection, package validation, linker plans, and release/CI matrices. - Document linker boundaries and add focused native-output and runtime-pack coverage. * Pin Windows LLVM helper CI to VS 2022 The official LLVM archive needs the Visual Studio 2022 CMake generator, which is not guaranteed by windows-latest. * Align bootstrap cache with LLVM runtime-pack builds Use the same target-specific helper and linker identity before and after compiler loading so routed executable cache hits remain lightweight. * Install Windows LLVM CI tools with Chocolatey windows-2022 includes Visual Studio but not winget; use its available Chocolatey bootstrap for CMake and Ninja. * Prevent Zig version probes from leaving runtime-pack objects Run runtime-pack compiler version probes in a private temporary directory and remove the accidental tracked WASI a.o file. * Use 7-Zip for Windows LLVM setup Extract the official LLVM development archive with two-stage 7-Zip instead of Windows tar.exe, which timed out while materializing the toolchain tree. * Define ssize_t for the MSVC runtime pack Clang's MSVC target does not expose POSIX ssize_t through sys/types.h; define the pointer-sized runtime type without affecting MinGW. * Build the Windows runtime pack with Zig Use the MinGW-compatible Windows sysroot required by the runtime while retaining COFF helper output and installing Zig in the Windows native CI lane. * Give macOS LLVM differential shard time to finish Shard 1 passed its setup and focused contracts but was cancelled during its cold LLVM differential slice at the 20-minute job limit.
40 lines
1.5 KiB
JavaScript
40 lines
1.5 KiB
JavaScript
#!/usr/bin/env node
|
|
// Stamps the version from packages/cli/package.json into packages/runtime
|
|
// packages/compiler, runtime, and platform helper packages so every component
|
|
// participating in the helper protocol moves in lockstep.
|
|
// Usage: node scripts/sync-versions.mjs
|
|
import { readFileSync, writeFileSync } from "node:fs";
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
const root = fileURLToPath(new URL("..", import.meta.url));
|
|
const manifest = (pkg) => `${root}packages/${pkg}/package.json`;
|
|
const read = (path) => JSON.parse(readFileSync(path, "utf8"));
|
|
|
|
const version = read(manifest("cli")).version;
|
|
if (typeof version !== "string" || version.length === 0) {
|
|
console.error("packages/cli/package.json has no version");
|
|
process.exit(1);
|
|
}
|
|
|
|
for (const pkg of [
|
|
"runtime",
|
|
"runtime-darwin-arm64", "runtime-darwin-x64",
|
|
"runtime-linux-x64-gnu", "runtime-linux-arm64-gnu",
|
|
"runtime-linux-x64-musl", "runtime-linux-arm64-musl",
|
|
"runtime-win32-x64-msvc", "runtime-wasm32-wasi",
|
|
"compiler",
|
|
"llvm-darwin-arm64", "llvm-darwin-x64",
|
|
"llvm-linux-x64-gnu", "llvm-linux-arm64-gnu",
|
|
"llvm-linux-x64-musl", "llvm-linux-arm64-musl", "llvm-win32-x64-msvc",
|
|
]) {
|
|
const path = manifest(pkg);
|
|
const json = read(path);
|
|
if (json.version === version) {
|
|
console.log(`packages/${pkg}: already ${version}`);
|
|
continue;
|
|
}
|
|
console.log(`packages/${pkg}: ${json.version} -> ${version}`);
|
|
json.version = version;
|
|
writeFileSync(path, JSON.stringify(json, null, 2) + "\n");
|
|
}
|