Skip to content

chromium: resolve ref to rev for blink version string#358997

Merged
emilylange merged 1 commit intoNixOS:masterfrom
emilylange:chromium-version-embed
Nov 25, 2024
Merged

chromium: resolve ref to rev for blink version string#358997
emilylange merged 1 commit intoNixOS:masterfrom
emilylange:chromium-version-embed

Conversation

@emilylange
Copy link
Member

Ref: #357925 (comment)

This allows us to match the version the binaries use more closely.

For example, chromedriver darwin (binary) reports the following:

chromedriver --version
ChromeDriver 131.0.6778.85 (3d81e41b6f3ac8bcae63b32e8145c9eb0cd60a2d-refs/branch-heads/6778@{#2285})

while on Linux, where we build chromedriver based on the chromium derivation from source and control the string ourselves:

chromedriver --version
ChromeDriver 131.0.6778.85 (131.0.6778.85-refs/heads/master@{#0})

With this commit, the version string now reports:

chromedriver --version
ChromeDriver 131.0.6778.85 (3d81e41b6f3ac8bcae63b32e8145c9eb0cd60a2d-refs/tags/131.0.6778.85@{#0})

This may seem like a small and unimportant detail, but turns out an internal function within chromedriver depends on the git hash.

See https://chromium.googlesource.com/chromium/src/+/131.0.6778.85/chrome/test/chromedriver/chrome/browser_info.cc#172

This caused the tests of one package (single-file-cli) that use selenium with chromium and chromedriver to fail in 24.05.

Only in 24.05, because 24.11 and unstable removed their test dependency on chromedriver because it wasn't available for aarch64-linux at that time.

Running phase: checkPhase
Serving HTTP on 127.0.0.1 port 8000 (http://127.0.0.1:8000/) ... session not created
from unknown error: unrecognized Blink revision: 131.0.6778.85 URL: http://127.0.0.1:8000 Stack: SessionNotCreatedError: session not created from unknown error: unrecognized Blink revision: 131.0.6778.85
    at Object.throwDecodedError (/build/source/node_modules/selenium-webdriver/lib/error.js:524:15)
    at parseHttpResponse (/build/source/node_modules/selenium-webdriver/lib/http.js:601:13)
    at Executor.execute (/build/source/node_modules/selenium-webdriver/lib/http.js:529:28)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)

Things done

  • Built on platform(s)
    • x86_64-linux
    • aarch64-linux
    • x86_64-darwin
    • aarch64-darwin
  • For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)
    • sandbox = relaxed
    • sandbox = true
  • Tested, as applicable:
  • Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
  • Tested basic functionality of all binary files (usually in ./result/bin/)
  • 25.05 Release Notes (or backporting 24.11 and 25.05 Release notes)
    • (Package updates) Added a release notes entry if the change is major or breaking
    • (Module updates) Added a release notes entry if the change is significant
    • (Module addition) Added a release notes entry if adding a new NixOS module
  • Fits CONTRIBUTING.md.

This allows us to match the version the binaries use more closely.

For example, chromedriver darwin (binary) reports the following:

~~~bash
chromedriver --version
ChromeDriver 131.0.6778.85 (3d81e41b6f3ac8bcae63b32e8145c9eb0cd60a2d-refs/branch-heads/6778@{NixOS#2285})
~~~

while on Linux, where we build chromedriver based on the chromium
derivation from source and control the string ourselves:

~~~bash
chromedriver --version
ChromeDriver 131.0.6778.85 (131.0.6778.85-refs/heads/master@{#0})
~~~

With this commit, the version string now reports:

~~~bash
chromedriver --version
ChromeDriver 131.0.6778.85 (3d81e41b6f3ac8bcae63b32e8145c9eb0cd60a2d-refs/tags/131.0.6778.85@{#0})
~~~

This may seem like a small and unimportant detail, but turns out an
internal function within chromedriver depends on the git hash.

See https://chromium.googlesource.com/chromium/src/+/131.0.6778.85/chrome/test/chromedriver/chrome/browser_info.cc#172

This caused the tests of one package (single-file-cli) that use
selenium with chromium and chromedriver to fail in 24.05.

Only in 24.05, because 24.11 and unstable removed their test dependency
on chromedriver because it wasn't available for aarch64-linux at that
time.

~~~
Running phase: checkPhase
Serving HTTP on 127.0.0.1 port 8000 (http://127.0.0.1:8000/) ...
session not created
from unknown error: unrecognized Blink revision: 131.0.6778.85 URL: http://127.0.0.1:8000
Stack: SessionNotCreatedError: session not created
from unknown error: unrecognized Blink revision: 131.0.6778.85
    at Object.throwDecodedError (/build/source/node_modules/selenium-webdriver/lib/error.js:524:15)
    at parseHttpResponse (/build/source/node_modules/selenium-webdriver/lib/http.js:601:13)
    at Executor.execute (/build/source/node_modules/selenium-webdriver/lib/http.js:529:28)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
~~~
@emilylange
Copy link
Member Author

nixpkgs-review result

Generated using nixpkgs-review.

Command: nixpkgs-review pr 358997


x86_64-linux

✅ 42 packages built:
  • aws-azure-login
  • chromedriver
  • chromium.sandbox
  • chromium
  • fast-cli
  • flaresolverr
  • gotenberg
  • grafana-kiosk
  • mermaid-cli
  • mermaid-filter
  • percollate
  • pinnwand.dist
  • playwright-test
  • puppeteer-cli
  • python311Packages.django-filingcabinet.dist
  • python311Packages.django-filingcabinet
  • python311Packages.great-tables.dist
  • python311Packages.great-tables
  • python311Packages.pytest-playwright.dist
  • python311Packages.pytest-playwright
  • python311Packages.shiny.dist
  • python311Packages.shiny
  • python312Packages.django-filingcabinet.dist
  • python312Packages.django-filingcabinet
  • python312Packages.great-tables.dist
  • python312Packages.great-tables
  • python312Packages.pytest-playwright.dist
  • python312Packages.pytest-playwright
  • python312Packages.shiny.dist
  • python312Packages.shiny
  • selendroid
  • selenium-server-standalone
  • sharedown
  • single-file-cli
  • sitespeed-io
  • undetected-chromedriver
  • ungoogled-chromium.sandbox
  • ungoogled-chromium
  • vhs
  • vscode-extensions.yzane.markdown-pdf
  • wayback

and single-file-cli builds successfully even with 0a5e4d1 reverted :)

@emilylange emilylange merged commit 8586e05 into NixOS:master Nov 25, 2024
@emilylange emilylange deleted the chromium-version-embed branch November 25, 2024 22:19
@github-actions
Copy link
Contributor

Successfully created backport PR for release-24.11:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant