2021-12-07 19:30:33 +08:00
|
|
|
import execa from "execa"
|
|
|
|
// import { join } from "path"
|
2022-01-20 03:58:10 +08:00
|
|
|
// import { untildify_user as untildify } from "./utils/path/untildify"
|
2021-12-07 19:30:33 +08:00
|
|
|
// import { setupCmake } from "../cmake/cmake"
|
2022-01-31 09:23:09 +08:00
|
|
|
import { execSudo } from "../utils/exec/sudo"
|
2021-12-07 19:30:33 +08:00
|
|
|
import { addBinExtension } from "../utils/extension/extension"
|
|
|
|
import { extractTarByExe } from "../utils/setup/extract"
|
|
|
|
import { setupAptPack } from "../utils/setup/setupAptPack"
|
|
|
|
import { PackageInfo, setupBin } from "../utils/setup/setupBin"
|
|
|
|
|
|
|
|
function getKcovPackageInfo(version: string): PackageInfo {
|
|
|
|
const version_number = parseInt(version.replace(/^v/, ""), 10)
|
|
|
|
if (version_number === 38) {
|
|
|
|
// eslint-disable-next-line no-param-reassign
|
|
|
|
version = "v38"
|
|
|
|
}
|
|
|
|
if (version_number >= 39) {
|
|
|
|
return {
|
|
|
|
url: `https://github.com/SimonKagstrom/kcov/releases/download/${version}/kcov-amd64.tar.gz`,
|
|
|
|
extractedFolderName: "",
|
|
|
|
binRelativeDir: "usr/local/bin",
|
|
|
|
binFileName: addBinExtension("kcov"),
|
2022-01-31 10:36:25 +08:00
|
|
|
extractFunction: extractTarByExe,
|
2021-12-07 19:30:33 +08:00
|
|
|
}
|
|
|
|
} else {
|
|
|
|
return {
|
|
|
|
url: `https://github.com/SimonKagstrom/kcov/archive/refs/tags/${version}.tar.gz`,
|
|
|
|
extractedFolderName: `kcov-${version_number}`,
|
|
|
|
binRelativeDir: "build/",
|
|
|
|
binFileName: addBinExtension("kcov"),
|
|
|
|
extractFunction: async (file: string, dest: string): Promise<string> => {
|
|
|
|
const out = await extractTarByExe(file, dest)
|
|
|
|
// build after extraction using CMake
|
2022-01-20 03:58:10 +08:00
|
|
|
// await setupCmake("3.22.0", join(untildify(""), "cmake"), "")
|
2021-12-07 19:30:33 +08:00
|
|
|
await setupAptPack("libdw-dev")
|
|
|
|
await setupAptPack("libcurl4-openssl-dev")
|
|
|
|
await execa("cmake", ["-S", "./", "-B", "./build"], { cwd: out })
|
|
|
|
await execa("cmake", ["--build", "./build", "--config", "Release"], { cwd: out })
|
2022-01-31 09:23:09 +08:00
|
|
|
await execSudo("cmake", ["--install", "./build"], out)
|
2021-12-07 19:30:33 +08:00
|
|
|
return out
|
|
|
|
},
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export async function setupKcov(version: string, setupDir: string, arch: string) {
|
|
|
|
switch (process.platform) {
|
|
|
|
case "linux": {
|
2022-01-31 07:33:22 +08:00
|
|
|
const installationInfo = await setupBin("kcov", version, getKcovPackageInfo, setupDir, arch)
|
2021-12-07 19:30:33 +08:00
|
|
|
return installationInfo
|
|
|
|
}
|
|
|
|
default: {
|
|
|
|
throw new Error(`Unsupported platform for ${arch}`)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|