feat: add python installation

ci: enable submodules in the ci

Update setup-python
This commit is contained in:
Amin Yahyaabadi 2021-09-14 15:23:45 -05:00
parent 3defe39318
commit 79e1c66874
12 changed files with 55 additions and 3 deletions

View File

@ -1,4 +1,4 @@
{
"extends": "eslint-config-atomic",
"ignorePatterns": ["dist/", "node_modules/"]
"ignorePatterns": ["dist/", "node_modules/", "src/python/setup-python/"]
}

View File

@ -23,6 +23,8 @@ jobs:
- 6
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Cache
uses: actions/cache@v2

4
.gitmodules vendored Normal file
View File

@ -0,0 +1,4 @@
[submodule "src/python/setup-python"]
path = src/python/setup-python
url = https://github.com/actions/setup-python
branch = main

View File

@ -4,3 +4,4 @@ package-lock.json
CHANGELOG.md
dist
stats.html
src/python/setup-python/

View File

@ -4,6 +4,7 @@ setup-cpp reused some code from the following projects:
- [install-cmake](https://github.com/Symbitic/install-cmake/blob/master/LICENSE.md): MIT
- [get-cmake](https://github.com/lukka/get-cmake/blob/main/LICENSE.txt): MIT
- [gha-setup-ninja](https://github.com/seanmiddleditch/gha-setup-ninja): MIT
- [setup-python](https://github.com/actions/setup-python): MIT
This package also uses the depedencies listed in package.json. You can get the list of their licenses using the following command:
```

View File

@ -19,6 +19,7 @@ The package will be usable from any environment (locally, GitHub Actions, etc).
- [x] setup conan
- [x] setup meson
- [x] setup gcovr
- [x] setup python
- [ ] setup msvc
- [ ] setup gcc/mingw
- [ ] setup vcpkg

View File

@ -26,6 +26,10 @@ inputs:
gcovr:
description: "The gcovr version to install."
required: false
python:
description: "The pyhon version to install."
default: "3.x"
required: false
runs:
using: "node12"

View File

@ -11,7 +11,7 @@
"clean": "shx rm -rf dist",
"dev": "cross-env NODE_ENV=development parcel watch",
"build": "cross-env NODE_ENV=production parcel build --detailed-report",
"prepare": "npm run build",
"prepare": "git submodule update --init --recursive && npm run build",
"test.format": "prettier . --check",
"test.lint": "eslint .",
"test.tsc": "tsc --noEmit",

View File

@ -5,6 +5,7 @@ import { setupGcovr } from "./gcovr/gcovr"
import { setupLLVM } from "./llvm/llvm"
import { setupMeson } from "./meson/meson"
import { setupNinja } from "./ninja/ninja"
import { setupPython } from "./python/python"
function maybeGetInput(key: string) {
const value = core.getInput(key)
@ -15,6 +16,7 @@ function maybeGetInput(key: string) {
}
export async function main(): Promise<number> {
const arch = core.getInput("architecture") || process.arch
const setupCppDir = process.env.SETUP_CPP_DIR ?? "~/setup_cpp"
try {
// setup cmake
@ -29,6 +31,12 @@ export async function main(): Promise<number> {
await setupNinja(ninjaVersion, setupCppDir)
}
// setup python (required for conan, meson, gcovr, etc.)
const pythonVersion = maybeGetInput("python")
if (pythonVersion !== undefined) {
await setupPython(pythonVersion, arch)
}
// setup conan
const conanVersion = maybeGetInput("conan")
if (conanVersion !== undefined) {

29
src/python/python.ts Normal file
View File

@ -0,0 +1,29 @@
import * as core from "@actions/core"
import * as finder from "./setup-python/src/find-python"
import * as finderPyPy from "./setup-python/src/find-pypy"
import * as path from "path"
import * as os from "os"
function isPyPyVersion(versionSpec: string) {
return versionSpec.startsWith("pypy-")
}
export async function setupPython(version?: string, arch: string = os.arch()) {
try {
if (version !== undefined && version !== "") {
if (isPyPyVersion(version)) {
const installed = await finderPyPy.findPyPyVersion(version, arch)
core.info(
`Successfully setup PyPy ${installed.resolvedPyPyVersion} with Python (${installed.resolvedPythonVersion})`
)
} else {
const installed = await finder.findPythonVersion(version, arch)
core.info(`Successfully setup ${installed.impl} (${installed.version})`)
}
}
const matchersPath = path.join(__dirname, "..", ".github")
core.info(`##[add-matcher]${path.join(matchersPath, "python.json")}`)
} catch (err) {
core.setFailed((err as Error).message)
}
}

@ -0,0 +1 @@
Subproject commit 2d803e7feaf26323835f529f28efa6400f18ad01

View File

@ -27,5 +27,6 @@
"outDir": "./dist"
},
"compileOnSave": false,
"include": ["./src"]
"include": ["./src"],
"exclude": ["./src/python/setup-python"]
}