8000 fix: install PyPy on Linux ARM64 · actions/setup-python@c928d9c · GitHub
[go: up one dir, main page]

Skip to content

Commit c928d9c

Browse files
committed
fix: install PyPy on Linux ARM64
1 parent d0fe785 commit c928d9c

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

dist/setup/index.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -91554,28 +91554,33 @@ function pypyVersionToSemantic(versionSpec) {
9155491554
}
9155591555
exports.pypyVersionToSemantic = pypyVersionToSemantic;
9155691556
function isArchPresentForWindows(item, architecture) {
91557-
architecture = replaceX32toX86(architecture);
91557+
architecture = pypyArchitecture(architecture);
9155891558
return item.files.some((file) => utils_1.WINDOWS_PLATFORMS.includes(file.platform) && file.arch === architecture);
9155991559
}
9156091560
exports.isArchPresentForWindows = isArchPresentForWindows;
9156191561
function isArchPresentForMacOrLinux(item, architecture, platform) {
91562+
architecture = pypyArchitecture(architecture);
9156291563
return item.files.some((file) => file.arch === architecture && file.platform === platform);
9156391564
}
9156491565
exports.isArchPresentForMacOrLinux = isArchPresentForMacOrLinux;
9156591566
function findAssetForWindows(releases, architecture) {
91566-
architecture = replaceX32toX86(architecture);
91567+
architecture = pypyArchitecture(architecture);
9156791568
return releases.files.find((item) => utils_1.WINDOWS_PLATFORMS.includes(item.platform) && item.arch === architecture);
9156891569
}
9156991570
exports.findAssetForWindows = findAssetForWindows;
9157091571
function findAssetForMacOrLinux(releases, architecture, platform) {
91572+
architecture = pypyArchitecture(architecture);
9157191573
return releases.files.find((item) => item.arch === architecture && item.platform === platform);
9157291574
}
9157391575
exports.findAssetForMacOrLinux = findAssetForMacOrLinux;
91574-
function replaceX32toX86(architecture) {
91575-
// convert x32 to x86 because os.arch() returns x32 for 32-bit systems but PyPy releases json has x86 arch value.
91576-
if (architecture === 'x32') {
91576+
function pypyArchitecture(architecture) {
91577+
if (utils_1.IS_WINDOWS && architecture === 'x32') {
91578+
// convert x32 to x86 because os.arch() returns x32 for 32-bit systems but PyPy releases json has x86 arch value.
9157791579
architecture = 'x86';
9157891580
}
91581+
else if (utils_1.IS_LINUX && architecture === 'arm64') {
91582+
architecture = 'aarch64';
91583+
}
9157991584
return architecture;
9158091585
}
9158191586

src/install-pypy.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import * as exec from '@actions/exec';
88
import fs from 'fs';
99

1010
import {
11+
IS_LINUX,
1112
IS_WINDOWS,
1213
WINDOWS_PLATFORMS,
1314
IPyPyManifestRelease,
@@ -246,7 +247,7 @@ export function pypyVersionToSemantic(versionSpec: string) {
246247
}
247248

248249
export function isArchPresentForWindows(item: any, architecture: string) {
249-
architecture = replaceX32toX86(architecture);
250+
architecture = pypyArchitecture(architecture);
250251
return item.files.some(
251252
(file: any) =>
252253
WINDOWS_PLATFORMS.includes(file.platform) && file.arch === architecture
8000
@@ -258,13 +259,14 @@ export function isArchPresentForMacOrLinux(
258259
architecture: string,
259260
platform: string
260261
) {
262+
architecture = pypyArchitecture(architecture);
261263
return item.files.some(
262264
(file: any) => file.arch === architecture && file.platform === platform
263265
);
264266
}
265267

266268
export function findAssetForWindows(releases: any, architecture: string) {
267-
architecture = replaceX32toX86(architecture);
269+
architecture = pypyArchitecture(architecture);
268270
return releases.files.find(
269271
(item: any) =>
270272
WINDOWS_PLATFORMS.includes(item.platform) && item.arch === architecture
@@ -276,15 +278,18 @@ export function findAssetForMacOrLinux(
276278
architecture: string,
277279
platform: string
278280
) {
281+
architecture = pypyArchitecture(architecture);
279282
return releases.files.find(
280283
(item: any) => item.arch === architecture && item.platform === platform
281284
);
282285
}
283286

284-
function replaceX32toX86(architecture: string): string {
285-
// convert x32 to x86 because os.arch() returns x32 for 32-bit systems but PyPy releases json has x86 arch value.
286-
if (architecture === 'x32') {
287+
function pypyArchitecture(architecture: string): string {
288+
if (IS_WINDOWS && architecture === 'x32') {
289+
// convert x32 to x86 because os.arch() returns x32 for 32-bit systems but PyPy releases json has x86 arch value.
287290
architecture = 'x86';
291+
} else if (IS_LINUX && architecture === 'arm64') {
292+
architecture = 'aarch64';
288293
}
289294
return architecture;
290295
}

0 commit comments

Comments
 (0)
0