fix(registry): don't download x64 binaries on other platforms (#27462)

On Linux platforms, specifically check that process.arch is x64, rather
than treating it as 'not arm64'.

Treat Raspbian's /etc/os-release file as Debian.

Document the supported platforms somewhat.

Fixes #27453
This commit is contained in:
Josh Lee 2023-10-17 15:54:20 -04:00 committed by GitHub
parent 0a49c3dbb9
commit 08bc4fd801
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 91 additions and 85 deletions

View File

@ -127,7 +127,7 @@ npx playwright --version
- Node.js 16+
- Windows 10+, Windows Server 2016+ or Windows Subsystem for Linux (WSL).
- MacOS 12 Monterey or MacOS 13 Ventura.
- Debian 11, Debian 12, Ubuntu 20.04 or Ubuntu 22.04.
- Debian 11, Debian 12, Ubuntu 20.04 or Ubuntu 22.04, with x86-64 or arm64 architecture.
## What's next

View File

@ -77,15 +77,15 @@ type DownloadPaths = Record<HostPlatform, string | undefined>;
const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
'chromium': {
'<unknown>': undefined,
'ubuntu18.04': 'builds/chromium/%s/chromium-linux.zip',
'ubuntu20.04': 'builds/chromium/%s/chromium-linux.zip',
'ubuntu22.04': 'builds/chromium/%s/chromium-linux.zip',
'ubuntu18.04-x64': 'builds/chromium/%s/chromium-linux.zip',
'ubuntu20.04-x64': 'builds/chromium/%s/chromium-linux.zip',
'ubuntu22.04-x64': 'builds/chromium/%s/chromium-linux.zip',
'ubuntu18.04-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
'ubuntu20.04-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
'ubuntu22.04-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
'debian11': 'builds/chromium/%s/chromium-linux.zip',
'debian11-x64': 'builds/chromium/%s/chromium-linux.zip',
'debian11-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
'debian12': 'builds/chromium/%s/chromium-linux.zip',
'debian12-x64': 'builds/chromium/%s/chromium-linux.zip',
'debian12-arm64': 'builds/chromium/%s/chromium-linux-arm64.zip',
'mac10.13': 'builds/chromium/%s/chromium-mac.zip',
'mac10.14': 'builds/chromium/%s/chromium-mac.zip',
@ -100,15 +100,15 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
},
'chromium-tip-of-tree': {
'<unknown>': undefined,
'ubuntu18.04': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
'ubuntu20.04': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
'ubuntu22.04': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
'ubuntu18.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
'ubuntu20.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
'ubuntu22.04-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
'ubuntu18.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
'ubuntu20.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
'ubuntu22.04-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
'debian11': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
'debian11-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
'debian11-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
'debian12': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
'debian12-x64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux.zip',
'debian12-arm64': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-linux-arm64.zip',
'mac10.13': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
'mac10.14': 'builds/chromium-tip-of-tree/%s/chromium-tip-of-tree-mac.zip',
@ -123,15 +123,15 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
},
'chromium-with-symbols': {
'<unknown>': undefined,
'ubuntu18.04': 'builds/chromium/%s/chromium-with-symbols-linux.zip',
'ubuntu20.04': 'builds/chromium/%s/chromium-with-symbols-linux.zip',
'ubuntu22.04': 'builds/chromium/%s/chromium-with-symbols-linux.zip',
'ubuntu18.04-x64': 'builds/chromium/%s/chromium-with-symbols-linux.zip',
'ubuntu20.04-x64': 'builds/chromium/%s/chromium-with-symbols-linux.zip',
'ubuntu22.04-x64': 'builds/chromium/%s/chromium-with-symbols-linux.zip',
'ubuntu18.04-arm64': 'builds/chromium/%s/chromium-with-symbols-linux-arm64.zip',
'ubuntu20.04-arm64': 'builds/chromium/%s/chromium-with-symbols-linux-arm64.zip',
'ubuntu22.04-arm64': 'builds/chromium/%s/chromium-with-symbols-linux-arm64.zip',
'debian11': 'builds/chromium/%s/chromium-with-symbols-linux.zip',
'debian11-x64': 'builds/chromium/%s/chromium-with-symbols-linux.zip',
'debian11-arm64': 'builds/chromium/%s/chromium-with-symbols-linux-arm64.zip',
'debian12': 'builds/chromium/%s/chromium-with-symbols-linux.zip',
'debian12-x64': 'builds/chromium/%s/chromium-with-symbols-linux.zip',
'debian12-arm64': 'builds/chromium/%s/chromium-with-symbols-linux-arm64.zip',
'mac10.13': 'builds/chromium/%s/chromium-with-symbols-mac.zip',
'mac10.14': 'builds/chromium/%s/chromium-with-symbols-mac.zip',
@ -146,15 +146,15 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
},
'firefox': {
'<unknown>': undefined,
'ubuntu18.04': 'builds/firefox/%s/firefox-ubuntu-18.04.zip',
'ubuntu20.04': 'builds/firefox/%s/firefox-ubuntu-20.04.zip',
'ubuntu22.04': 'builds/firefox/%s/firefox-ubuntu-22.04.zip',
'ubuntu18.04-x64': 'builds/firefox/%s/firefox-ubuntu-18.04.zip',
'ubuntu20.04-x64': 'builds/firefox/%s/firefox-ubuntu-20.04.zip',
'ubuntu22.04-x64': 'builds/firefox/%s/firefox-ubuntu-22.04.zip',
'ubuntu18.04-arm64': undefined,
'ubuntu20.04-arm64': 'builds/firefox/%s/firefox-ubuntu-20.04-arm64.zip',
'ubuntu22.04-arm64': 'builds/firefox/%s/firefox-ubuntu-22.04-arm64.zip',
'debian11': 'builds/firefox/%s/firefox-debian-11.zip',
'debian11-x64': 'builds/firefox/%s/firefox-debian-11.zip',
'debian11-arm64': 'builds/firefox/%s/firefox-debian-11-arm64.zip',
'debian12': 'builds/firefox/%s/firefox-debian-12.zip',
'debian12-x64': 'builds/firefox/%s/firefox-debian-12.zip',
'debian12-arm64': 'builds/firefox/%s/firefox-debian-12-arm64.zip',
'mac10.13': 'builds/firefox/%s/firefox-mac-13.zip',
'mac10.14': 'builds/firefox/%s/firefox-mac-13.zip',
@ -169,15 +169,15 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
},
'firefox-beta': {
'<unknown>': undefined,
'ubuntu18.04': 'builds/firefox-beta/%s/firefox-beta-ubuntu-18.04.zip',
'ubuntu20.04': 'builds/firefox-beta/%s/firefox-beta-ubuntu-20.04.zip',
'ubuntu22.04': 'builds/firefox-beta/%s/firefox-beta-ubuntu-22.04.zip',
'ubuntu18.04-x64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-18.04.zip',
'ubuntu20.04-x64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-20.04.zip',
'ubuntu22.04-x64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-22.04.zip',
'ubuntu18.04-arm64': undefined,
'ubuntu20.04-arm64': undefined,
'ubuntu22.04-arm64': 'builds/firefox-beta/%s/firefox-beta-ubuntu-22.04-arm64.zip',
'debian11': 'builds/firefox-beta/%s/firefox-beta-debian-11.zip',
'debian11-x64': 'builds/firefox-beta/%s/firefox-beta-debian-11.zip',
'debian11-arm64': 'builds/firefox-beta/%s/firefox-beta-debian-11-arm64.zip',
'debian12': 'builds/firefox-beta/%s/firefox-beta-debian-12.zip',
'debian12-x64': 'builds/firefox-beta/%s/firefox-beta-debian-12.zip',
'debian12-arm64': 'builds/firefox-beta/%s/firefox-beta-debian-12-arm64.zip',
'mac10.13': 'builds/firefox-beta/%s/firefox-beta-mac-13.zip',
'mac10.14': 'builds/firefox-beta/%s/firefox-beta-mac-13.zip',
@ -192,15 +192,15 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
},
'firefox-asan': {
'<unknown>': undefined,
'ubuntu18.04': undefined,
'ubuntu20.04': undefined,
'ubuntu22.04': 'builds/firefox/%s/firefox-asan-ubuntu-22.04.zip',
'ubuntu18.04-x64': undefined,
'ubuntu20.04-x64': undefined,
'ubuntu22.04-x64': 'builds/firefox/%s/firefox-asan-ubuntu-22.04.zip',
'ubuntu18.04-arm64': undefined,
'ubuntu20.04-arm64': undefined,
'ubuntu22.04-arm64': undefined,
'debian11': undefined,
'debian11-x64': undefined,
'debian11-arm64': undefined,
'debian12': undefined,
'debian12-x64': undefined,
'debian12-arm64': undefined,
'mac10.13': 'builds/firefox/%s/firefox-asan-mac-13.zip',
'mac10.14': 'builds/firefox/%s/firefox-asan-mac-13.zip',
@ -215,15 +215,15 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
},
'webkit': {
'<unknown>': undefined,
'ubuntu18.04': 'builds/deprecated-webkit-ubuntu-18.04/%s/deprecated-webkit-ubuntu-18.04.zip',
'ubuntu20.04': 'builds/webkit/%s/webkit-ubuntu-20.04.zip',
'ubuntu22.04': 'builds/webkit/%s/webkit-ubuntu-22.04.zip',
'ubuntu18.04-x64': 'builds/deprecated-webkit-ubuntu-18.04/%s/deprecated-webkit-ubuntu-18.04.zip',
'ubuntu20.04-x64': 'builds/webkit/%s/webkit-ubuntu-20.04.zip',
'ubuntu22.04-x64': 'builds/webkit/%s/webkit-ubuntu-22.04.zip',
'ubuntu18.04-arm64': undefined,
'ubuntu20.04-arm64': 'builds/webkit/%s/webkit-ubuntu-20.04-arm64.zip',
'ubuntu22.04-arm64': 'builds/webkit/%s/webkit-ubuntu-22.04-arm64.zip',
'debian11': 'builds/webkit/%s/webkit-debian-11.zip',
'debian11-x64': 'builds/webkit/%s/webkit-debian-11.zip',
'debian11-arm64': 'builds/webkit/%s/webkit-debian-11-arm64.zip',
'debian12': 'builds/webkit/%s/webkit-debian-12.zip',
'debian12-x64': 'builds/webkit/%s/webkit-debian-12.zip',
'debian12-arm64': 'builds/webkit/%s/webkit-debian-12-arm64.zip',
'mac10.13': undefined,
'mac10.14': 'builds/deprecated-webkit-mac-10.14/%s/deprecated-webkit-mac-10.14.zip',
@ -238,15 +238,15 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
},
'ffmpeg': {
'<unknown>': undefined,
'ubuntu18.04': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
'ubuntu20.04': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
'ubuntu22.04': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
'ubuntu18.04-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
'ubuntu20.04-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
'ubuntu22.04-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
'ubuntu18.04-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip',
'ubuntu20.04-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip',
'ubuntu22.04-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip',
'debian11': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
'debian11-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
'debian11-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip',
'debian12': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
'debian12-x64': 'builds/ffmpeg/%s/ffmpeg-linux.zip',
'debian12-arm64': 'builds/ffmpeg/%s/ffmpeg-linux-arm64.zip',
'mac10.13': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
'mac10.14': 'builds/ffmpeg/%s/ffmpeg-mac.zip',
@ -261,15 +261,15 @@ const DOWNLOAD_PATHS: Record<BrowserName | InternalTool, DownloadPaths> = {
},
'android': {
'<unknown>': 'builds/android/%s/android.zip',
'ubuntu18.04': 'builds/android/%s/android.zip',
'ubuntu20.04': 'builds/android/%s/android.zip',
'ubuntu22.04': 'builds/android/%s/android.zip',
'ubuntu18.04-x64': 'builds/android/%s/android.zip',
'ubuntu20.04-x64': 'builds/android/%s/android.zip',
'ubuntu22.04-x64': 'builds/android/%s/android.zip',
'ubuntu18.04-arm64': 'builds/android/%s/android.zip',
'ubuntu20.04-arm64': 'builds/android/%s/android.zip',
'ubuntu22.04-arm64': 'builds/android/%s/android.zip',
'debian11': 'builds/android/%s/android.zip',
'debian11-x64': 'builds/android/%s/android.zip',
'debian11-arm64': 'builds/android/%s/android.zip',
'debian12': 'builds/android/%s/android.zip',
'debian12-x64': 'builds/android/%s/android.zip',
'debian12-arm64': 'builds/android/%s/android.zip',
'mac10.13': 'builds/android/%s/android.zip',
'mac10.14': 'builds/android/%s/android.zip',

View File

@ -19,7 +19,7 @@
// ./utils/linux-browser-dependencies/run.sh ubuntu:20.04
export const deps: any = {
'ubuntu18.04': {
'ubuntu18.04-x64': {
tools: [
'xvfb',
'fonts-noto-color-emoji',
@ -181,7 +181,7 @@ export const deps: any = {
},
},
'ubuntu20.04': {
'ubuntu20.04-x64': {
tools: [
'xvfb',
'fonts-noto-color-emoji',
@ -396,7 +396,7 @@ export const deps: any = {
},
},
'ubuntu22.04': {
'ubuntu22.04-x64': {
tools: [
'xvfb',
'fonts-noto-color-emoji',
@ -612,7 +612,7 @@ export const deps: any = {
'libevent-2.1.so.7': 'libevent-2.1-7',
},
},
'debian11': {
'debian11-x64': {
tools: [
'xvfb',
'fonts-noto-color-emoji',
@ -822,7 +822,7 @@ export const deps: any = {
'libevent-2.1.so.7': 'libevent-2.1-7',
}
},
'debian12': {
'debian12-x64': {
tools: [
'xvfb',
'fonts-noto-color-emoji',
@ -977,58 +977,58 @@ export const deps: any = {
};
deps['ubuntu20.04-arm64'] = {
tools: [...deps['ubuntu20.04'].tools],
chromium: [...deps['ubuntu20.04'].chromium],
tools: [...deps['ubuntu20.04-x64'].tools],
chromium: [...deps['ubuntu20.04-x64'].chromium],
firefox: [
...deps['ubuntu20.04'].firefox,
...deps['ubuntu20.04-x64'].firefox,
],
webkit: [
...deps['ubuntu20.04'].webkit,
...deps['ubuntu20.04-x64'].webkit,
],
lib2package: {
...deps['ubuntu20.04'].lib2package,
...deps['ubuntu20.04-x64'].lib2package,
},
};
deps['ubuntu22.04-arm64'] = {
tools: [...deps['ubuntu22.04'].tools],
chromium: [...deps['ubuntu22.04'].chromium],
tools: [...deps['ubuntu22.04-x64'].tools],
chromium: [...deps['ubuntu22.04-x64'].chromium],
firefox: [
...deps['ubuntu22.04'].firefox,
...deps['ubuntu22.04-x64'].firefox,
],
webkit: [
...deps['ubuntu22.04'].webkit,
...deps['ubuntu22.04-x64'].webkit,
],
lib2package: {
...deps['ubuntu22.04'].lib2package,
...deps['ubuntu22.04-x64'].lib2package,
},
};
deps['debian11-arm64'] = {
tools: [...deps['debian11'].tools],
chromium: [...deps['debian11'].chromium],
tools: [...deps['debian11-x64'].tools],
chromium: [...deps['debian11-x64'].chromium],
firefox: [
...deps['debian11'].firefox,
...deps['debian11-x64'].firefox,
],
webkit: [
...deps['debian11'].webkit,
...deps['debian11-x64'].webkit,
],
lib2package: {
...deps['debian11'].lib2package,
...deps['debian11-x64'].lib2package,
},
};
deps['debian12-arm64'] = {
tools: [...deps['debian12'].tools],
chromium: [...deps['debian12'].chromium],
tools: [...deps['debian12-x64'].tools],
chromium: [...deps['debian12-x64'].chromium],
firefox: [
...deps['debian12'].firefox,
...deps['debian12-x64'].firefox,
],
webkit: [
...deps['debian12'].webkit,
...deps['debian12-x64'].webkit,
],
lib2package: {
...deps['debian12'].lib2package,
...deps['debian12-x64'].lib2package,
},
};

View File

@ -24,11 +24,11 @@ export type HostPlatform = 'win64' |
'mac11' | 'mac11-arm64' |
'mac12' | 'mac12-arm64' |
'mac13' | 'mac13-arm64' |
'ubuntu18.04' | 'ubuntu18.04-arm64' |
'ubuntu20.04' | 'ubuntu20.04-arm64' |
'ubuntu22.04' | 'ubuntu22.04-arm64' |
'debian11' | 'debian11-arm64' |
'debian12' | 'debian12-arm64' |
'ubuntu18.04-x64' | 'ubuntu18.04-arm64' |
'ubuntu20.04-x64' | 'ubuntu20.04-arm64' |
'ubuntu22.04-x64' | 'ubuntu22.04-arm64' |
'debian11-x64' | 'debian11-arm64' |
'debian12-x64' | 'debian12-arm64' |
'<unknown>';
function calculatePlatform(): { hostPlatform: HostPlatform, isOfficiallySupportedPlatform: boolean } {
@ -55,7 +55,10 @@ function calculatePlatform(): { hostPlatform: HostPlatform, isOfficiallySupporte
return { hostPlatform: macVersion as HostPlatform, isOfficiallySupportedPlatform: true };
}
if (platform === 'linux') {
const archSuffix = os.arch() === 'arm64' ? '-arm64' : '';
if (!['x64', 'arm64'].includes(os.arch()))
return { hostPlatform: '<unknown>', isOfficiallySupportedPlatform: false };
const archSuffix = '-' + os.arch();
const distroInfo = getLinuxDistributionInfoSync();
// Pop!_OS is ubuntu-based and has the same versions.
@ -69,14 +72,17 @@ function calculatePlatform(): { hostPlatform: HostPlatform, isOfficiallySupporte
return { hostPlatform: ('ubuntu20.04' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform };
return { hostPlatform: ('ubuntu22.04' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform };
}
if (distroInfo?.id === 'debian' && distroInfo?.version === '11')
return { hostPlatform: ('debian11' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform: true };
if (distroInfo?.id === 'debian' && distroInfo?.version === '12')
return { hostPlatform: ('debian12' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform: true };
// use most recent supported release for 'debian testing' and 'unstable'.
// they never include a numeric version entry in /etc/os-release.
if (distroInfo?.id === 'debian' && distroInfo?.version === '')
return { hostPlatform: ('debian12' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform: true };
if (distroInfo?.id === 'debian' || distroInfo?.id === 'raspbian') {
const isOfficiallySupportedPlatform = distroInfo?.id === 'debian';
if (distroInfo?.version === '11')
return { hostPlatform: ('debian11' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform };
if (distroInfo?.version === '12')
return { hostPlatform: ('debian12' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform };
// use most recent supported release for 'debian testing' and 'unstable'.
// they never include a numeric version entry in /etc/os-release.
if (distroInfo?.version === '')
return { hostPlatform: ('debian12' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform };
}
return { hostPlatform: ('ubuntu20.04' + archSuffix) as HostPlatform, isOfficiallySupportedPlatform: false };
}
if (platform === 'win32')