mirror of https://github.com/aminya/setup-cpp
Merge pull request #9 from aminya/fixes
This commit is contained in:
commit
cda21f972d
|
@ -76,6 +76,7 @@ Download the `setup_cpp.js` file form [here](https://github.com/aminya/setup-cpp
|
|||
On Windows:
|
||||
|
||||
Open the shell as admin, download via `curl`, then install
|
||||
|
||||
```ps1
|
||||
# open shell as admin
|
||||
curl -LJO "https://github.com/aminya/setup-cpp/releases/download/v0.4.0/setup_cpp.js"
|
||||
|
@ -205,4 +206,4 @@ jobs:
|
|||
docker build -f ./building/docker/debian.dockerfile -t setup_cpp .
|
||||
env:
|
||||
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
|
||||
```
|
||||
```
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -36,7 +36,7 @@
|
|||
"execa": "^5.1.1",
|
||||
"hasha": "^5.2.2",
|
||||
"mri": "^1.2.0",
|
||||
"msvc-dev-cmd": " https://github.com/aminya/msvc-dev-cmd",
|
||||
"msvc-dev-cmd": "git://github.com/aminya/msvc-dev-cmd#9f672c1",
|
||||
"semver": "^7.3.5",
|
||||
"setup-python": "https://github.com/actions/setup-python",
|
||||
"untildify": "^4.0.0",
|
||||
|
|
|
@ -22,7 +22,7 @@ specifiers:
|
|||
hasha: ^5.2.2
|
||||
jest: ^27.4.2
|
||||
mri: ^1.2.0
|
||||
msvc-dev-cmd: ' https://github.com/aminya/msvc-dev-cmd'
|
||||
msvc-dev-cmd: git://github.com/aminya/msvc-dev-cmd#9f672c1
|
||||
npm-run-all2: ^5.0.2
|
||||
parcel: ^2.0.1
|
||||
prettier-config-atomic: ^3.0.1
|
||||
|
@ -43,7 +43,7 @@ dependencies:
|
|||
execa: 5.1.1
|
||||
hasha: 5.2.2
|
||||
mri: 1.2.0
|
||||
msvc-dev-cmd: github.com/aminya/msvc-dev-cmd/9f672c1c3d12ea8156d8d0e53543791491291aec
|
||||
msvc-dev-cmd: github.com/aminya/msvc-dev-cmd/9f672c1
|
||||
semver: 7.3.5
|
||||
setup-python: github.com/actions/setup-python/f38219332975fe8f9c04cca981d674bf22aea1d3
|
||||
untildify: 4.0.0
|
||||
|
@ -8619,8 +8619,8 @@ packages:
|
|||
semver: 7.3.5
|
||||
dev: false
|
||||
|
||||
github.com/aminya/msvc-dev-cmd/9f672c1c3d12ea8156d8d0e53543791491291aec:
|
||||
resolution: {tarball: https://codeload.github.com/aminya/msvc-dev-cmd/tar.gz/9f672c1c3d12ea8156d8d0e53543791491291aec}
|
||||
github.com/aminya/msvc-dev-cmd/9f672c1:
|
||||
resolution: {tarball: https://codeload.github.com/aminya/msvc-dev-cmd/tar.gz/9f672c1}
|
||||
name: msvc-dev-cmd
|
||||
version: 1.1.1
|
||||
dependencies:
|
||||
|
|
|
@ -34,18 +34,34 @@ export async function setupGcc(version: string, _setupDir: string, arch: string)
|
|||
}
|
||||
case "linux": {
|
||||
if (arch === "x64") {
|
||||
binDir = (await setupAptPack("g++", version, "ppa:ubuntu-toolchain-r/test")).binDir
|
||||
binDir = (
|
||||
await setupAptPack("g++", version, [
|
||||
"ppa:ubuntu-toolchain-r/test",
|
||||
"'deb http://dk.archive.ubuntu.com/ubuntu/ xenial mai'",
|
||||
"'deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe'",
|
||||
])
|
||||
).binDir
|
||||
} else {
|
||||
info(`Install g++-multilib because gcc for ${arch} was requested`)
|
||||
binDir = (await setupAptPack("g++-multilib", version, "ppa:ubuntu-toolchain-r/test")).binDir
|
||||
binDir = (
|
||||
await setupAptPack("g++-multilib", version, [
|
||||
"ppa:ubuntu-toolchain-r/test",
|
||||
"'deb http://dk.archive.ubuntu.com/ubuntu/ xenial mai'",
|
||||
"'deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe'",
|
||||
])
|
||||
).binDir
|
||||
}
|
||||
break
|
||||
}
|
||||
// TODO support bare-metal
|
||||
// TODO support bare-metal (need to support passing it as the input)
|
||||
// TODO support abi
|
||||
// case "none": {
|
||||
// if (arch === "arm" || arch === "arm64") {
|
||||
// return setupAptPack("gcc-arm-none-eabi", version, "ppa:ubuntu-toolchain-r/test")
|
||||
// return setupAptPack("gcc-arm-none-eabi", version, [
|
||||
// "ppa:ubuntu-toolchain-r/test",
|
||||
// "'deb http://dk.archive.ubuntu.com/ubuntu/ xenial mai'",
|
||||
// "'deb http://dk.archive.ubuntu.com/ubuntu/ xenial universe'",
|
||||
// ])
|
||||
// } else {
|
||||
// throw new Error(`Unsupported platform for ${arch}`)
|
||||
// }
|
||||
|
|
|
@ -5,7 +5,7 @@ import semverMajor from "semver/functions/major"
|
|||
import { isValidUrl } from "../utils/http/validate_url"
|
||||
import { InstallationInfo, PackageInfo, setupBin } from "../utils/setup/setupBin"
|
||||
import { extractExe, extractTarByExe } from "../utils/setup/extract"
|
||||
import { getSpecificVersionAndUrl, getVersions } from "../utils/setup/version"
|
||||
import { getSpecificVersionAndUrl, getVersions, semverCoerceIfInvalid } from "../utils/setup/version"
|
||||
import { setupMacOSSDK } from "../macos-sdk/macos-sdk"
|
||||
import { addBinExtension } from "../utils/extension/extension"
|
||||
|
||||
|
@ -244,7 +244,9 @@ export async function setupLLVM(
|
|||
return installationInfo
|
||||
}
|
||||
|
||||
export async function activateLLVM(directory: string, version: string) {
|
||||
export async function activateLLVM(directory: string, versionGiven: string) {
|
||||
const version = semverCoerceIfInvalid(versionGiven)
|
||||
|
||||
const lib = path.join(directory, "lib")
|
||||
|
||||
const ld = process.env.LD_LIBRARY_PATH ?? ""
|
||||
|
|
18
src/main.ts
18
src/main.ts
|
@ -18,7 +18,6 @@ import untildify from "untildify"
|
|||
import { isCI } from "./utils/env/isci"
|
||||
|
||||
import semverValid from "semver/functions/valid"
|
||||
// import semverCoerce from "semver/functions/coerce"
|
||||
import { getVersion } from "./default_versions"
|
||||
import { setupGcc } from "./gcc/gcc"
|
||||
import { InstallationInfo } from "./utils/setup/setupBin"
|
||||
|
@ -172,6 +171,13 @@ export async function main(args: string[]): Promise<number> {
|
|||
await setupMSVC(getVersion("msvc", version) as string, join(setupCppDir, "msvc"), arch)
|
||||
break
|
||||
}
|
||||
case "appleclang":
|
||||
case "applellvm": {
|
||||
core.warning("Assuming apple-clang is already installed")
|
||||
core.exportVariable("CC", "clang")
|
||||
core.exportVariable("CXX", "clang++")
|
||||
break
|
||||
}
|
||||
default: {
|
||||
errorMessages.push(`Unsupported compiler ${compiler}`)
|
||||
}
|
||||
|
@ -227,16 +233,6 @@ export function getCompilerInfo(maybeCompiler: string) {
|
|||
if (semverValid(maybeVersion) !== null) {
|
||||
return { compiler, version: maybeVersion }
|
||||
} else {
|
||||
// version coercion
|
||||
// try {
|
||||
// // find the semver version of an integer
|
||||
// const coercedVersion = semverCoerce(maybeVersion)
|
||||
// if (coercedVersion !== null) {
|
||||
// return { compiler, version: coercedVersion.version }
|
||||
// }
|
||||
// } catch (err) {
|
||||
// // handled in the end
|
||||
// }
|
||||
warning(`Invalid semver version ${maybeVersion} used for the compiler.`)
|
||||
return { compiler, version: maybeVersion }
|
||||
}
|
||||
|
|
|
@ -8,15 +8,18 @@ let didUpdate: boolean = false
|
|||
export async function setupAptPack(
|
||||
name: string,
|
||||
version?: string,
|
||||
repository: boolean | string = true
|
||||
repositories: boolean | string[] = true
|
||||
): Promise<InstallationInfo> {
|
||||
const apt = "apt-get"
|
||||
|
||||
if (typeof repository === "string") {
|
||||
await execaSudo("add-apt-repository", ["--update", "-y", repository])
|
||||
if (Array.isArray(repositories)) {
|
||||
for (const repo of repositories) {
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
await execaSudo("add-apt-repository", ["--update", "-y", repo])
|
||||
}
|
||||
}
|
||||
|
||||
if (!didUpdate || repository === true) {
|
||||
if (!didUpdate || repositories === true) {
|
||||
await execaSudo(apt, ["update", "-y"])
|
||||
didUpdate = true
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import { isValidUrl } from "../http/validate_url"
|
||||
import semverCompare from "semver/functions/compare"
|
||||
import semverCoerce from "semver/functions/coerce"
|
||||
import semverValid from "semver/functions/valid"
|
||||
import { getExecOutput } from "@actions/exec"
|
||||
|
||||
/**
|
||||
|
@ -84,3 +86,20 @@ export async function isBinUptoDate(
|
|||
return false
|
||||
}
|
||||
}
|
||||
|
||||
/** Coerce the given version if it is invalid */
|
||||
export function semverCoerceIfInvalid(version: string) {
|
||||
if (semverValid(version) === null) {
|
||||
// version coercion
|
||||
try {
|
||||
// find the semver version of an integer
|
||||
const coercedVersion = semverCoerce(version)
|
||||
if (coercedVersion !== null) {
|
||||
return coercedVersion.version
|
||||
}
|
||||
} catch (err) {
|
||||
// handled below
|
||||
}
|
||||
}
|
||||
return version
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue