Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dynamically determine Chromium arm64 binary links #191

Merged
merged 2 commits into from
Jul 27, 2023

Conversation

montehurd
Copy link
Collaborator

Bug: T335931

@moabualruz
Copy link
Collaborator

LGTM worked fine on my local machine. let me know if any further feedback is needed

@nicholasray
Copy link
Contributor

Thanks for the PR @montehurd ! For some reason, I'm getting the following error after running ./pixel.js clean; ./pixel.js reference:

[+] Building 0.2s (2/3)                                                                                                                                                                                    
 => [internal] load build definition from Dockerfile.visual-regression                                                                                                                                0.0s
 => => transferring dockerfile: 2.69kB                                                                                                                                                                0.0s
[+] Building 2.4s (8/8) FINISHED                                                                                                                                                                           
 => [internal] load build definition from Dockerfile.database                                                                                                                                         0.1s
 => => transferring dockerfile: 477B                                                                                                                                                                  0.1s
 => [internal] load .dockerignore                                                                                                                                                                     0.0s
 => => transferring context: 34B                                                                                                                                                                      0.0s
 => [internal] load metadata for docker.io/library/mariadb:10.6.7                                                                                                                                     2.3s
 => [internal] load build context                                                                                                                                                                     0.0s
 => => transferring context: 57B                                                                                                                                                                      0.0s
 => [1/3] FROM docker.io/library/mariadb:10.6.7@sha256:9fb960cff340126826a2f395ccb3ae1c8ca9acc63603f477db9ca2b7e2eed744                                                                               0.0s
[+] Building 2.5s (5/10)                                                                                                                                                                                   
[+] Building 2.8s (5/10)                                                                                                                                                                                   
 => [internal] load build definition from Dockerfile.visual-regression                                                                                                                                0.0s
 => => transferring dockerfile: 2.69kB                                                                                                                                                                0.0s
 => [internal] load .dockerignore                                                                                                                                                                     0.0s
 => => transferring context: 34B                                                                                                                                                                      0.0s
[+] Building 3.2s (5/10)                                                                                                                                                                                   
 => [internal] load build definition from Dockerfile.visual-regression                                                                                                                                0.0s
 => => transferring dockerfile: 2.69kB                                                                                                                                                                0.0s
 => [internal] load .dockerignore                                                                                                                                                                     0.0s 
 => => transferring context: 34B                                                                                                                                                                      0.0s
 => [internal] load metadata for docker.io/library/node:16.15.1-bullseye                                                                                                                              2.3s
 => [1/7] FROM docker.io/library/node:16.15.1-bullseye@sha256:294ed7085d137d4f16fd97c0e1518f1d0386dd7fda7c4897d82c7ba65e15fdd6                                                                        0.0s
 => CACHED [2/7] RUN apt-get update &&  apt-get install -y git sudo software-properties-common                                                                                                        0.0s
 => [3/7] RUN set -ex &&     ARCH=`uname -m` &&     if [ "$ARCH" = "x86_64" ]; then        sudo npm install -g --unsafe-perm=true --allow-root [email protected];     else        sudo PUPPETEER_SKIP  0.8s
[+] Building 0.5s (14/14) FINISHED                                                                                                                                                                         
 => [internal] load build definition from Dockerfile.mediawiki                                                                                                                                        0.0s
 => => transferring dockerfile: 1.02kB                                                                                                                                                                0.0s
 => [internal] load .dockerignore                                                                                                                                                                     0.0s
 => => transferring context: 34B                                                                                                                                                                      0.0s
 => [internal] load metadata for docker-registry.wikimedia.org/dev/buster-php74-fpm:1.0.0-s3                                                                                                          0.3s
[+] Building 314.6s (6/10)                                                                                                                                                                                 
 => [internal] load build definition from Dockerfile.visual-regression                                                                                                                                0.0s
 => => transferring dockerfile: 2.69kB                                                                                                                                                                0.0s
 => [internal] load .dockerignore                                                                                                                                                                     0.0s
 => => transferring context: 34B                                                                                                                                                                      0.0s
 => [internal] load metadata for docker.io/library/node:16.15.1-bullseye                                                                                                                              2.3s
 => [1/7] FROM docker.io/library/node:16.15.1-bullseye@sha256:294ed7085d137d4f16fd97c0e1518f1d0386dd7fda7c4897d82c7ba65e15fdd6                                                                        0.0s
 => CACHED [2/7] RUN apt-get update &&  apt-get install -y git sudo software-properties-common                                                                                                        0.0s
 => ERROR [3/7] RUN set -ex &&     ARCH=`uname -m` &&     if [ "$ARCH" = "x86_64" ]; then        sudo npm install -g --unsafe-perm=true --allow-root [email protected];     else        sudo PUPPET  312.2s
------                                                                                                                                                                                                     
 > [3/7] RUN set -ex &&     ARCH=`uname -m` &&     if [ "$ARCH" = "x86_64" ]; then        sudo npm install -g --unsafe-perm=true --allow-root [email protected];     else        sudo PUPPETEER_SKIP_DOWNLOAD=true PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install -g --unsafe-perm=true --allow-root [email protected] puppeteer-chromium-version-finder chromium-version-deb-finder &&        NODE_PATH="$(npm root -g):$(npm root -g)/backstopjs/node_modules" node -e "           const versionFinder = require('puppeteer-chromium-version-finder');           const debFinder = require('chromium-version-deb-finder');           (async () => {             const version = await versionFinder.getPuppeteerChromiumVersion();             const debUrls = await debFinder.getDebUrlsForVersionAndArch(version.MAJOR, version.MINOR, 'arm64');             console.log(debUrls.join('\n'));           })();        " |        xargs -I % sh -c 'set -x; echo "Downloading: %"; wget %; echo "Downloaded: %"' &&        apt install -y ./*.deb &&        rm -f ./*.deb &&        sudo test -f /usr/bin/chromium && sudo ln -s /usr/bin/chromium /usr/bin/chromium-browser && sudo ln -s /usr/bin/chromium /usr/bin/chrome;     fi:
#0 0.145 + uname -m
#0 0.146 + ARCH=aarch64
#0 0.146 + [ aarch64 = x86_64 ]
#0 0.146 + sudo PUPPETEER_SKIP_DOWNLOAD=true PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install -g --unsafe-perm=true --allow-root [email protected] puppeteer-chromium-version-finder chromium-version-deb-finder
#0 0.336 npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
#0 8.726 npm WARN deprecated [email protected]: < 19.4.0 is no longer supported
#0 309.7 
#0 309.7 added 204 packages, and audited 205 packages in 5m
#0 309.7 
#0 309.7 34 packages are looking for funding
#0 309.7   run `npm fund` for details
#0 309.7 
#0 309.7 found 0 vulnerabilities
#0 309.7 npm notice 
#0 309.7 npm notice New major version of npm available! 8.11.0 -> 9.6.7
#0 309.7 npm notice Changelog: <https://github.com/npm/cli/releases/tag/v9.6.7>
#0 309.7 npm notice Run `npm install -g [email protected]` to update!
#0 309.7 npm notice 
#0 309.7 + xargs -I % sh -c set -x; echo "Downloading: %"; wget %; echo "Downloaded: %"
#0 309.7 + npm root -g
#0 309.9 npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
#0 309.9 + npm root -g
#0 310.0 npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.
#0 310.0 + NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node_modules/backstopjs/node_modules node -e            const versionFinder = require('puppeteer-chromium-version-finder');           const debFinder = require('chromium-version-deb-finder');           (async () => {             const version = await versionFinder.getPuppeteerChromiumVersion();             const debUrls = await debFinder.getDebUrlsForVersionAndArch(version.MAJOR, version.MINOR, 'arm64');             console.log(debUrls.join('\n'));           })();        
#0 311.7 [eval]:1
#0 311.7            const versionFinder = require('puppeteer-chromium-version-finder');           const debFinder = require('chromium-version-deb-finder');           (async () => {             const version = await versionFinder.getPuppeteerChromiumVersion();             const debUrls = await debFinder.getDebUrlsForVersionAndArch(version.MAJOR, version.MINOR, 'arm64');             console.log(debUrls.join('\n'));           })();        
#0 311.7                                                                                                                                                                                                                                                                                                                                                                                                            ^
#0 311.7 
#0 311.7 TypeError: Cannot read properties of undefined (reading 'join')
#0 311.7     at [eval]:1:396
#0 311.7     at processTicksAndRejections (node:internal/process/task_queues:96:5)
#0 311.7 + apt install -y ./*.deb
#0 311.7 
#0 311.7 WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
#0 311.7 
#0 311.7 Reading package lists...
#0 312.0 E: Unsupported file ./*.deb given on commandline
------
failed to solve: executor failed running [/bin/sh -c set -ex &&     ARCH=`uname -m` &&     if [ "$ARCH" = "x86_64" ]; then        sudo npm install -g --unsafe-perm=true --allow-root backstopjs@${BACKSTOPJS_VERSION};     else        sudo PUPPETEER_SKIP_DOWNLOAD=true PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install -g --unsafe-perm=true --allow-root backstopjs@${BACKSTOPJS_VERSION} puppeteer-chromium-version-finder chromium-version-deb-finder &&        NODE_PATH="$(npm root -g):$(npm root -g)/backstopjs/node_modules" node -e "           const versionFinder = require('puppeteer-chromium-version-finder');           const debFinder = require('chromium-version-deb-finder');           (async () => {             const version = await versionFinder.getPuppeteerChromiumVersion();             const debUrls = await debFinder.getDebUrlsForVersionAndArch(version.MAJOR, version.MINOR, 'arm64');             console.log(debUrls.join('\n'));           })();        " |        xargs -I % sh -c 'set -x; echo "Downloading: %"; wget %; echo "Downloaded: %"' &&        apt install -y ./*.deb &&        rm -f ./*.deb &&        sudo test -f /usr/bin/chromium && sudo ln -s /usr/bin/chromium /usr/bin/chromium-browser && sudo ln -s /usr/bin/chromium /usr/bin/chrome;     fi]: exit code: 100
Error: Exit with error code 17
    at ChildProcess.<anonymous> (/Users/nray/Development/pixel/src/BatchSpawn.js:104:13)
    at ChildProcess.emit (node:events:513:28)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:293:12)

@montehurd montehurd force-pushed the chromium-arm-dynamic-binary branch from 3ab473f to b8e2270 Compare July 25, 2023 20:38
@montehurd
Copy link
Collaborator Author

montehurd commented Jul 25, 2023

@moabualruz @bernardwang

Was able to reproduce and fix the issue. One of the packages I was using had a breaking change.

Also made the "wget" call used to fetch the Chromium ".deb" files more resilient by setting its continue and retry params.

@montehurd montehurd merged commit 0633a51 into wikimedia:main Jul 27, 2023
@montehurd montehurd deleted the chromium-arm-dynamic-binary branch May 4, 2024 04:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants