Skip to content

Commit c667a3f

Browse files
committed
fix: change MingwInfo to have releaseName and fileSuffix
1 parent d24850c commit c667a3f

File tree

4 files changed

+23
-17
lines changed

4 files changed

+23
-17
lines changed

cspell.config.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ words:
4141
- libtinfo
4242
- msbuild
4343
- msvc
44+
- msvcrt
4445
- msys
4546
- multilib
4647
- mxschmitt
@@ -55,6 +56,7 @@ words:
5556
- setx
5657
- terserrc
5758
- tsbuildinfo
59+
- ucrt
5860
- untildify
5961
- vcpkg
6062
- vcvarsall

dist/setup_cpp.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/setup_cpp.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/gcc/gcc.ts

Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,31 @@ import semverMajor from "semver/functions/major"
77
import semverCoerce from "semver/functions/coerce"
88
import { setupMacOSSDK } from "../macos-sdk/macos-sdk"
99
import path from "path"
10-
import { warning, info, notice } from "../utils/io/io"
10+
import { warning, info } from "../utils/io/io"
1111
import { isGitHubCI } from "../utils/env/isci"
1212
import { addBinExtension } from "../utils/extension/extension"
1313
import { InstallationInfo, PackageInfo, setupBin } from "../utils/setup/setupBin"
1414
import { extract7Zip } from "../utils/setup/extract"
1515

1616
interface MingwInfo {
17-
mingwVersion: string
18-
llvmVersion?: string
19-
number: string
20-
runtime: "ucrt" | "msvcrt" // ucrt is the modern runtime and should be preferred
17+
releaseName: string
18+
fileSuffix: string
2119
}
2220

21+
// https://github.com/brechtsanders/winlibs_mingw/releases
2322
const GccToMingwInfo = {
24-
"12": { mingwVersion: "10.0.0", number: "r1", runtime: "msvcrt" },
25-
"12.1.0-msvcrt": { mingwVersion: "10.0.0", number: "r1", runtime: "msvcrt" },
26-
"11": { mingwVersion: "10.0.0", llvmVersion: "14.0.3", number: "r3", runtime: "ucrt" },
27-
"11.3.0-ucrt": { mingwVersion: "10.0.0", llvmVersion: "14.0.3", number: "r3", runtime: "ucrt" },
28-
"11.3.0-msvcrt": { mingwVersion: "10.0.0", llvmVersion: "14.0.3", number: "r3", runtime: "msvcrt" },
29-
"11.2.0-ucrt": { mingwVersion: "9.0.0", number: "r5", runtime: "ucrt" },
30-
"11.2.0-msvcrt": { mingwVersion: "9.0.0", number: "r6", runtime: "msvcrt" }, // TODO -w64-
23+
"12": { releaseName: "12.1.0-10.0.0-msvcrt-r1", fileSuffix: "12.1.0-mingw-w64msvcrt-10.0.0-r1" },
24+
"12.1.0-msvcrt": { releaseName: "12.1.0-10.0.0-msvcrt-r1", fileSuffix: "12.1.0-mingw-w64msvcrt-10.0.0-r1" },
25+
"11": { releaseName: "11.3.0-14.0.3-10.0.0-ucrt-r3", fileSuffix: "11.3.0-mingw-w64ucrt-10.0.0-r3" },
26+
"11.3.0-ucrt": { releaseName: "11.3.0-14.0.3-10.0.0-ucrt-r3", fileSuffix: "11.3.0-mingw-w64ucrt-10.0.0-r3" },
27+
"11.3.0-msvcrt": { releaseName: "11.3.0-14.0.3-10.0.0-msvcrt-r3", fileSuffix: "11.3.0-mingw-w64msvcrt-10.0.0-r3" },
28+
"11.2.0-ucrt": { releaseName: "11.2.0-9.0.0-ucrt-r5", fileSuffix: "11.2.0-mingw-w64ucrt-9.0.0-r5" },
29+
"11.2.0-msvcrt": { releaseName: "11.2.0-9.0.0-msvcrt-r5", fileSuffix: "11.2.0-mingw-w64msvcrt-9.0.0-r5" },
30+
"10": { releaseName: "10.3.0-12.0.0-9.0.0-r2", fileSuffix: "10.3.0-llvm-12.0.0-mingw-w64-9.0.0-r2" },
31+
"10.3.0": { releaseName: "10.3.0-12.0.0-9.0.0-r2", fileSuffix: "10.3.0-llvm-12.0.0-mingw-w64-9.0.0-r2" },
32+
"10.2.0": { releaseName: "10.2.0-7.0.0-r4", fileSuffix: "10.2.0-llvm-10.0.1-mingw-w64-7.0.0-r4" },
33+
"9": { releaseName: "9.4.0-9.0.0-r1", fileSuffix: "9.4.0-mingw-w64-9.0.0-r1" },
34+
"9.4.0": { releaseName: "9.4.0-9.0.0-r1", fileSuffix: "9.4.0-mingw-w64-9.0.0-r1" },
3135
} as Record<string, MingwInfo | undefined>
3236

3337
function getGccPackageInfo(version: string, platform: NodeJS.Platform, arch: string): PackageInfo {
@@ -38,13 +42,13 @@ function getGccPackageInfo(version: string, platform: NodeJS.Platform, arch: str
3842
throw new Error(`mingw version ${version} is not supported`)
3943
}
4044
const mingwArch = arch === "ia32" ? "i686" : "x86_64"
41-
const llvmVersionString = mingwInfo.llvmVersion !== undefined ? `${mingwInfo.llvmVersion}-` : ""
45+
const exceptionModel: "seh" | "dwarf" = "seh" // SEH is native windows exception model https://github.com/brechtsanders/winlibs_mingw/issues/4#issuecomment-599296483
4246
return {
4347
binRelativeDir: "./bin",
4448
binFileName: addBinExtension("g++"),
4549
extractedFolderName: "mingw64",
4650
extractFunction: extract7Zip,
47-
url: `https://github.com/brechtsanders/winlibs_mingw/releases/download/${version}-${llvmVersionString}${mingwInfo.mingwVersion}-${mingwInfo.runtime}-${mingwInfo.number}/winlibs-${mingwArch}-posix-seh-gcc-${version}-mingw-w64${mingwInfo.runtime}-${mingwInfo.mingwVersion}-${mingwInfo.number}.7z`,
51+
url: `https://github.com/brechtsanders/winlibs_mingw/releases/download/${mingwInfo.releaseName}/winlibs-${mingwArch}-posix-${exceptionModel}-gcc-${mingwInfo.fileSuffix}.7z`,
4852
}
4953
}
5054
default:
@@ -63,7 +67,7 @@ export async function setupGcc(version: string, setupDir: string, arch: string)
6367
try {
6468
installationInfo = await setupBin("g++", version, getGccPackageInfo, setupDir, arch)
6569
} catch (err) {
66-
notice(`Failed to download g++ binary. ${err}. Falling back to chocolatey.`)
70+
info(`Failed to download g++ binary. ${err}. Falling back to chocolatey.`)
6771
installationInfo = await setupChocoMingw(version, arch)
6872
}
6973
break

0 commit comments

Comments
 (0)