Skip to content

Commit 8e6c0ed

Browse files
committed
fix: strip components for windows LLVM tar.xz
1 parent 8ffe76c commit 8e6c0ed

File tree

6 files changed

+35
-32
lines changed

6 files changed

+35
-32
lines changed

dist/legacy/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/legacy/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.

dist/modern/setup-cpp.mjs

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

dist/modern/setup-cpp.mjs.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/llvm/llvm_url.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { loadAssetList, matchAsset } from "../utils/asset/load-assets.js"
77
import { arm64, armv7, powerpc64le, sparc64, sparcv9, x86, x86_64 } from "../utils/env/arch.js"
88
import { hasDnf } from "../utils/env/hasDnf.js"
99
import { ubuntuVersion } from "../utils/env/ubuntu_version.js"
10-
import { extractTarByExe, getArchiveType, getExtractFunction } from "../utils/setup/extract.js"
10+
import { ArchiveType, extractTarByExe, getArchiveType, getExtractFunction } from "../utils/setup/extract.js"
1111
import type { PackageInfo } from "../utils/setup/setupBin.js"
1212

1313
const dirname = typeof __dirname === "string" ? __dirname : path.dirname(fileURLToPath(import.meta.url))
@@ -20,16 +20,19 @@ export async function getLLVMPackageInfo(
2020
const url = await getLLVMAssetURL(platform, arch, version)
2121
info(`Downloading LLVM from ${url}`)
2222

23+
const archiveType = getArchiveType(url)
2324
return {
2425
url,
2526
extractedFolderName: "",
2627
binRelativeDir: "bin",
2728
binFileName: addExeExt("clang"),
28-
extractFunction: platform === "win32"
29-
? getExtractFunction(getArchiveType(url))
30-
: (file: string, dest: string) => {
29+
extractFunction: process.platform === "win32"
30+
&& (archiveType === ArchiveType.Tar || archiveType === ArchiveType.TarGz || archiveType === ArchiveType.TarXz)
31+
? (file: string, dest: string) => {
32+
// strip components to get the top folder on Windows
3133
return extractTarByExe(file, dest, 1)
32-
},
34+
}
35+
: getExtractFunction(archiveType),
3336
}
3437
}
3538

src/utils/setup/extract.ts

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ export function getExtractFunction(archiveType: ArchiveType) {
5454
switch (archiveType) {
5555
case ArchiveType.Tar:
5656
case ArchiveType.TarGz:
57-
return extractTarByExe
5857
case ArchiveType.TarXz:
5958
return extractTarByExe
6059
case ArchiveType.Zip:
@@ -160,36 +159,37 @@ export async function extractTarByExe(file: string, dest: string, stripComponent
160159
}
161160

162161
async function installTarDependencies(archiveType: ArchiveType) {
162+
if (process.platform !== "linux") {
163+
return
164+
}
165+
163166
info("Installing tar extraction dependencies")
164167

165168
switch (archiveType) {
166169
case ArchiveType.TarGz: {
167-
if (process.platform === "linux") {
168-
if (isArch()) {
169-
await setupPacmanPack("gzip")
170-
await setupPacmanPack("tar")
171-
} else if (hasDnf()) {
172-
await setupDnfPack([{ name: "gzip" }, { name: "tar" }])
173-
} else if (hasAptGet()) {
174-
await installAptPack([{ name: "gzip" }, { name: "tar" }])
175-
} else if (await hasApk()) {
176-
await installApkPack([{ name: "gzip" }, { name: "tar" }])
177-
}
170+
if (isArch()) {
171+
await setupPacmanPack("gzip")
172+
await setupPacmanPack("tar")
173+
} else if (hasDnf()) {
174+
await setupDnfPack([{ name: "gzip" }, { name: "tar" }])
175+
} else if (hasAptGet()) {
176+
await installAptPack([{ name: "gzip" }, { name: "tar" }])
177+
} else if (await hasApk()) {
178+
await installApkPack([{ name: "gzip" }, { name: "tar" }])
178179
}
180+
179181
return
180182
}
181183
case ArchiveType.TarXz: {
182-
if (process.platform === "linux") {
183-
if (isArch()) {
184-
await setupPacmanPack("xz")
185-
await setupPacmanPack("tar")
186-
} else if (hasDnf()) {
187-
await setupDnfPack([{ name: "xz" }, { name: "tar" }])
188-
} else if (hasAptGet()) {
189-
await installAptPack([{ name: "xz-utils" }, { name: "tar" }])
190-
} else if (await hasApk()) {
191-
await installApkPack([{ name: "xz" }, { name: "tar" }])
192-
}
184+
if (isArch()) {
185+
await setupPacmanPack("xz")
186+
await setupPacmanPack("tar")
187+
} else if (hasDnf()) {
188+
await setupDnfPack([{ name: "xz" }, { name: "tar" }])
189+
} else if (hasAptGet()) {
190+
await installAptPack([{ name: "xz-utils" }, { name: "tar" }])
191+
} else if (await hasApk()) {
192+
await installApkPack([{ name: "xz" }, { name: "tar" }])
193193
}
194194
return
195195
}

0 commit comments

Comments
 (0)