3
0
Fork 0
mirror of https://gitea.com/actions/setup-python.git synced 2024-11-23 02:29:35 +01:00

update pypy3 to point to 3.6 (#164)

This commit is contained in:
Maxim Lobanov 2020-12-08 00:59:14 +03:00 committed by GitHub
parent 723e46dad7
commit 3b3f2de1b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 37 additions and 9 deletions

View file

@ -90,3 +90,24 @@ jobs:
- name: Run simple code - name: Run simple code
run: python -c 'import math; print(math.factorial(5))' run: python -c 'import math; print(math.factorial(5))'
setup-pypy:
name: Setup PyPy ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest, ubuntu-16.04, ubuntu-18.04]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: setup-python pypy3
uses: ./
with:
python-version: 'pypy3'
- name: setup-python pypy2
uses: ./
with:
python-version: 'pypy2'

13
dist/index.js vendored
View file

@ -6445,7 +6445,7 @@ function installPython(workingDirectory) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
const options = { const options = {
cwd: workingDirectory, cwd: workingDirectory,
env: Object.assign(Object.assign({}, process.env), IS_LINUX && { 'LD_LIBRARY_PATH': path.join(workingDirectory, 'lib') }), env: Object.assign(Object.assign({}, process.env), (IS_LINUX && { LD_LIBRARY_PATH: path.join(workingDirectory, 'lib') })),
silent: true, silent: true,
listeners: { listeners: {
stdout: (data) => { stdout: (data) => {
@ -6718,7 +6718,7 @@ function binDir(installDir) {
// For example, PyPy 7.0 contains Python 2.7, 3.5, and 3.6-alpha. // For example, PyPy 7.0 contains Python 2.7, 3.5, and 3.6-alpha.
// We only care about the Python version, so we don't use the PyPy version for the tool cache. // We only care about the Python version, so we don't use the PyPy version for the tool cache.
function usePyPy(majorVersion, architecture) { function usePyPy(majorVersion, architecture) {
const findPyPy = tc.find.bind(undefined, 'PyPy', majorVersion.toString()); const findPyPy = tc.find.bind(undefined, 'PyPy', majorVersion);
let installDir = findPyPy(architecture); let installDir = findPyPy(architecture);
if (!installDir && IS_WINDOWS) { if (!installDir && IS_WINDOWS) {
// PyPy only precompiles binaries for x86, but the architecture parameter defaults to x64. // PyPy only precompiles binaries for x86, but the architecture parameter defaults to x64.
@ -6765,7 +6765,9 @@ function useCpythonVersion(version, architecture) {
} }
core.exportVariable('pythonLocation', installDir); core.exportVariable('pythonLocation', installDir);
if (IS_LINUX) { if (IS_LINUX) {
const libPath = (process.env.LD_LIBRARY_PATH) ? `:${process.env.LD_LIBRARY_PATH}` : ''; const libPath = process.env.LD_LIBRARY_PATH
? `:${process.env.LD_LIBRARY_PATH}`
: '';
const pyLibPath = path.join(installDir, 'lib'); const pyLibPath = path.join(installDir, 'lib');
if (!libPath.split(':').includes(pyLibPath)) { if (!libPath.split(':').includes(pyLibPath)) {
core.exportVariable('LD_LIBRARY_PATH', pyLibPath + libPath); core.exportVariable('LD_LIBRARY_PATH', pyLibPath + libPath);
@ -6819,9 +6821,10 @@ function findPythonVersion(version, architecture) {
return __awaiter(this, void 0, void 0, function* () { return __awaiter(this, void 0, void 0, function* () {
switch (version.toUpperCase()) { switch (version.toUpperCase()) {
case 'PYPY2': case 'PYPY2':
return usePyPy(2, architecture); return usePyPy('2', architecture);
case 'PYPY3': case 'PYPY3':
return usePyPy(3, architecture); // keep pypy3 pointing to 3.6 for backward compatibility
return usePyPy('3.6', architecture);
default: default:
return yield useCpythonVersion(version, architecture); return yield useCpythonVersion(version, architecture);
} }

View file

@ -37,8 +37,11 @@ function binDir(installDir: string): string {
// A particular version of PyPy may contain one or more versions of the Python interpreter. // A particular version of PyPy may contain one or more versions of the Python interpreter.
// For example, PyPy 7.0 contains Python 2.7, 3.5, and 3.6-alpha. // For example, PyPy 7.0 contains Python 2.7, 3.5, and 3.6-alpha.
// We only care about the Python version, so we don't use the PyPy version for the tool cache. // We only care about the Python version, so we don't use the PyPy version for the tool cache.
function usePyPy(majorVersion: 2 | 3, architecture: string): InstalledVersion { function usePyPy(
const findPyPy = tc.find.bind(undefined, 'PyPy', majorVersion.toString()); majorVersion: '2' | '3.6',
architecture: string
): InstalledVersion {
const findPyPy = tc.find.bind(undefined, 'PyPy', majorVersion);
let installDir: string | null = findPyPy(architecture); let installDir: string | null = findPyPy(architecture);
if (!installDir && IS_WINDOWS) { if (!installDir && IS_WINDOWS) {
@ -188,9 +191,10 @@ export async function findPythonVersion(
): Promise<InstalledVersion> { ): Promise<InstalledVersion> {
switch (version.toUpperCase()) { switch (version.toUpperCase()) {
case 'PYPY2': case 'PYPY2':
return usePyPy(2, architecture); return usePyPy('2', architecture);
case 'PYPY3': case 'PYPY3':
return usePyPy(3, architecture); // keep pypy3 pointing to 3.6 for backward compatibility
return usePyPy('3.6', architecture);
default: default:
return await useCpythonVersion(version, architecture); return await useCpythonVersion(version, architecture);
} }