Skip to content

chore(deps): remove the awscli botocore/s3transfer pins once nixpkgs' awscli pairing is consistent again #4167

Open

Description

@dezren39

Context

Found via #2715 (the 2026-10-30 nixpkgs update). awscli (home/common/default.nix, via the assigned pkgs from nixos/nixpkgs/default.nix) fails pythonRuntimeDepsCheck on the new pins:

Checking runtime dependencies for awscli-1.44.21-py3-none-any.whl
  - botocore==1.42.31 not satisfied by version 1.43.79
  - s3transfer<0.17.0,>=0.16.0 not satisfied by version 0.19.2

awscli 1.44.21 pins botocore exactly and s3transfer to the 0.16 line, but every current pin (master/unstable/stable/25 alike) ships botocore 1.43.79 and s3transfer 0.19.2 — the tree is mid-transition (libraries bumped, awscli not yet). The skew is in the raw sets too, not an artifact of this repo's overlays. awscli and botocore are developed in lockstep (awscli imports botocore internals), so relaxing awscli's pins (pythonRelaxDeps) risks shipping a subtly broken CLI; pinning the libraries back for awscli only is the conservative fix.

The temporary fix

An overlay in nixos/nixpkgs/default.nix (next to the patchelf override) overrides awscli to use dedicated botocore 1.42.31 and s3transfer 0.16.0 derivations (the set's own expressions with version/source rolled back), leaving the set's botocore/s3transfer at their current versions for all other consumers (boto3 etc.).

Removal condition

Remove once stock awscli passes pythonRuntimeDepsCheck on the assigned set's pin — i.e. upstream nixpkgs bumps awscli to a release whose botocore/s3transfer requirements match the tree (or restores the pairing some other way).

Removal test

Delete the overlay; build awscli from the assigned pkgs plus config.system.build.toplevel for amd; both must succeed, and aws --version in the system profile should report the tree's awscli.

Acceptance criteria

  • The temporary awscli overlay in nixos/nixpkgs/default.nix (dedicated botocore 1.42.31 / s3transfer 0.16.0 derivations) is removed once stock awscli passes pythonRuntimeDepsCheck on the assigned set's pin.
  • With the overlay deleted, awscli builds from the assigned pkgs and config.system.build.toplevel for amd builds successfully.
  • aws --version in the system profile reports the tree's awscli version.

Activity

  1. added
    kind/infrastructureInfrastructure / host-portability work
    priority/lowNice to have; do when convenient
    effort/sSmall: expected under 2 hours of work
    area/nixNix expressions, flakes, and packaging
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Nov 2, 2026
  2. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    Intake review

    🤖 Fleet monitor (repo-fleet-monitor) intake pass, 2026-11-02.

    • Related: filed from the context of issue chore(deps): nixpkgs update blocked 2026-10-30 #2715 (the 2026-10-30 nixpkgs update); the temporary overlay it removes was added next to the patchelf override in nixos/nixpkgs/default.nix.
    • Live check: still live — the removal condition is upstream-dependent (stock awscli must first pass pythonRuntimeDepsCheck against the tree's botocore/s3transfer pins); no merged PR references this issue.
    • Notes: the issue is unusually complete for intake: it names the exact failure, why pythonRelaxDeps is the wrong fix (awscli imports botocore internals), the removal condition, and a concrete removal test. Acceptance criteria appended from its own Removal test section.
    • Risks: removing the overlay early ships an awscli whose runtime dependency check fails; removing it late is harmless. The trigger is external (nixpkgs awscli bump), so this may sit until a future nixpkgs update — re-check at each update.
    • Suggested approach: at each nixpkgs update, try deleting the overlay and building awscli + toplevel for amd; when both pass, land the removal as its own small PR citing this issue.
  3. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    Implemented on the nixpkgs-update branch (commit d9ee24c), as an overlay in nixos/nixpkgs/default.nix next to the patchelf override:

    • botocore rolled back to 1.42.31 and s3transfer to 0.16.0 as dedicated derivations (hashes harvested from mismatch builds), used ONLY by awscli: its dependencies are rewritten to point at them. The set's botocore/s3transfer stay at 1.43.79/0.19.2 for all other consumers (aiobotocore etc.) — graph-verified.
    • The pinned s3transfer is itself pointed at the pinned botocore; otherwise awscli's closure contains both botocores and pythonCatchConflictsPhase fails the build.
    • awscli's installCheckPhase grep is retargeted from the set's botocore version to the pinned one (the expression greps aws --version for the botocore it pairs with; same assertion, pairing in force).

    Verified: the assigned set's awscli drv realises cleanly; aws --version reports botocore/1.42.31. Note the expression's own comment confirms the approach: botocore must not be relaxed for awscli (lockstep pairing).

    Removal stays as written in the issue body: delete the overlay element once stock awscli passes pythonRuntimeDepsCheck on a current pin.

  4. added
    queue/queuedHas a queued task in the Supabase agent queue
    source/creatorFiled by the new-issue-creator job
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  5. dezren39 commented on Nov 3, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up + triage verdict: STILL LIVE — blocked upstream (no code change made)

    • Agent: queue worker (repo-worker-code), OpenChamber scheduled lane 8ac61616-3815-4e7b-b33d-840a3829154a
    • Session / ID: queue task 8353 (triage packet for this issue)
    • Found via: queue claim
    • Verified against: main at eef89b983 (fresh fetch, 2026-11-03T16:05Z)

    Removal condition is not met. The overlay is live on main (nixos/nixpkgs/default.nix:23-88, landed as #4915, merged 2026-11-03T13:40Z), and the pin it targets still has the same skew:

    Assigned set rev awscli botocore (set) s3transfer (set) paired?
    inputs.nixpkgs ← nixpkgs-unstable ← fleet/nixpkgs (flake.nix:99-108) → dezren39/fleet 082bd9e78 nixpkgs f9887a8a43 (2026-11-02 tip) 1.44.21 1.43.79 0.19.2 no
    nixpkgs-master c61a74e1e2 1.44.21 1.42.31 0.16.0 yes
    nixpkgs-stable cfdb2236cf 1.44.21 1.42.31 0.16.0 yes
    nixpkgs-25 e7439b6b14 1.44.21 1.42.31 0.16.0 yes

    aws-cli 1.44.21's own setup.py (tag 1.44.21) pins botocore==1.42.31 and s3transfer>=0.16.0,<0.17.0, so on the fleet tip pin pythonRuntimeDepsCheck fails exactly as recorded in the body — the overlay is still required.

    Note the shape of the skew: the mismatch is now specific to the fleet tip pin. The three older pins pair awscli 1.44.21 with botocore 1.42.31 / s3transfer 0.16.0 and would need no overlay; the tip bumped botocore/s3transfer to 1.43.79/0.19.2 ahead of awscli, which is the mid-transition the body describes. The overlay exists only because the fleet pin follows the tip.

    Routing

    • Issue stays open. Blocker: upstream — an awscli release whose botocore/s3transfer requirements match the tree, or a fleet pin move to a rev where the pairing is consistent. Nothing to do in this repo until then.
    • No PR references this issue; nothing superseded, no duplicate to reconcile.
    • Re-check trigger: any nixpkgs / fleet-pin movement. nixos/nixpkgs/default.nix is also touched by the still-open nixpkgs update PR chore(deps): nixpkgs update 2026-10-30 #4519 (2026-10-30) — re-run the removal test after whatever moves the pin next.
    • Removal test stays as written in the body: delete the overlay block, build awscli from the assigned pkgs plus config.system.build.toplevel for amd, and confirm aws --version reports the tree's awscli.
    • No follow-up queue task created: the item is unactionable until upstream moves, and the nixpkgs-update pass (chore(deps): nixpkgs update blocked 2026-10-30 #2715 / chore(deps): nixpkgs update 2026-10-30 #4519) is already the natural re-check point.
  6. added
    status/triagedTriaged and routed (see agent note)
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 3, 2026
  7. developing-today commented on Nov 3, 2026

    @developing-today
    Contributor

    agent-note:v1
    state: triaged (coverage pass)
    Coverage pass 2026-11-03: reviewed in the fleet-wide per-issue pass (drift / overlap / already-handled / stale / blockers / ordering). Verdict: still live; queued in repo-health-code-pilot as triage at priority 30 (priority/low). If this is already handled at current main, the triage closes it with evidence; if it needs splitting, the triage files the split.
    Found via: coverage pass 2026-11-03

  8. added
    queue/claimedQueue worker lifecycle state
    work/assignedQueue worker lifecycle state
    and removed
    queue/queuedHas a queued task in the Supabase agent queue
    on Nov 4, 2026
  9. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  10. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · handed off

  11. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · triaged (verdict: STILL LIVE — blocked upstream; follow-up task enqueued)

    • Agent: queue worker (repo-worker-code), OpenChamber scheduled lane c8b9355e-319a-4640-8096-7ad19480d151
    • Session / ID: queue task 8740 (triage packet for this issue)
    • Found via: queue claim (fleet-monitor safety-net re-enqueue of a triaged-but-unowned item)

    Verified against: main at d45cf2bd4 (fresh fetch, 2026-11-04T14:05Z).

    Removal condition still not met. The temporary overlay is live on main (nixos/nixpkgs/default.nix:23-88, added by #4915, commit d23fa2b14), and the pin it targets has not moved since the 2026-11-03 triage: flake.lock nixpkgs is still 1925c603f17f… (unstable, last-modified epoch 1727348695 = 2024-09-26), on which awscli 1.44.21 fails pythonRuntimeDepsCheck against botocore 1.43.79 / s3transfer 0.19.2. The chore/nixpkgs-update-2026-11-04 branch exists and still carries the overlay unchanged — the update pass has not yet shown a pairing that makes removal possible.

    Routing

    • Follow-up fix task 9562 enqueued (repo-health-code-pilot, small_fix, priority 40) with not_before = 2026-11-11T15:00Z, so the removal is re-checked after the next nixpkgs update pass instead of re-triaging this issue.
    • Removal test stays as written in the body: delete the overlay block, build awscli from the assigned pkgs plus config.system.build.toplevel for amd, confirm aws --version reports the tree's awscli.
    • Issue stays open; blocker is upstream (an awscli release whose botocore/s3transfer requirements match the tree, or a pin move to a rev where they pair). No PR references this issue besides the merged fix(nixpkgs): pin awscli's botocore/s3transfer pairing via overlay #4915 that added the overlay; chore(deps): nixpkgs update 2026-10-30 #4519 remains open.
    • No duplicate work found; nothing superseded.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area/nixNix expressions, flakes, and packagingeffort/sSmall: expected under 2 hours of workkind/infrastructureInfrastructure / host-portability workmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/lowNice to have; do when convenientqueue/queuedHas a queued task in the Supabase agent queuesource/creatorFiled by the new-issue-creator jobstatus/triagedTriaged and routed (see agent note)task/triageQueue packet kind: verify, reproduce, and route this item

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions