mirror of https://github.com/actions/setup-python
Create missing `pypyX.Y` symlinks (#347)
`pypyX.Y.exe` executables are missing from PyPy archives on Windows before v7.3.9 (X.Y < 3.9) `pypy2.7` symlinks are also missing from macOS/Linux PyPy archives before v7.3.9 relates to #346
This commit is contained in:
parent
c36dc43e7b
commit
1ce308808a
|
@ -44,3 +44,17 @@ 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))'
|
||||||
|
|
||||||
|
- name: Assert PyPy is running
|
||||||
|
run: |
|
||||||
|
import platform
|
||||||
|
assert platform.python_implementation().lower() == "pypy"
|
||||||
|
shell: python
|
||||||
|
|
||||||
|
- name: Assert expected binaries (or symlinks) are present
|
||||||
|
run: |
|
||||||
|
EXECUTABLE=${{ matrix.pypy }}
|
||||||
|
EXECUTABLE=${EXECUTABLE/-/} # remove the first '-' in "pypy-X.Y" -> "pypyX.Y" to match executable name
|
||||||
|
EXECUTABLE=${EXECUTABLE%%-*} # remove any -* suffixe
|
||||||
|
${EXECUTABLE} --version
|
||||||
|
shell: bash
|
||||||
|
|
|
@ -10283,11 +10283,14 @@ function createPyPySymlink(pypyBinaryPath, pythonVersion) {
|
||||||
return __awaiter(this, void 0, void 0, function* () {
|
return __awaiter(this, void 0, void 0, function* () {
|
||||||
const version = semver.coerce(pythonVersion);
|
const version = semver.coerce(pythonVersion);
|
||||||
const pythonBinaryPostfix = semver.major(version);
|
const pythonBinaryPostfix = semver.major(version);
|
||||||
|
const pythonMinor = semver.minor(version);
|
||||||
const pypyBinaryPostfix = pythonBinaryPostfix === 2 ? '' : '3';
|
const pypyBinaryPostfix = pythonBinaryPostfix === 2 ? '' : '3';
|
||||||
|
const pypyMajorMinorBinaryPostfix = `${pythonBinaryPostfix}.${pythonMinor}`;
|
||||||
let binaryExtension = utils_1.IS_WINDOWS ? '.exe' : '';
|
let binaryExtension = utils_1.IS_WINDOWS ? '.exe' : '';
|
||||||
core.info('Creating symlinks...');
|
core.info('Creating symlinks...');
|
||||||
utils_1.createSymlinkInFolder(pypyBinaryPath, `pypy${pypyBinaryPostfix}${binaryExtension}`, `python${pythonBinaryPostfix}${binaryExtension}`, true);
|
utils_1.createSymlinkInFolder(pypyBinaryPath, `pypy${pypyBinaryPostfix}${binaryExtension}`, `python${pythonBinaryPostfix}${binaryExtension}`, true);
|
||||||
utils_1.createSymlinkInFolder(pypyBinaryPath, `pypy${pypyBinaryPostfix}${binaryExtension}`, `python${binaryExtension}`, true);
|
utils_1.createSymlinkInFolder(pypyBinaryPath, `pypy${pypyBinaryPostfix}${binaryExtension}`, `python${binaryExtension}`, true);
|
||||||
|
utils_1.createSymlinkInFolder(pypyBinaryPath, `pypy${pypyBinaryPostfix}${binaryExtension}`, `pypy${pypyMajorMinorBinaryPostfix}${binaryExtension}`, true);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function installPip(pythonLocation) {
|
function installPip(pythonLocation) {
|
||||||
|
|
|
@ -98,7 +98,9 @@ async function createPyPySymlink(
|
||||||
) {
|
) {
|
||||||
const version = semver.coerce(pythonVersion)!;
|
const version = semver.coerce(pythonVersion)!;
|
||||||
const pythonBinaryPostfix = semver.major(version);
|
const pythonBinaryPostfix = semver.major(version);
|
||||||
|
const pythonMinor = semver.minor(version);
|
||||||
const pypyBinaryPostfix = pythonBinaryPostfix === 2 ? '' : '3';
|
const pypyBinaryPostfix = pythonBinaryPostfix === 2 ? '' : '3';
|
||||||
|
const pypyMajorMinorBinaryPostfix = `${pythonBinaryPostfix}.${pythonMinor}`;
|
||||||
let binaryExtension = IS_WINDOWS ? '.exe' : '';
|
let binaryExtension = IS_WINDOWS ? '.exe' : '';
|
||||||
|
|
||||||
core.info('Creating symlinks...');
|
core.info('Creating symlinks...');
|
||||||
|
@ -115,6 +117,13 @@ async function createPyPySymlink(
|
||||||
`python${binaryExtension}`,
|
`python${binaryExtension}`,
|
||||||
true
|
true
|
||||||
);
|
);
|
||||||
|
|
||||||
|
createSymlinkInFolder(
|
||||||
|
pypyBinaryPath,
|
||||||
|
`pypy${pypyBinaryPostfix}${binaryExtension}`,
|
||||||
|
`pypy${pypyMajorMinorBinaryPostfix}${binaryExtension}`,
|
||||||
|
true
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function installPip(pythonLocation: string) {
|
async function installPip(pythonLocation: string) {
|
||||||
|
|
Loading…
Reference in New Issue