Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 8bcd256

Browse filesBrowse files
author
Vladimir Safonkin
authored
Add architecture input check for PyPy for Windows platform (actions#520)
* Revert cache index.js * build cache index file * Refactor * Debug * Debug * Debug * Debug * Debug * Debug * Debug * Debug * Format code * Rebuild dist * Minor refactor * Format code * Minor fixes * Check platform firstly
1 parent 13ae5bb commit 8bcd256
Copy full SHA for 8bcd256

File tree

Expand file treeCollapse file tree

2 files changed

+31
-17
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+31
-17
lines changed

‎dist/setup/index.js

Copy file name to clipboardExpand all lines: dist/setup/index.js
+15-8Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66577,7 +66577,7 @@ function findRelease(releases, pythonVersion, pypyVersion, architecture) {
6657766577
semver.satisfies(pypyVersionToSemantic(item.pypy_version), pypyVersion);
6657866578
const isArchPresent = item.files &&
6657966579
(utils_1.IS_WINDOWS
66580-
? isArchPresentForWindows(item)
66580+
? isArchPresentForWindows(item, architecture)
6658166581
: isArchPresentForMacOrLinux(item, architecture, process.platform));
6658266582
return isPythonVersionSatisfied && isPyPyVersionSatisfied && isArchPresent;
6658366583
});
@@ -66590,7 +66590,7 @@ function findRelease(releases, pythonVersion, pypyVersion, architecture) {
6659066590
});
6659166591
const foundRelease = sortedReleases[0];
6659266592
const foundAsset = utils_1.IS_WINDOWS
66593-
? findAssetForWindows(foundRelease)
66593+
? findAssetForWindows(foundRelease, architecture)
6659466594
: findAssetForMacOrLinux(foundRelease, architecture, process.platform);
6659566595
return {
6659666596
foundAsset,
@@ -66613,24 +66613,31 @@ function pypyVersionToSemantic(versionSpec) {
6661366613
return versionSpec.replace(prereleaseVersion, '$1-$2.$3');
6661466614
}
6661566615
exports.pypyVersionToSemantic = pypyVersionToSemantic;
66616-
function isArchPresentForWindows(item) {
66617-
return item.files.some((file) => utils_1.WINDOWS_ARCHS.includes(file.arch) &&
66618-
utils_1.WINDOWS_PLATFORMS.includes(file.platform));
66616+
function isArchPresentForWindows(item, architecture) {
66617+
architecture = replaceX32toX86(architecture);
66618+
return item.files.some((file) => utils_1.WINDOWS_PLATFORMS.includes(file.platform) && file.arch === architecture);
6661966619
}
6662066620
exports.isArchPresentForWindows = isArchPresentForWindows;
6662166621
function isArchPresentForMacOrLinux(item, architecture, platform) {
6662266622
return item.files.some((file) => file.arch === architecture && file.platform === platform);
6662366623
}
6662466624
exports.isArchPresentForMacOrLinux = isArchPresentForMacOrLinux;
66625-
function findAssetForWindows(releases) {
66626-
return releases.files.find((item) => utils_1.WINDOWS_ARCHS.includes(item.arch) &&
66627-
utils_1.WINDOWS_PLATFORMS.includes(item.platform));
66625+
function findAssetForWindows(releases, architecture) {
66626+
architecture = replaceX32toX86(architecture);
66627+
return releases.files.find((item) => utils_1.WINDOWS_PLATFORMS.includes(item.platform) && item.arch === architecture);
6662866628
}
6662966629
exports.findAssetForWindows = findAssetForWindows;
6663066630
function findAssetForMacOrLinux(releases, architecture, platform) {
6663166631
return releases.files.find((item) => item.arch === architecture && item.platform === platform);
6663266632
}
6663366633
exports.findAssetForMacOrLinux = findAssetForMacOrLinux;
66634+
function replaceX32toX86(architecture) {
66635+
// convert x32 to x86 because os.arch() returns x32 for 32-bit systems but PyPy releases json has x86 arch value.
66636+
if (architecture === 'x32') {
66637+
architecture = 'x86';
66638+
}
66639+
return architecture;
66640+
}
6663466641

6663566642

6663666643
/***/ }),

‎src/install-pypy.ts

Copy file name to clipboardExpand all lines: src/install-pypy.ts
+16-9Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import fs from 'fs';
88

99
import {
1010
IS_WINDOWS,
11-
WINDOWS_ARCHS,
1211
WINDOWS_PLATFORMS,
1312
IPyPyManifestRelease,
1413
createSymlinkInFolder,
@@ -157,7 +156,7 @@ export function findRelease(
157156
const isArchPresent =
158157
item.files &&
159158
(IS_WINDOWS
160-
? isArchPresentForWindows(item)
159+
? isArchPresentForWindows(item, architecture)
161160
: isArchPresentForMacOrLinux(item, architecture, process.platform));
162161
return isPythonVersionSatisfied && isPyPyVersionSatisfied && isArchPresent;
163162
});
@@ -181,7 +180,7 @@ export function findRelease(
181180

182181
const foundRelease = sortedReleases[0];
183182
const foundAsset = IS_WINDOWS
184-
? findAssetForWindows(foundRelease)
183+
? findAssetForWindows(foundRelease, architecture)
185184
: findAssetForMacOrLinux(foundRelease, architecture, process.platform);
186185

187186
return {
@@ -205,11 +204,11 @@ export function pypyVersionToSemantic(versionSpec: string) {
205204
return versionSpec.replace(prereleaseVersion, '$1-$2.$3');
206205
}
207206

208-
export function isArchPresentForWindows(item: any) {
207+
export function isArchPresentForWindows(item: any, architecture: string) {
208+
architecture = replaceX32toX86(architecture);
209209
return item.files.some(
210210
(file: any) =>
211-
WINDOWS_ARCHS.includes(file.arch) &&
212-
WINDOWS_PLATFORMS.includes(file.platform)
211+
WINDOWS_PLATFORMS.includes(file.platform) && file.arch === architecture
213212
);
214213
}
215214

@@ -223,11 +222,11 @@ export function isArchPresentForMacOrLinux(
223222
);
224223
}
225224

226-
export function findAssetForWindows(releases: any) {
225+
export function findAssetForWindows(releases: any, architecture: string) {
226+
architecture = replaceX32toX86(architecture);
227227
return releases.files.find(
228228
(item: any) =>
229-
WINDOWS_ARCHS.includes(item.arch) &&
230-
WINDOWS_PLATFORMS.includes(item.platform)
229+
WINDOWS_PLATFORMS.includes(item.platform) && item.arch === architecture
231230
);
232231
}
233232

@@ -240,3 +239,11 @@ export function findAssetForMacOrLinux(
240239
(item: any) => item.arch === architecture && item.platform === platform
241240
);
242241
}
242+
243+
function replaceX32toX86(architecture: string): string {
244+
// convert x32 to x86 because os.arch() returns x32 for 32-bit systems but PyPy releases json has x86 arch value.
245+
if (architecture === 'x32') {
246+
architecture = 'x86';
247+
}
248+
return architecture;
249+
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.