From d34f9972abf3e412c9a73ee7b524e529a89136f8 Mon Sep 17 00:00:00 2001 From: Andrey Lushnikov Date: Tue, 9 Nov 2021 10:55:13 -0800 Subject: [PATCH] feat: proper launch doctor for WebKit on Arm64 Ubuntu 20.04 (#10172) This patch: - consolidates all distribution-specific information in a single location - updates list of required dependencies for WebKit on Arb64 Ubuntu 20.04 --- packages/playwright-core/src/nativeDeps.ts | 388 ----------- .../playwright-core/src/utils/dependencies.ts | 314 +-------- .../playwright-core/src/utils/nativeDeps.ts | 657 ++++++++++++++++++ 3 files changed, 674 insertions(+), 685 deletions(-) delete mode 100644 packages/playwright-core/src/nativeDeps.ts create mode 100644 packages/playwright-core/src/utils/nativeDeps.ts diff --git a/packages/playwright-core/src/nativeDeps.ts b/packages/playwright-core/src/nativeDeps.ts deleted file mode 100644 index 8e724e646f..0000000000 --- a/packages/playwright-core/src/nativeDeps.ts +++ /dev/null @@ -1,388 +0,0 @@ -/** - * Copyright (c) Microsoft Corporation. - * - * Licensed under the Apache License, Version 2.0 (the 'License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -// This file is used to: -// - Generate Dockerfile.* files -// - Build GitHubAction -// - Execute 'npx playwright install-deps' - -export const deps = { - // Ubuntu 18.04 - bionic: { - tools: [ - 'xvfb', - 'fonts-noto-color-emoji', - 'ttf-unifont', - 'libfontconfig', - 'libfreetype6', - 'xfonts-cyrillic', - 'xfonts-scalable', - 'fonts-liberation', - 'fonts-ipafont-gothic', - 'fonts-wqy-zenhei', - 'fonts-tlwg-loma-otf', - 'ttf-ubuntu-font-family', - ], - chromium: [ - 'fonts-liberation', - 'libasound2', - 'libatk-bridge2.0-0', - 'libatk1.0-0', - 'libatspi2.0-0', - 'libcairo2', - 'libcups2', - 'libdbus-1-3', - 'libdrm2', - 'libegl1', - 'libgbm1', - 'libglib2.0-0', - 'libgtk-3-0', - 'libnspr4', - 'libnss3', - 'libpango-1.0-0', - 'libx11-6', - 'libx11-xcb1', - 'libxcb1', - 'libxcomposite1', - 'libxdamage1', - 'libxext6', - 'libxfixes3', - 'libxrandr2', - 'libxshmfence1', - ], - firefox: [ - 'ffmpeg', - 'libatk1.0-0', - 'libcairo-gobject2', - 'libcairo2', - 'libdbus-1-3', - 'libdbus-glib-1-2', - 'libfontconfig1', - 'libfreetype6', - 'libgdk-pixbuf2.0-0', - 'libglib2.0-0', - 'libgtk-3-0', - 'libpango-1.0-0', - 'libpangocairo-1.0-0', - 'libpangoft2-1.0-0', - 'libx11-6', - 'libx11-xcb1', - 'libxcb-shm0', - 'libxcb1', - 'libxcomposite1', - 'libxcursor1', - 'libxdamage1', - 'libxext6', - 'libxfixes3', - 'libxi6', - 'libxrender1', - 'libxt6', - ], - webkit: [ - 'gstreamer1.0-libav', - 'gstreamer1.0-plugins-bad', - 'gstreamer1.0-plugins-base', - 'gstreamer1.0-plugins-good', - 'libatk-bridge2.0-0', - 'libatk1.0-0', - 'libbrotli1', - 'libcairo2', - 'libegl1', - 'libenchant1c2a', - 'libepoxy0', - 'libevdev2', - 'libfontconfig1', - 'libfreetype6', - 'libgdk-pixbuf2.0-0', - 'libgl1', - 'libgles2', - 'libglib2.0-0', - 'libgstreamer-gl1.0-0', - 'libgstreamer1.0-0', - 'libgtk-3-0', - 'libharfbuzz-icu0', - 'libharfbuzz0b', - 'libhyphen0', - 'libicu60', - 'libjpeg-turbo8', - 'libnotify4', - 'libopenjp2-7', - 'libopus0', - 'libpango-1.0-0', - 'libpng16-16', - 'libsecret-1-0', - 'libvpx5', - 'libwayland-client0', - 'libwayland-egl1', - 'libwayland-server0', - 'libwebp6', - 'libwebpdemux2', - 'libwoff1', - 'libx11-6', - 'libxcomposite1', - 'libxdamage1', - 'libxkbcommon0', - 'libxml2', - 'libxslt1.1', - ], - }, - - // Ubuntu 20.04 - focal: { - tools: [ - 'xvfb', - 'fonts-noto-color-emoji', - 'ttf-unifont', - 'libfontconfig', - 'libfreetype6', - 'xfonts-cyrillic', - 'xfonts-scalable', - 'fonts-liberation', - 'fonts-ipafont-gothic', - 'fonts-wqy-zenhei', - 'fonts-tlwg-loma-otf', - 'ttf-ubuntu-font-family', - ], - chromium: [ - 'fonts-liberation', - 'libasound2', - 'libatk-bridge2.0-0', - 'libatk1.0-0', - 'libatspi2.0-0', - 'libcairo2', - 'libcups2', - 'libdbus-1-3', - 'libdrm2', - 'libegl1', - 'libgbm1', - 'libglib2.0-0', - 'libgtk-3-0', - 'libnspr4', - 'libnss3', - 'libpango-1.0-0', - 'libx11-6', - 'libx11-xcb1', - 'libxcb1', - 'libxcomposite1', - 'libxdamage1', - 'libxext6', - 'libxfixes3', - 'libxrandr2', - 'libxshmfence1', - ], - firefox: [ - 'ffmpeg', - 'libatk1.0-0', - 'libcairo-gobject2', - 'libcairo2', - 'libdbus-1-3', - 'libdbus-glib-1-2', - 'libfontconfig1', - 'libfreetype6', - 'libgdk-pixbuf2.0-0', - 'libglib2.0-0', - 'libgtk-3-0', - 'libpango-1.0-0', - 'libpangocairo-1.0-0', - 'libpangoft2-1.0-0', - 'libx11-6', - 'libx11-xcb1', - 'libxcb-shm0', - 'libxcb1', - 'libxcomposite1', - 'libxcursor1', - 'libxdamage1', - 'libxext6', - 'libxfixes3', - 'libxi6', - 'libxrender1', - 'libxt6', - ], - webkit: [ - 'gstreamer1.0-libav', - 'gstreamer1.0-plugins-bad', - 'gstreamer1.0-plugins-base', - 'gstreamer1.0-plugins-good', - 'libatk-bridge2.0-0', - 'libatk1.0-0', - 'libcairo2', - 'libegl1', - 'libenchant1c2a', - 'libepoxy0', - 'libevdev2', - 'libfontconfig1', - 'libfreetype6', - 'libgdk-pixbuf2.0-0', - 'libgl1', - 'libgles2', - 'libglib2.0-0', - 'libgstreamer-gl1.0-0', - 'libgstreamer1.0-0', - 'libgtk-3-0', - 'libharfbuzz-icu0', - 'libharfbuzz0b', - 'libhyphen0', - 'libicu66', - 'libjpeg-turbo8', - 'libnotify4', - 'libopenjp2-7', - 'libopus0', - 'libpango-1.0-0', - 'libpng16-16', - 'libsecret-1-0', - 'libsoup2.4-1', - 'libvpx6', - 'libwayland-client0', - 'libwayland-egl1', - 'libwayland-server0', - 'libwebp6', - 'libwebpdemux2', - 'libwoff1', - 'libx11-6', - 'libxcomposite1', - 'libxdamage1', - 'libxkbcommon0', - 'libxml2', - 'libxslt1.1', - ], - }, - - // Ubuntu 21.04 - hirsute: { - tools: [ - 'xvfb', - 'fonts-noto-color-emoji', - 'ttf-unifont', - 'libfontconfig', - 'libfreetype6', - 'xfonts-cyrillic', - 'xfonts-scalable', - 'fonts-liberation', - 'fonts-ipafont-gothic', - 'fonts-wqy-zenhei', - 'fonts-tlwg-loma-otf', - 'ttf-ubuntu-font-family', - ], - chromium: [ - 'libasound2', - 'libatk-bridge2.0-0', - 'libatk1.0-0', - 'libatspi2.0-0', - 'libcairo2', - 'libcups2', - 'libdbus-1-3', - 'libdrm2', - 'libgbm1', - 'libglib2.0-0', - 'libnspr4', - 'libnss3', - 'libpango-1.0-0', - 'libx11-6', - 'libxcb1', - 'libxcomposite1', - 'libxdamage1', - 'libxext6', - 'libxfixes3', - 'libxkbcommon0', - 'libxrandr2', - 'libxshmfence1' - ], - firefox: [ - 'ffmpeg', - 'libatk1.0-0', - 'libcairo-gobject2', - 'libcairo2', - 'libdbus-1-3', - 'libdbus-glib-1-2', - 'libfontconfig1', - 'libfreetype6', - 'libgdk-pixbuf-2.0-0', - 'libglib2.0-0', - 'libgtk-3-0', - 'libgtk2.0-0', - 'libharfbuzz0b', - 'libpango-1.0-0', - 'libpangocairo-1.0-0', - 'libpangoft2-1.0-0', - 'libx11-6', - 'libx11-xcb1', - 'libxcb-shm0', - 'libxcb1', - 'libxcomposite1', - 'libxcursor1', - 'libxdamage1', - 'libxext6', - 'libxfixes3', - 'libxi6', - 'libxrender1', - 'libxt6' - ], - webkit: [ - 'gstreamer1.0-libav', - 'gstreamer1.0-plugins-bad', - 'gstreamer1.0-plugins-base', - 'gstreamer1.0-plugins-good', - 'libatk-bridge2.0-0', - 'libatk1.0-0', - 'libcairo2', - 'libegl1', - 'libepoxy0', - 'libevdev2', - 'libfontconfig1', - 'libfreetype6', - 'libgdk-pixbuf-2.0-0', - 'libgl1', - 'libgles2', - 'libglib2.0-0', - 'libgstreamer-gl1.0-0', - 'libgstreamer-plugins-bad1.0-0', - 'libgstreamer-plugins-base1.0-0', - 'libgstreamer1.0-0', - 'libgtk-3-0', - 'libharfbuzz-icu0', - 'libharfbuzz0b', - 'libhyphen0', - 'libjavascriptcoregtk-4.0-18', - 'libjpeg-turbo8', - 'liblcms2-2', - 'libnotify4', - 'libopenjp2-7', - 'libopus0', - 'libpango-1.0-0', - 'libpng16-16', - 'libsecret-1-0', - 'libsoup2.4-1', - 'libvpx6', - 'libwayland-client0', - 'libwayland-egl1', - 'libwayland-server0', - 'libwebkit2gtk-4.0-37', - 'libwebp6', - 'libwebpdemux2', - 'libwoff1', - 'libwpe-1.0-1', - 'libwpebackend-fdo-1.0-1', - 'libwpewebkit-1.0-3', - 'libx11-6', - 'libxcomposite1', - 'libxdamage1', - 'libxkbcommon0', - 'libxml2', - 'libxslt1.1' - ] - } -}; - diff --git a/packages/playwright-core/src/utils/dependencies.ts b/packages/playwright-core/src/utils/dependencies.ts index bbac2ba2a7..00df9c1ff1 100644 --- a/packages/playwright-core/src/utils/dependencies.ts +++ b/packages/playwright-core/src/utils/dependencies.ts @@ -18,9 +18,9 @@ import fs from 'fs'; import path from 'path'; import * as os from 'os'; import childProcess from 'child_process'; -import { getUbuntuVersion } from './ubuntuVersion'; import * as utils from './utils'; import { buildPlaywrightCLICommand } from './registry'; +import { deps } from './nativeDeps'; const BIN_DIRECTORY = path.join(__dirname, '..', '..', 'bin'); @@ -47,21 +47,14 @@ export async function installDependenciesWindows(targets: Set) } export async function installDependenciesLinux(targets: Set) { - const ubuntuVersion = await getUbuntuVersion(); - if (ubuntuVersion !== '18.04' && ubuntuVersion !== '20.04' && ubuntuVersion !== '21.04') { - console.warn('Cannot install dependencies for this linux distribution!'); // eslint-disable-line no-console - return; - } - const libraries: string[] = []; - const { deps } = require('../nativeDeps'); for (const target of targets) { - if (ubuntuVersion === '18.04') - libraries.push(...deps['bionic'][target]); - else if (ubuntuVersion === '20.04') - libraries.push(...deps['focal'][target]); - else if (ubuntuVersion === '21.04') - libraries.push(...deps['hirsute'][target]); + const info = deps[utils.hostPlatform]; + if (!info) { + console.warn('Cannot install dependencies for this linux distribution!'); // eslint-disable-line no-console + return; + } + libraries.push(...info[target]); } const uniqueLibraries = Array.from(new Set(libraries)); console.log('Installing Ubuntu dependencies...'); // eslint-disable-line no-console @@ -167,23 +160,16 @@ export async function validateDependenciesLinux(sdkLanguage: string, linuxLddDir // Check Ubuntu version. const missingPackages = new Set(); - const ubuntuVersion = await getUbuntuVersion(); - let libraryToPackageNameMapping = null; - if (ubuntuVersion === '18.04') - libraryToPackageNameMapping = LIBRARY_TO_PACKAGE_NAME_UBUNTU_18_04; - else if (ubuntuVersion === '20.04') - libraryToPackageNameMapping = LIBRARY_TO_PACKAGE_NAME_UBUNTU_20_04; - else if (ubuntuVersion === '21.04') - libraryToPackageNameMapping = LIBRARY_TO_PACKAGE_NAME_UBUNTU_21_04; - libraryToPackageNameMapping = Object.assign({}, libraryToPackageNameMapping, MANUAL_LIBRARY_TO_PACKAGE_NAME_UBUNTU); - if (libraryToPackageNameMapping) { - // Translate missing dependencies to package names to install with apt. - for (const missingDep of missingDeps) { - const packageName = libraryToPackageNameMapping[missingDep]; - if (packageName) { - missingPackages.add(packageName); - missingDeps.delete(missingDep); - } + const libraryToPackageNameMapping = { + ...(deps[utils.hostPlatform]?.lib2package || {}), + ...MANUAL_LIBRARY_TO_PACKAGE_NAME_UBUNTU, + }; + // Translate missing dependencies to package names to install with apt. + for (const missingDep of missingDeps) { + const packageName = libraryToPackageNameMapping[missingDep]; + if (packageName) { + missingPackages.add(packageName); + missingDeps.delete(missingDep); } } @@ -300,272 +286,6 @@ async function missingDLOPENLibraries(libraries: string[]): Promise { return libraries.filter(library => !isLibraryAvailable(library)); } -// This list is generted with the following program: -// ./utils/linux-browser-dependencies/run.sh ubuntu:18.04 -const LIBRARY_TO_PACKAGE_NAME_UBUNTU_18_04: { [s: string]: string} = { - 'libasound.so.2': 'libasound2', - 'libatk-1.0.so.0': 'libatk1.0-0', - 'libatk-bridge-2.0.so.0': 'libatk-bridge2.0-0', - 'libatspi.so.0': 'libatspi2.0-0', - 'libbrotlidec.so.1': 'libbrotli1', - 'libcairo-gobject.so.2': 'libcairo-gobject2', - 'libcairo.so.2': 'libcairo2', - 'libcups.so.2': 'libcups2', - 'libdbus-1.so.3': 'libdbus-1-3', - 'libdbus-glib-1.so.2': 'libdbus-glib-1-2', - 'libdrm.so.2': 'libdrm2', - 'libEGL.so.1': 'libegl1', - 'libenchant.so.1': 'libenchant1c2a', - 'libepoxy.so.0': 'libepoxy0', - 'libevent-2.1.so.6': 'libevent-2.1-6', - 'libevdev.so.2': 'libevdev2', - 'libfontconfig.so.1': 'libfontconfig1', - 'libfreetype.so.6': 'libfreetype6', - 'libgbm.so.1': 'libgbm1', - 'libgdk_pixbuf-2.0.so.0': 'libgdk-pixbuf2.0-0', - 'libgdk-3.so.0': 'libgtk-3-0', - 'libgdk-x11-2.0.so.0': 'libgtk2.0-0', - 'libgio-2.0.so.0': 'libglib2.0-0', - 'libGL.so.1': 'libgl1', - 'libGLESv2.so.2': 'libgles2', - 'libglib-2.0.so.0': 'libglib2.0-0', - 'libgmodule-2.0.so.0': 'libglib2.0-0', - 'libgobject-2.0.so.0': 'libglib2.0-0', - 'libgstapp-1.0.so.0': 'gstreamer1.0-plugins-base', - 'libgstaudio-1.0.so.0': 'gstreamer1.0-plugins-base', - 'libgstbase-1.0.so.0': 'libgstreamer1.0-0', - 'libgstcodecparsers-1.0.so.0': 'gstreamer1.0-plugins-bad', - 'libgstfft-1.0.so.0': 'gstreamer1.0-plugins-base', - 'libgstgl-1.0.so.0': 'libgstreamer-gl1.0-0', - 'libgstpbutils-1.0.so.0': 'gstreamer1.0-plugins-base', - 'libgstreamer-1.0.so.0': 'libgstreamer1.0-0', - 'libgsttag-1.0.so.0': 'gstreamer1.0-plugins-base', - 'libgstvideo-1.0.so.0': 'gstreamer1.0-plugins-base', - 'libgthread-2.0.so.0': 'libglib2.0-0', - 'libgtk-3.so.0': 'libgtk-3-0', - 'libgtk-x11-2.0.so.0': 'libgtk2.0-0', - 'libharfbuzz-icu.so.0': 'libharfbuzz-icu0', - 'libharfbuzz.so.0': 'libharfbuzz0b', - 'libhyphen.so.0': 'libhyphen0', - 'libicudata.so.60': 'libicu60', - 'libicui18n.so.60': 'libicu60', - 'libicuuc.so.60': 'libicu60', - 'libjpeg.so.8': 'libjpeg-turbo8', - 'libnotify.so.4': 'libnotify4', - 'libnspr4.so': 'libnspr4', - 'libnss3.so': 'libnss3', - 'libnssutil3.so': 'libnss3', - 'libopenjp2.so.7': 'libopenjp2-7', - 'libopus.so.0': 'libopus0', - 'libpango-1.0.so.0': 'libpango-1.0-0', - 'libpangocairo-1.0.so.0': 'libpangocairo-1.0-0', - 'libpangoft2-1.0.so.0': 'libpangoft2-1.0-0', - 'libpng16.so.16': 'libpng16-16', - 'libsecret-1.so.0': 'libsecret-1-0', - 'libsmime3.so': 'libnss3', - 'libvpx.so.5': 'libvpx5', - 'libwayland-client.so.0': 'libwayland-client0', - 'libwayland-egl.so.1': 'libwayland-egl1', - 'libwayland-server.so.0': 'libwayland-server0', - 'libwebp.so.6': 'libwebp6', - 'libwebpdemux.so.2': 'libwebpdemux2', - 'libwoff2dec.so.1.0.2': 'libwoff1', - 'libX11-xcb.so.1': 'libx11-xcb1', - 'libX11.so.6': 'libx11-6', - 'libxcb-dri3.so.0': 'libxcb-dri3-0', - 'libxcb-shm.so.0': 'libxcb-shm0', - 'libxcb.so.1': 'libxcb1', - 'libXcomposite.so.1': 'libxcomposite1', - 'libXcursor.so.1': 'libxcursor1', - 'libXdamage.so.1': 'libxdamage1', - 'libXext.so.6': 'libxext6', - 'libXfixes.so.3': 'libxfixes3', - 'libXi.so.6': 'libxi6', - 'libxkbcommon.so.0': 'libxkbcommon0', - 'libxml2.so.2': 'libxml2', - 'libXrandr.so.2': 'libxrandr2', - 'libXrender.so.1': 'libxrender1', - 'libxslt.so.1': 'libxslt1.1', - 'libXt.so.6': 'libxt6', - 'libXtst.so.6': 'libxtst6', -}; - -// This list is generted with the following program: -// ./utils/linux-browser-dependencies/run.sh ubuntu:20.04 -const LIBRARY_TO_PACKAGE_NAME_UBUNTU_20_04: { [s: string]: string} = { - 'libasound.so.2': 'libasound2', - 'libatk-1.0.so.0': 'libatk1.0-0', - 'libatk-bridge-2.0.so.0': 'libatk-bridge2.0-0', - 'libatspi.so.0': 'libatspi2.0-0', - 'libcairo-gobject.so.2': 'libcairo-gobject2', - 'libcairo.so.2': 'libcairo2', - 'libcups.so.2': 'libcups2', - 'libdbus-1.so.3': 'libdbus-1-3', - 'libdbus-glib-1.so.2': 'libdbus-glib-1-2', - 'libdrm.so.2': 'libdrm2', - 'libEGL.so.1': 'libegl1', - 'libenchant.so.1': 'libenchant1c2a', - 'libevdev.so.2': 'libevdev2', - 'libepoxy.so.0': 'libepoxy0', - 'libfontconfig.so.1': 'libfontconfig1', - 'libfreetype.so.6': 'libfreetype6', - 'libgbm.so.1': 'libgbm1', - 'libgdk_pixbuf-2.0.so.0': 'libgdk-pixbuf2.0-0', - 'libgdk-3.so.0': 'libgtk-3-0', - 'libgdk-x11-2.0.so.0': 'libgtk2.0-0', - 'libgio-2.0.so.0': 'libglib2.0-0', - 'libGL.so.1': 'libgl1', - 'libGLESv2.so.2': 'libgles2', - 'libglib-2.0.so.0': 'libglib2.0-0', - 'libgmodule-2.0.so.0': 'libglib2.0-0', - 'libgobject-2.0.so.0': 'libglib2.0-0', - 'libgstapp-1.0.so.0': 'gstreamer1.0-plugins-base', - 'libgstaudio-1.0.so.0': 'gstreamer1.0-plugins-base', - 'libgstbase-1.0.so.0': 'libgstreamer1.0-0', - 'libgstcodecparsers-1.0.so.0': 'gstreamer1.0-plugins-bad', - 'libgstfft-1.0.so.0': 'gstreamer1.0-plugins-base', - 'libgstgl-1.0.so.0': 'libgstreamer-gl1.0-0', - 'libgstpbutils-1.0.so.0': 'gstreamer1.0-plugins-base', - 'libgstreamer-1.0.so.0': 'libgstreamer1.0-0', - 'libgsttag-1.0.so.0': 'gstreamer1.0-plugins-base', - 'libgstvideo-1.0.so.0': 'gstreamer1.0-plugins-base', - 'libgthread-2.0.so.0': 'libglib2.0-0', - 'libgtk-3.so.0': 'libgtk-3-0', - 'libgtk-x11-2.0.so.0': 'libgtk2.0-0', - 'libharfbuzz-icu.so.0': 'libharfbuzz-icu0', - 'libharfbuzz.so.0': 'libharfbuzz0b', - 'libhyphen.so.0': 'libhyphen0', - 'libicui18n.so.66': 'libicu66', - 'libicuuc.so.66': 'libicu66', - 'libjpeg.so.8': 'libjpeg-turbo8', - 'libnotify.so.4': 'libnotify4', - 'libnspr4.so': 'libnspr4', - 'libnss3.so': 'libnss3', - 'libnssutil3.so': 'libnss3', - 'libopenjp2.so.7': 'libopenjp2-7', - 'libopus.so.0': 'libopus0', - 'libpango-1.0.so.0': 'libpango-1.0-0', - 'libpangocairo-1.0.so.0': 'libpangocairo-1.0-0', - 'libpangoft2-1.0.so.0': 'libpangoft2-1.0-0', - 'libpng16.so.16': 'libpng16-16', - 'libsecret-1.so.0': 'libsecret-1-0', - 'libsmime3.so': 'libnss3', - 'libsoup-2.4.so.1': 'libsoup2.4-1', - 'libvpx.so.6': 'libvpx6', - 'libwayland-client.so.0': 'libwayland-client0', - 'libwayland-egl.so.1': 'libwayland-egl1', - 'libwayland-server.so.0': 'libwayland-server0', - 'libwebp.so.6': 'libwebp6', - 'libwebpdemux.so.2': 'libwebpdemux2', - 'libwoff2dec.so.1.0.2': 'libwoff1', - 'libX11-xcb.so.1': 'libx11-xcb1', - 'libX11.so.6': 'libx11-6', - 'libxcb-dri3.so.0': 'libxcb-dri3-0', - 'libxcb-shm.so.0': 'libxcb-shm0', - 'libxcb.so.1': 'libxcb1', - 'libXcomposite.so.1': 'libxcomposite1', - 'libXcursor.so.1': 'libxcursor1', - 'libXdamage.so.1': 'libxdamage1', - 'libXext.so.6': 'libxext6', - 'libXfixes.so.3': 'libxfixes3', - 'libXi.so.6': 'libxi6', - 'libxkbcommon.so.0': 'libxkbcommon0', - 'libxml2.so.2': 'libxml2', - 'libXrandr.so.2': 'libxrandr2', - 'libXrender.so.1': 'libxrender1', - 'libxslt.so.1': 'libxslt1.1', - 'libXt.so.6': 'libxt6', - 'libXtst.so.6': 'libxtst6', - 'libxshmfence.so.1': 'libxshmfence1', -}; - -const LIBRARY_TO_PACKAGE_NAME_UBUNTU_21_04: { [s: string]: string} = { - 'libasound.so.2': 'libasound2', - 'libatk-1.0.so.0': 'libatk1.0-0', - 'libatk-bridge-2.0.so.0': 'libatk-bridge2.0-0', - 'libatspi.so.0': 'libatspi2.0-0', - 'libcairo-gobject.so.2': 'libcairo-gobject2', - 'libcairo.so.2': 'libcairo2', - 'libcups.so.2': 'libcups2', - 'libdbus-1.so.3': 'libdbus-1-3', - 'libdbus-glib-1.so.2': 'libdbus-glib-1-2', - 'libdrm.so.2': 'libdrm2', - 'libEGL.so.1': 'libegl1', - 'libepoxy.so.0': 'libepoxy0', - 'libfontconfig.so.1': 'libfontconfig1', - 'libfreetype.so.6': 'libfreetype6', - 'libgbm.so.1': 'libgbm1', - 'libgdk_pixbuf-2.0.so.0': 'libgdk-pixbuf-2.0-0', - 'libgdk-3.so.0': 'libgtk-3-0', - 'libgdk-x11-2.0.so.0': 'libgtk2.0-0', - 'libgio-2.0.so.0': 'libglib2.0-0', - 'libGL.so.1': 'libgl1', - 'libGLESv2.so.2': 'libgles2', - 'libglib-2.0.so.0': 'libglib2.0-0', - 'libgmodule-2.0.so.0': 'libglib2.0-0', - 'libgobject-2.0.so.0': 'libglib2.0-0', - 'libgstapp-1.0.so.0': 'libgstreamer-plugins-base1.0-0', - 'libgstaudio-1.0.so.0': 'libgstreamer-plugins-base1.0-0', - 'libgstbase-1.0.so.0': 'libgstreamer1.0-0', - 'libgstcodecparsers-1.0.so.0': 'libgstreamer-plugins-bad1.0-0', - 'libgstfft-1.0.so.0': 'libgstreamer-plugins-base1.0-0', - 'libgstgl-1.0.so.0': 'libgstreamer-gl1.0-0', - 'libgstpbutils-1.0.so.0': 'libgstreamer-plugins-base1.0-0', - 'libgstreamer-1.0.so.0': 'libgstreamer1.0-0', - 'libgsttag-1.0.so.0': 'libgstreamer-plugins-base1.0-0', - 'libgstvideo-1.0.so.0': 'libgstreamer-plugins-base1.0-0', - 'libgthread-2.0.so.0': 'libglib2.0-0', - 'libgtk-3.so.0': 'libgtk-3-0', - 'libgtk-x11-2.0.so.0': 'libgtk2.0-0', - 'libharfbuzz-icu.so.0': 'libharfbuzz-icu0', - 'libharfbuzz.so.0': 'libharfbuzz0b', - 'libhyphen.so.0': 'libhyphen0', - 'libjavascriptcoregtk-4.0.so.18': 'libjavascriptcoregtk-4.0-18', - 'libjpeg.so.8': 'libjpeg-turbo8', - 'liblcms2.so.2': 'liblcms2-2', - 'libnotify.so.4': 'libnotify4', - 'libnspr4.so': 'libnspr4', - 'libnss3.so': 'libnss3', - 'libnssutil3.so': 'libnss3', - 'libopenjp2.so.7': 'libopenjp2-7', - 'libopus.so.0': 'libopus0', - 'libpango-1.0.so.0': 'libpango-1.0-0', - 'libpangocairo-1.0.so.0': 'libpangocairo-1.0-0', - 'libpangoft2-1.0.so.0': 'libpangoft2-1.0-0', - 'libpng16.so.16': 'libpng16-16', - 'libsecret-1.so.0': 'libsecret-1-0', - 'libsmime3.so': 'libnss3', - 'libsoup-2.4.so.1': 'libsoup2.4-1', - 'libvpx.so.6': 'libvpx6', - 'libwayland-client.so.0': 'libwayland-client0', - 'libwayland-egl.so.1': 'libwayland-egl1', - 'libwayland-server.so.0': 'libwayland-server0', - 'libwebkit2gtk-4.0.so.37': 'libwebkit2gtk-4.0-37', - 'libwebp.so.6': 'libwebp6', - 'libwebpdemux.so.2': 'libwebpdemux2', - 'libwoff2dec.so.1.0.2': 'libwoff1', - 'libwpe-1.0.so.1': 'libwpe-1.0-1', - 'libWPEBackend-fdo-1.0.so.1': 'libwpebackend-fdo-1.0-1', - 'libWPEWebKit-1.0.so.3': 'libwpewebkit-1.0-3', - 'libX11-xcb.so.1': 'libx11-xcb1', - 'libX11.so.6': 'libx11-6', - 'libxcb-shm.so.0': 'libxcb-shm0', - 'libxcb.so.1': 'libxcb1', - 'libXcomposite.so.1': 'libxcomposite1', - 'libXcursor.so.1': 'libxcursor1', - 'libXdamage.so.1': 'libxdamage1', - 'libXext.so.6': 'libxext6', - 'libXfixes.so.3': 'libxfixes3', - 'libXi.so.6': 'libxi6', - 'libxkbcommon.so.0': 'libxkbcommon0', - 'libxml2.so.2': 'libxml2', - 'libXrandr.so.2': 'libxrandr2', - 'libXrender.so.1': 'libxrender1', - 'libxshmfence.so.1': 'libxshmfence1', - 'libxslt.so.1': 'libxslt1.1', - 'libXt.so.6': 'libxt6', -}; - const MANUAL_LIBRARY_TO_PACKAGE_NAME_UBUNTU: { [s: string]: string} = { // libgstlibav.so (the only actual library provided by gstreamer1.0-libav) is not // in the ldconfig cache, so we detect the actual library required for playing h.264 diff --git a/packages/playwright-core/src/utils/nativeDeps.ts b/packages/playwright-core/src/utils/nativeDeps.ts new file mode 100644 index 0000000000..3af2acbab1 --- /dev/null +++ b/packages/playwright-core/src/utils/nativeDeps.ts @@ -0,0 +1,657 @@ +/** + * Copyright (c) Microsoft Corporation. + * + * Licensed under the Apache License, Version 2.0 (the 'License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +// - This file is used to execute 'npx playwright install-deps' +// - The reverse mappings "lib2package" are generated with the following script: +// ./utils/linux-browser-dependencies/run.sh ubuntu:20.04 + +export const deps: any = { + 'ubuntu18.04': { + tools: [ + 'xvfb', + 'fonts-noto-color-emoji', + 'ttf-unifont', + 'libfontconfig', + 'libfreetype6', + 'xfonts-cyrillic', + 'xfonts-scalable', + 'fonts-liberation', + 'fonts-ipafont-gothic', + 'fonts-wqy-zenhei', + 'fonts-tlwg-loma-otf', + 'ttf-ubuntu-font-family', + ], + chromium: [ + 'fonts-liberation', + 'libasound2', + 'libatk-bridge2.0-0', + 'libatk1.0-0', + 'libatspi2.0-0', + 'libcairo2', + 'libcups2', + 'libdbus-1-3', + 'libdrm2', + 'libegl1', + 'libgbm1', + 'libglib2.0-0', + 'libgtk-3-0', + 'libnspr4', + 'libnss3', + 'libpango-1.0-0', + 'libx11-6', + 'libx11-xcb1', + 'libxcb1', + 'libxcomposite1', + 'libxdamage1', + 'libxext6', + 'libxfixes3', + 'libxrandr2', + 'libxshmfence1', + ], + firefox: [ + 'ffmpeg', + 'libatk1.0-0', + 'libcairo-gobject2', + 'libcairo2', + 'libdbus-1-3', + 'libdbus-glib-1-2', + 'libfontconfig1', + 'libfreetype6', + 'libgdk-pixbuf2.0-0', + 'libglib2.0-0', + 'libgtk-3-0', + 'libpango-1.0-0', + 'libpangocairo-1.0-0', + 'libpangoft2-1.0-0', + 'libx11-6', + 'libx11-xcb1', + 'libxcb-shm0', + 'libxcb1', + 'libxcomposite1', + 'libxcursor1', + 'libxdamage1', + 'libxext6', + 'libxfixes3', + 'libxi6', + 'libxrender1', + 'libxt6', + ], + webkit: [ + 'gstreamer1.0-libav', + 'gstreamer1.0-plugins-bad', + 'gstreamer1.0-plugins-base', + 'gstreamer1.0-plugins-good', + 'libatk-bridge2.0-0', + 'libatk1.0-0', + 'libbrotli1', + 'libcairo2', + 'libegl1', + 'libenchant1c2a', + 'libepoxy0', + 'libevdev2', + 'libfontconfig1', + 'libfreetype6', + 'libgdk-pixbuf2.0-0', + 'libgl1', + 'libgles2', + 'libglib2.0-0', + 'libgstreamer-gl1.0-0', + 'libgstreamer1.0-0', + 'libgtk-3-0', + 'libharfbuzz-icu0', + 'libharfbuzz0b', + 'libhyphen0', + 'libicu60', + 'libjpeg-turbo8', + 'libnotify4', + 'libopenjp2-7', + 'libopus0', + 'libpango-1.0-0', + 'libpng16-16', + 'libsecret-1-0', + 'libvpx5', + 'libwayland-client0', + 'libwayland-egl1', + 'libwayland-server0', + 'libwebp6', + 'libwebpdemux2', + 'libwoff1', + 'libx11-6', + 'libxcomposite1', + 'libxdamage1', + 'libxkbcommon0', + 'libxml2', + 'libxslt1.1', + ], + lib2package: { + 'libasound.so.2': 'libasound2', + 'libatk-1.0.so.0': 'libatk1.0-0', + 'libatk-bridge-2.0.so.0': 'libatk-bridge2.0-0', + 'libatspi.so.0': 'libatspi2.0-0', + 'libbrotlidec.so.1': 'libbrotli1', + 'libcairo-gobject.so.2': 'libcairo-gobject2', + 'libcairo.so.2': 'libcairo2', + 'libcups.so.2': 'libcups2', + 'libdbus-1.so.3': 'libdbus-1-3', + 'libdbus-glib-1.so.2': 'libdbus-glib-1-2', + 'libdrm.so.2': 'libdrm2', + 'libEGL.so.1': 'libegl1', + 'libenchant.so.1': 'libenchant1c2a', + 'libepoxy.so.0': 'libepoxy0', + 'libevent-2.1.so.6': 'libevent-2.1-6', + 'libevdev.so.2': 'libevdev2', + 'libfontconfig.so.1': 'libfontconfig1', + 'libfreetype.so.6': 'libfreetype6', + 'libgbm.so.1': 'libgbm1', + 'libgdk_pixbuf-2.0.so.0': 'libgdk-pixbuf2.0-0', + 'libgdk-3.so.0': 'libgtk-3-0', + 'libgdk-x11-2.0.so.0': 'libgtk2.0-0', + 'libgio-2.0.so.0': 'libglib2.0-0', + 'libGL.so.1': 'libgl1', + 'libGLESv2.so.2': 'libgles2', + 'libglib-2.0.so.0': 'libglib2.0-0', + 'libgmodule-2.0.so.0': 'libglib2.0-0', + 'libgobject-2.0.so.0': 'libglib2.0-0', + 'libgstapp-1.0.so.0': 'gstreamer1.0-plugins-base', + 'libgstaudio-1.0.so.0': 'gstreamer1.0-plugins-base', + 'libgstbase-1.0.so.0': 'libgstreamer1.0-0', + 'libgstcodecparsers-1.0.so.0': 'gstreamer1.0-plugins-bad', + 'libgstfft-1.0.so.0': 'gstreamer1.0-plugins-base', + 'libgstgl-1.0.so.0': 'libgstreamer-gl1.0-0', + 'libgstpbutils-1.0.so.0': 'gstreamer1.0-plugins-base', + 'libgstreamer-1.0.so.0': 'libgstreamer1.0-0', + 'libgsttag-1.0.so.0': 'gstreamer1.0-plugins-base', + 'libgstvideo-1.0.so.0': 'gstreamer1.0-plugins-base', + 'libgthread-2.0.so.0': 'libglib2.0-0', + 'libgtk-3.so.0': 'libgtk-3-0', + 'libgtk-x11-2.0.so.0': 'libgtk2.0-0', + 'libharfbuzz-icu.so.0': 'libharfbuzz-icu0', + 'libharfbuzz.so.0': 'libharfbuzz0b', + 'libhyphen.so.0': 'libhyphen0', + 'libicudata.so.60': 'libicu60', + 'libicui18n.so.60': 'libicu60', + 'libicuuc.so.60': 'libicu60', + 'libjpeg.so.8': 'libjpeg-turbo8', + 'libnotify.so.4': 'libnotify4', + 'libnspr4.so': 'libnspr4', + 'libnss3.so': 'libnss3', + 'libnssutil3.so': 'libnss3', + 'libopenjp2.so.7': 'libopenjp2-7', + 'libopus.so.0': 'libopus0', + 'libpango-1.0.so.0': 'libpango-1.0-0', + 'libpangocairo-1.0.so.0': 'libpangocairo-1.0-0', + 'libpangoft2-1.0.so.0': 'libpangoft2-1.0-0', + 'libpng16.so.16': 'libpng16-16', + 'libsecret-1.so.0': 'libsecret-1-0', + 'libsmime3.so': 'libnss3', + 'libvpx.so.5': 'libvpx5', + 'libwayland-client.so.0': 'libwayland-client0', + 'libwayland-egl.so.1': 'libwayland-egl1', + 'libwayland-server.so.0': 'libwayland-server0', + 'libwebp.so.6': 'libwebp6', + 'libwebpdemux.so.2': 'libwebpdemux2', + 'libwoff2dec.so.1.0.2': 'libwoff1', + 'libX11-xcb.so.1': 'libx11-xcb1', + 'libX11.so.6': 'libx11-6', + 'libxcb-dri3.so.0': 'libxcb-dri3-0', + 'libxcb-shm.so.0': 'libxcb-shm0', + 'libxcb.so.1': 'libxcb1', + 'libXcomposite.so.1': 'libxcomposite1', + 'libXcursor.so.1': 'libxcursor1', + 'libXdamage.so.1': 'libxdamage1', + 'libXext.so.6': 'libxext6', + 'libXfixes.so.3': 'libxfixes3', + 'libXi.so.6': 'libxi6', + 'libxkbcommon.so.0': 'libxkbcommon0', + 'libxml2.so.2': 'libxml2', + 'libXrandr.so.2': 'libxrandr2', + 'libXrender.so.1': 'libxrender1', + 'libxslt.so.1': 'libxslt1.1', + 'libXt.so.6': 'libxt6', + 'libXtst.so.6': 'libxtst6', + }, + }, + + 'ubuntu20.04': { + tools: [ + 'xvfb', + 'fonts-noto-color-emoji', + 'ttf-unifont', + 'libfontconfig', + 'libfreetype6', + 'xfonts-cyrillic', + 'xfonts-scalable', + 'fonts-liberation', + 'fonts-ipafont-gothic', + 'fonts-wqy-zenhei', + 'fonts-tlwg-loma-otf', + 'ttf-ubuntu-font-family', + ], + chromium: [ + 'fonts-liberation', + 'libasound2', + 'libatk-bridge2.0-0', + 'libatk1.0-0', + 'libatspi2.0-0', + 'libcairo2', + 'libcups2', + 'libdbus-1-3', + 'libdrm2', + 'libegl1', + 'libgbm1', + 'libglib2.0-0', + 'libgtk-3-0', + 'libnspr4', + 'libnss3', + 'libpango-1.0-0', + 'libx11-6', + 'libx11-xcb1', + 'libxcb1', + 'libxcomposite1', + 'libxdamage1', + 'libxext6', + 'libxfixes3', + 'libxrandr2', + 'libxshmfence1', + ], + firefox: [ + 'ffmpeg', + 'libatk1.0-0', + 'libcairo-gobject2', + 'libcairo2', + 'libdbus-1-3', + 'libdbus-glib-1-2', + 'libfontconfig1', + 'libfreetype6', + 'libgdk-pixbuf2.0-0', + 'libglib2.0-0', + 'libgtk-3-0', + 'libpango-1.0-0', + 'libpangocairo-1.0-0', + 'libpangoft2-1.0-0', + 'libx11-6', + 'libx11-xcb1', + 'libxcb-shm0', + 'libxcb1', + 'libxcomposite1', + 'libxcursor1', + 'libxdamage1', + 'libxext6', + 'libxfixes3', + 'libxi6', + 'libxrender1', + 'libxt6', + ], + webkit: [ + 'gstreamer1.0-libav', + 'gstreamer1.0-plugins-bad', + 'gstreamer1.0-plugins-base', + 'gstreamer1.0-plugins-good', + 'libatk-bridge2.0-0', + 'libatk1.0-0', + 'libcairo2', + 'libegl1', + 'libenchant1c2a', + 'libepoxy0', + 'libevdev2', + 'libfontconfig1', + 'libfreetype6', + 'libgdk-pixbuf2.0-0', + 'libgl1', + 'libgles2', + 'libglib2.0-0', + 'libgstreamer-gl1.0-0', + 'libgstreamer1.0-0', + 'libgtk-3-0', + 'libharfbuzz-icu0', + 'libharfbuzz0b', + 'libhyphen0', + 'libicu66', + 'libjpeg-turbo8', + 'libnotify4', + 'libopenjp2-7', + 'libopus0', + 'libpango-1.0-0', + 'libpng16-16', + 'libsecret-1-0', + 'libsoup2.4-1', + 'libvpx6', + 'libwayland-client0', + 'libwayland-egl1', + 'libwayland-server0', + 'libwebp6', + 'libwebpdemux2', + 'libwoff1', + 'libx11-6', + 'libxcomposite1', + 'libxdamage1', + 'libxkbcommon0', + 'libxml2', + 'libxslt1.1', + ], + lib2package: { + 'libasound.so.2': 'libasound2', + 'libatk-1.0.so.0': 'libatk1.0-0', + 'libatk-bridge-2.0.so.0': 'libatk-bridge2.0-0', + 'libatspi.so.0': 'libatspi2.0-0', + 'libcairo-gobject.so.2': 'libcairo-gobject2', + 'libcairo.so.2': 'libcairo2', + 'libcups.so.2': 'libcups2', + 'libdbus-1.so.3': 'libdbus-1-3', + 'libdbus-glib-1.so.2': 'libdbus-glib-1-2', + 'libdrm.so.2': 'libdrm2', + 'libEGL.so.1': 'libegl1', + 'libenchant.so.1': 'libenchant1c2a', + 'libevdev.so.2': 'libevdev2', + 'libepoxy.so.0': 'libepoxy0', + 'libfontconfig.so.1': 'libfontconfig1', + 'libfreetype.so.6': 'libfreetype6', + 'libgbm.so.1': 'libgbm1', + 'libgdk_pixbuf-2.0.so.0': 'libgdk-pixbuf2.0-0', + 'libgdk-3.so.0': 'libgtk-3-0', + 'libgdk-x11-2.0.so.0': 'libgtk2.0-0', + 'libgio-2.0.so.0': 'libglib2.0-0', + 'libGL.so.1': 'libgl1', + 'libGLESv2.so.2': 'libgles2', + 'libglib-2.0.so.0': 'libglib2.0-0', + 'libgmodule-2.0.so.0': 'libglib2.0-0', + 'libgobject-2.0.so.0': 'libglib2.0-0', + 'libgstapp-1.0.so.0': 'gstreamer1.0-plugins-base', + 'libgstaudio-1.0.so.0': 'gstreamer1.0-plugins-base', + 'libgstbase-1.0.so.0': 'libgstreamer1.0-0', + 'libgstcodecparsers-1.0.so.0': 'gstreamer1.0-plugins-bad', + 'libgstfft-1.0.so.0': 'gstreamer1.0-plugins-base', + 'libgstgl-1.0.so.0': 'libgstreamer-gl1.0-0', + 'libgstpbutils-1.0.so.0': 'gstreamer1.0-plugins-base', + 'libgstreamer-1.0.so.0': 'libgstreamer1.0-0', + 'libgsttag-1.0.so.0': 'gstreamer1.0-plugins-base', + 'libgstvideo-1.0.so.0': 'gstreamer1.0-plugins-base', + 'libgthread-2.0.so.0': 'libglib2.0-0', + 'libgtk-3.so.0': 'libgtk-3-0', + 'libgtk-x11-2.0.so.0': 'libgtk2.0-0', + 'libharfbuzz-icu.so.0': 'libharfbuzz-icu0', + 'libharfbuzz.so.0': 'libharfbuzz0b', + 'libhyphen.so.0': 'libhyphen0', + 'libicui18n.so.66': 'libicu66', + 'libicuuc.so.66': 'libicu66', + 'libjpeg.so.8': 'libjpeg-turbo8', + 'libnotify.so.4': 'libnotify4', + 'libnspr4.so': 'libnspr4', + 'libnss3.so': 'libnss3', + 'libnssutil3.so': 'libnss3', + 'libopenjp2.so.7': 'libopenjp2-7', + 'libopus.so.0': 'libopus0', + 'libpango-1.0.so.0': 'libpango-1.0-0', + 'libpangocairo-1.0.so.0': 'libpangocairo-1.0-0', + 'libpangoft2-1.0.so.0': 'libpangoft2-1.0-0', + 'libpng16.so.16': 'libpng16-16', + 'libsecret-1.so.0': 'libsecret-1-0', + 'libsmime3.so': 'libnss3', + 'libsoup-2.4.so.1': 'libsoup2.4-1', + 'libvpx.so.6': 'libvpx6', + 'libwayland-client.so.0': 'libwayland-client0', + 'libwayland-egl.so.1': 'libwayland-egl1', + 'libwayland-server.so.0': 'libwayland-server0', + 'libwebp.so.6': 'libwebp6', + 'libwebpdemux.so.2': 'libwebpdemux2', + 'libwoff2dec.so.1.0.2': 'libwoff1', + 'libX11-xcb.so.1': 'libx11-xcb1', + 'libX11.so.6': 'libx11-6', + 'libxcb-dri3.so.0': 'libxcb-dri3-0', + 'libxcb-shm.so.0': 'libxcb-shm0', + 'libxcb.so.1': 'libxcb1', + 'libXcomposite.so.1': 'libxcomposite1', + 'libXcursor.so.1': 'libxcursor1', + 'libXdamage.so.1': 'libxdamage1', + 'libXext.so.6': 'libxext6', + 'libXfixes.so.3': 'libxfixes3', + 'libXi.so.6': 'libxi6', + 'libxkbcommon.so.0': 'libxkbcommon0', + 'libxml2.so.2': 'libxml2', + 'libXrandr.so.2': 'libxrandr2', + 'libXrender.so.1': 'libxrender1', + 'libxslt.so.1': 'libxslt1.1', + 'libXt.so.6': 'libxt6', + 'libXtst.so.6': 'libxtst6', + 'libxshmfence.so.1': 'libxshmfence1', + }, + }, + + 'ubuntu21.04': { + tools: [ + 'xvfb', + 'fonts-noto-color-emoji', + 'ttf-unifont', + 'libfontconfig', + 'libfreetype6', + 'xfonts-cyrillic', + 'xfonts-scalable', + 'fonts-liberation', + 'fonts-ipafont-gothic', + 'fonts-wqy-zenhei', + 'fonts-tlwg-loma-otf', + 'ttf-ubuntu-font-family', + ], + chromium: [ + 'libasound2', + 'libatk-bridge2.0-0', + 'libatk1.0-0', + 'libatspi2.0-0', + 'libcairo2', + 'libcups2', + 'libdbus-1-3', + 'libdrm2', + 'libgbm1', + 'libglib2.0-0', + 'libnspr4', + 'libnss3', + 'libpango-1.0-0', + 'libx11-6', + 'libxcb1', + 'libxcomposite1', + 'libxdamage1', + 'libxext6', + 'libxfixes3', + 'libxkbcommon0', + 'libxrandr2', + 'libxshmfence1' + ], + firefox: [ + 'ffmpeg', + 'libatk1.0-0', + 'libcairo-gobject2', + 'libcairo2', + 'libdbus-1-3', + 'libdbus-glib-1-2', + 'libfontconfig1', + 'libfreetype6', + 'libgdk-pixbuf-2.0-0', + 'libglib2.0-0', + 'libgtk-3-0', + 'libgtk2.0-0', + 'libharfbuzz0b', + 'libpango-1.0-0', + 'libpangocairo-1.0-0', + 'libpangoft2-1.0-0', + 'libx11-6', + 'libx11-xcb1', + 'libxcb-shm0', + 'libxcb1', + 'libxcomposite1', + 'libxcursor1', + 'libxdamage1', + 'libxext6', + 'libxfixes3', + 'libxi6', + 'libxrender1', + 'libxt6' + ], + webkit: [ + 'gstreamer1.0-libav', + 'gstreamer1.0-plugins-bad', + 'gstreamer1.0-plugins-base', + 'gstreamer1.0-plugins-good', + 'libatk-bridge2.0-0', + 'libatk1.0-0', + 'libcairo2', + 'libegl1', + 'libepoxy0', + 'libevdev2', + 'libfontconfig1', + 'libfreetype6', + 'libgdk-pixbuf-2.0-0', + 'libgl1', + 'libgles2', + 'libglib2.0-0', + 'libgstreamer-gl1.0-0', + 'libgstreamer-plugins-bad1.0-0', + 'libgstreamer-plugins-base1.0-0', + 'libgstreamer1.0-0', + 'libgtk-3-0', + 'libharfbuzz-icu0', + 'libharfbuzz0b', + 'libhyphen0', + 'libjavascriptcoregtk-4.0-18', + 'libjpeg-turbo8', + 'liblcms2-2', + 'libnotify4', + 'libopenjp2-7', + 'libopus0', + 'libpango-1.0-0', + 'libpng16-16', + 'libsecret-1-0', + 'libsoup2.4-1', + 'libvpx6', + 'libwayland-client0', + 'libwayland-egl1', + 'libwayland-server0', + 'libwebkit2gtk-4.0-37', + 'libwebp6', + 'libwebpdemux2', + 'libwoff1', + 'libwpe-1.0-1', + 'libwpebackend-fdo-1.0-1', + 'libwpewebkit-1.0-3', + 'libx11-6', + 'libxcomposite1', + 'libxdamage1', + 'libxkbcommon0', + 'libxml2', + 'libxslt1.1' + ], + lib2package: { + 'libasound.so.2': 'libasound2', + 'libatk-1.0.so.0': 'libatk1.0-0', + 'libatk-bridge-2.0.so.0': 'libatk-bridge2.0-0', + 'libatspi.so.0': 'libatspi2.0-0', + 'libcairo-gobject.so.2': 'libcairo-gobject2', + 'libcairo.so.2': 'libcairo2', + 'libcups.so.2': 'libcups2', + 'libdbus-1.so.3': 'libdbus-1-3', + 'libdbus-glib-1.so.2': 'libdbus-glib-1-2', + 'libdrm.so.2': 'libdrm2', + 'libEGL.so.1': 'libegl1', + 'libepoxy.so.0': 'libepoxy0', + 'libfontconfig.so.1': 'libfontconfig1', + 'libfreetype.so.6': 'libfreetype6', + 'libgbm.so.1': 'libgbm1', + 'libgdk_pixbuf-2.0.so.0': 'libgdk-pixbuf-2.0-0', + 'libgdk-3.so.0': 'libgtk-3-0', + 'libgdk-x11-2.0.so.0': 'libgtk2.0-0', + 'libgio-2.0.so.0': 'libglib2.0-0', + 'libGL.so.1': 'libgl1', + 'libGLESv2.so.2': 'libgles2', + 'libglib-2.0.so.0': 'libglib2.0-0', + 'libgmodule-2.0.so.0': 'libglib2.0-0', + 'libgobject-2.0.so.0': 'libglib2.0-0', + 'libgstapp-1.0.so.0': 'libgstreamer-plugins-base1.0-0', + 'libgstaudio-1.0.so.0': 'libgstreamer-plugins-base1.0-0', + 'libgstbase-1.0.so.0': 'libgstreamer1.0-0', + 'libgstcodecparsers-1.0.so.0': 'libgstreamer-plugins-bad1.0-0', + 'libgstfft-1.0.so.0': 'libgstreamer-plugins-base1.0-0', + 'libgstgl-1.0.so.0': 'libgstreamer-gl1.0-0', + 'libgstpbutils-1.0.so.0': 'libgstreamer-plugins-base1.0-0', + 'libgstreamer-1.0.so.0': 'libgstreamer1.0-0', + 'libgsttag-1.0.so.0': 'libgstreamer-plugins-base1.0-0', + 'libgstvideo-1.0.so.0': 'libgstreamer-plugins-base1.0-0', + 'libgthread-2.0.so.0': 'libglib2.0-0', + 'libgtk-3.so.0': 'libgtk-3-0', + 'libgtk-x11-2.0.so.0': 'libgtk2.0-0', + 'libharfbuzz-icu.so.0': 'libharfbuzz-icu0', + 'libharfbuzz.so.0': 'libharfbuzz0b', + 'libhyphen.so.0': 'libhyphen0', + 'libjavascriptcoregtk-4.0.so.18': 'libjavascriptcoregtk-4.0-18', + 'libjpeg.so.8': 'libjpeg-turbo8', + 'liblcms2.so.2': 'liblcms2-2', + 'libnotify.so.4': 'libnotify4', + 'libnspr4.so': 'libnspr4', + 'libnss3.so': 'libnss3', + 'libnssutil3.so': 'libnss3', + 'libopenjp2.so.7': 'libopenjp2-7', + 'libopus.so.0': 'libopus0', + 'libpango-1.0.so.0': 'libpango-1.0-0', + 'libpangocairo-1.0.so.0': 'libpangocairo-1.0-0', + 'libpangoft2-1.0.so.0': 'libpangoft2-1.0-0', + 'libpng16.so.16': 'libpng16-16', + 'libsecret-1.so.0': 'libsecret-1-0', + 'libsmime3.so': 'libnss3', + 'libsoup-2.4.so.1': 'libsoup2.4-1', + 'libvpx.so.6': 'libvpx6', + 'libwayland-client.so.0': 'libwayland-client0', + 'libwayland-egl.so.1': 'libwayland-egl1', + 'libwayland-server.so.0': 'libwayland-server0', + 'libwebkit2gtk-4.0.so.37': 'libwebkit2gtk-4.0-37', + 'libwebp.so.6': 'libwebp6', + 'libwebpdemux.so.2': 'libwebpdemux2', + 'libwoff2dec.so.1.0.2': 'libwoff1', + 'libwpe-1.0.so.1': 'libwpe-1.0-1', + 'libWPEBackend-fdo-1.0.so.1': 'libwpebackend-fdo-1.0-1', + 'libWPEWebKit-1.0.so.3': 'libwpewebkit-1.0-3', + 'libX11-xcb.so.1': 'libx11-xcb1', + 'libX11.so.6': 'libx11-6', + 'libxcb-shm.so.0': 'libxcb-shm0', + 'libxcb.so.1': 'libxcb1', + 'libXcomposite.so.1': 'libxcomposite1', + 'libXcursor.so.1': 'libxcursor1', + 'libXdamage.so.1': 'libxdamage1', + 'libXext.so.6': 'libxext6', + 'libXfixes.so.3': 'libxfixes3', + 'libXi.so.6': 'libxi6', + 'libxkbcommon.so.0': 'libxkbcommon0', + 'libxml2.so.2': 'libxml2', + 'libXrandr.so.2': 'libxrandr2', + 'libXrender.so.1': 'libxrender1', + 'libxshmfence.so.1': 'libxshmfence1', + 'libxslt.so.1': 'libxslt1.1', + 'libXt.so.6': 'libxt6', + }, + } +}; + +deps['ubuntu20.04-arm64'] = { + tools: [...deps['ubuntu20.04'].tools], + chromium: [...deps['ubuntu20.04'].chromium], + firefox: [...deps['ubuntu20.04'].firefox], + webkit: [ + ...deps['ubuntu20.04'].webkit, + 'libevent-2.1-7', + ], + lib2package: { + ...deps['ubuntu20.04'].lib2package, + 'libevent-2.1.so.7': 'libevent-2.1.so.7', + }, +}; +