Skip to content

fix(ci): use uv to provide boto3 in the claw server release - #2105

Open
Vasileios Plavos (VasilisPlavos) wants to merge 1 commit into
browseros-ai:mainfrom
VasilisPlavos:fix/claw-server-release-macos-pep668
Open

fix(ci): use uv to provide boto3 in the claw server release#2105
Vasileios Plavos (VasilisPlavos) wants to merge 1 commit into
browseros-ai:mainfrom
VasilisPlavos:fix/claw-server-release-macos-pep668

Conversation

@VasilisPlavos

Copy link
Copy Markdown

Fixes #2104

Problem

Release: BrowserOS neo (full) fails on both macOS matrix legs. Run 30975212125 (2026-08-05), jobs darwin-x64 (92211393146) and darwin-arm64 (92211393165), both die in Recover existing immutable target:

error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
    xyz, where xyz is the package you are trying to install.
##[error]Process completed with exit code 1.

Setup Python sets PYTHON_BIN=python3 on every non-Windows runner. On the macos-14 image that is Homebrew's Python, which is PEP 668 externally managed, so pip install --user boto3 is refused. The linux-x64 and windows-x64 legs of the same matrix pass — this is macOS-only, and it reproduced on two independent runners, so it is deterministic rather than a flake.

The step was introduced in 211f949 (#2096).

Because the release never completes, release/publish.py never writes the download/BrowserOS_neo* aliases that release/common.py derives from artifact_prefix. https://cdn.browseros.com/download/BrowserOS_neo.dmg and .../BrowserOS_neo_installer.exe both return 404 today, and those are the two URLs the README download badges point at.

Fix

astral-sh/setup-uv already runs two steps earlier, and this file already invokes Python through uv further down. Doing the same here keeps the system interpreter untouched and behaves identically on macOS, Linux and Windows:

           set -euo pipefail
-          "$PYTHON_BIN" -m pip install --user boto3
-          "$PYTHON_BIN" <<'PY'
+          uv run --no-project --with boto3 python <<'PY'

--no-project keeps uv from trying to resolve a surrounding project for what is a standalone script.

Scope

One line, one step. PYTHON_BIN and the Setup Python step stay as they are — the later "$PYTHON_BIN" blocks in this job (Stamp release version, Build Rust binary, Package artifact zip) import only stdlib modules, so dropping the --user install has no downstream effect. boto3 was needed by this step alone.

Not addressed here

The same pip install --user pattern appears at two more places in this file — Install R2 client (boto3) and Install AWS CLI (awscli). Both are on ubuntu-latest, so they aren't failing today, but they carry the same latent risk on a future runner image bump. Left out to keep this change minimal; happy to fold them in if you'd prefer.

Testing

Not verified locally — the failure is specific to the macOS runner image and I don't have one. The change is confined to how a single step obtains boto3; the Python script it feeds is byte-for-byte unchanged.

The "Recover existing immutable target" step bootstrapped boto3 with
`pip install --user`, which PEP 668 rejects on the macos-14 runner image
where python3 is Homebrew's externally-managed interpreter. Both macOS
matrix legs failed there, taking the whole BrowserOS neo release down
with them, so the download/BrowserOS_neo* CDN aliases were never
published and the README download badges still 404.

uv is already installed by setup-uv two steps earlier and is used the
same way further down this file, so run the recovery script through it
instead of touching the system interpreter. No other step in the job
needs boto3 - the remaining PYTHON_BIN blocks import only stdlib.

Fixes browseros-ai#2104

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LBYURhVWXK7APhMfcCcx27
@greptile-apps

greptile-apps Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

PR author is not in the allowed authors list.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Thank you for your contribution! Before we can merge this PR, we need you to sign our Contributor License Agreement.

To sign the CLA, please add a comment to this PR with the following text:

I have read the CLA Document and I hereby sign the CLA

You only need to sign once. After signing, this check will pass automatically.


Troubleshooting
  • Already signed but still failing? Comment recheck to trigger a re-verification.
  • Signed with a different email? Make sure your commit email matches your GitHub account email, or add your commit email to your GitHub account.
- - - I have read the CLA Document and I hereby sign the CLA - - - You can retrigger this bot by commenting **recheck** in this Pull Request. Posted by the **CLA Assistant Lite bot**.

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.

fix(ci): BrowserOS neo release fails on macOS - pip install hits PEP 668 externally-managed-environment

1 participant