Patch queue for Chromium customizations related to stealth CDP behavior.
upstream-revision.txtrecords the Chromium base commit this queue is built on.patches/containsgit format-patchoutput exported from../src.
Development happens in the Chromium checkout at ../src on branch:
ec/chromium-stealthcdpFrom ../src, export the current patch queue with:
rm -f ../chromium-stealthcdp/patches/*.patch
git format-patch --binary -o ../chromium-stealthcdp/patches "$(cat ../chromium-stealthcdp/upstream-revision.txt)..HEAD"Then commit the updated patch files in this repository.
From another Chromium src checkout at the recorded base revision or a compatible
descendant:
git am /path/to/chromium-stealthcdp/patches/*.patchDo not point downstream tools at src/out/.../chrome as a release contract.
Promote a smoke-tested build into the local artifact root instead:
scripts/smoke.sh \
--chrome ../src/out/Default/chrome \
--output /tmp/chromium-stealthcdp-smoke-current.json
scripts/promote-artifact.sh \
--src-out ../src/out/Default \
--artifact-root ../artifacts/chromium-stealthcdp \
--smoke-json /tmp/chromium-stealthcdp-smoke-current.jsonThe stable local executable path is then:
../artifacts/chromium-stealthcdp/current/chrome-linux/chrome
Each promoted artifact includes manifest.json, smoke.json, patch copies,
and patch checksums.
Before using a promoted binary for long-running agent-browser sessions, verify that it still matches the current Chromium checkout and patchset repo:
scripts/check-freshness.sh \
--src ../src \
--artifact ../artifacts/chromium-stealthcdp/currentExit code 0 means fresh, 1 means stale, 2 means missing, and 3 means the
manifest or artifact is invalid.
Package the promoted artifact, not the live Chromium build tree:
scripts/package-deb.sh \
--artifact ../artifacts/chromium-stealthcdp/current \
--output-dir ../artifacts/chromium-stealthcdp/packagesThe package installs side-by-side under /opt/chromium-stealthcdp and exposes:
/usr/bin/chromium-stealthcdp
Verify an installed package with:
scripts/verify-installed.shThe Windows lane is tracked in docs/updater-packager-system.md. The intended
flow is to cross-build Chromium from WSL with target_os = "win", launch the
resulting chrome.exe through PowerShell for smoke verification, promote it as
chrome-win64/, and package it first as a .zip.
After a Windows build exists, the artifact flow is:
scripts/ensure-windows-target.sh --workspace ..
PATH=/home/ecochran76/workspace.local/depot_tools:$PATH gclient sync
scripts/diagnose-windows-toolchain.sh
scripts/build.sh \
--target-os win \
--src ../src \
--out out/WinStealthCDP
scripts/smoke-windows.sh \
--chrome ../src/out/WinStealthCDP/chrome.exe \
--output /tmp/chromium-stealthcdp-smoke-win.json
scripts/promote-artifact.sh \
--platform win \
--src-out ../src/out/WinStealthCDP \
--artifact-root ../artifacts/chromium-stealthcdp \
--smoke-json /tmp/chromium-stealthcdp-smoke-win.json
scripts/package-windows-zip.sh \
--artifact ../artifacts/chromium-stealthcdp/current \
--output-dir ../artifacts/chromium-stealthcdp/packages
scripts/install-windows-user.sh \
--artifact ../artifacts/chromium-stealthcdp/current \
--force
scripts/smoke-windows.sh \
--chrome /mnt/c/Users/ecoch/AppData/Local/chromium-stealthcdp/current/chrome.exe \
--output /tmp/chromium-stealthcdp-installed-win-smoke.jsonWindows executables meant to be run should be installed on the Windows
filesystem. For a user-scoped WSL tenant install, the default root is the
tenant owner's LocalAppData directory, for example
/mnt/c/Users/ecoch/AppData/Local/chromium-stealthcdp/current/chrome.exe.
If gclient sync fails at src/build/vs_toolchain.py update --force with a
Google Storage 401, run scripts/diagnose-windows-toolchain.sh. The local
fallback needs Visual Studio C++ tools and Windows SDK 10.0.26100.0 installed
before Chromium's depot_tools/win_toolchain/package_from_installed.py can
produce the toolchain zip.