Skip to content

chore(deps): remove the cargo-llvm-cov llvm override once its pinned llvm matches rustc's profraw format #4277

Open

Description

@dezren39

Part of the 2026-10-30 nixpkgs update work (#2715). Do not act until that update has landed; this tracks removing the temporary override afterwards.

Problem

On the new pins, cargo-llvm-cov 0.9.0's test suite fails deterministically (solo-reproduced): rustc 1.99's coverage instrumentation writes raw profile format version 11, but the expression pins llvmPackages_22, whose llvm-profdata expects version 10: "raw profile version mismatch: Profile uses raw profile format version = 11; expected version = 10 ... error: no profile can be merged" (14 of 20 integration tests fail). The expression's own header comment names this exact failure mode (llvm version mismatch with rustc). The tool itself is unaffected at runtime (it uses the user's llvm-profdata in actual use).

Temporary fix

Override in nixos/nixpkgs/default.nix (assigned set): cargo-llvm-cov built with a newer llvmPackages whose profdata reads format 11 (the exact set used is named in the override comment; if no in-set llvm reads v11, the fallback is doCheck = false on the package, per the expression header's own note that the tool functions properly in actual use even when the tests fail this way).

Removal condition

A nixpkgs pin where stock cargo-llvm-cov passes its test suite again (its pinned llvmPackages matches the pin's rustc profraw format).

Test before removing: delete the override and run:

nix build .#nixosConfigurations.amd.pkgs.cargo-llvm-cov

It must build with its full test suite passing.

Acceptance criteria

  • Gate cleared: a nixpkgs pin has landed where stock cargo-llvm-cov (no override) passes its test suite — its pinned llvmPackages matches the pin's rustc profraw format (the chore(deps): nixpkgs update blocked 2026-10-30 #2715 update landed and a later pin satisfies the removal condition in the body).
  • The temporary cargo-llvm-cov llvm override (or doCheck = false fallback, if that is what landed) is removed from nixos/nixpkgs/default.nix.
  • nix build .#nixosConfigurations.amd.pkgs.cargo-llvm-cov succeeds with the package's full test suite passing, per the test named in the body.

Activity

  1. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    Implemented on the nixpkgs-update branch (commit 19c4a29): an overlay in nixos/nixpkgs/default.nix passing llvmPackages_23 for the expression's llvmPackages_22 argument. Verified before committing: the overridden derivation realises with the full test suite passing (llvm 23.1.3's profdata reads raw profile format v11); the assigned set's cargo-llvm-cov drv is exactly the verified one. No doCheck = false fallback was needed.

    Removal stays as written in the issue body: delete the overlay element once stock cargo-llvm-cov passes on a current pin.

  2. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    Correction to the previous comment: the llvmPackages_23 pairing does not pass the suite — my verification reading was wrong (the build had not actually completed). Superseded by commit 3b532c5.

    Full evidence, all solo-reproduced against the assigned set:

    • Stock (llvmPackages_22): "raw profile version mismatch: Profile uses raw profile format version = 11; expected version = 10" — 14/20 integration tests fail.
    • llvmPackages_21 (21.1.8, nominally rustc's own LLVM version): same v11-vs-v10 mismatch — rustc's forked LLVM writes a newer profraw than any stock LLVM.
    • llvmPackages_23 (23.1.3): parses v11 but reports "malformed instrumentation profile data: number of counters is zero" — same 14 failures.

    No in-tree llvm-profdata can merge rustc 1.99's profiles, so the override is now doCheck = false (the fallback this issue's body already contemplated, per the expression header's note that the tool functions properly in actual use). Verified properly this time: the resulting derivation realises and its output path validates in the store with the cargo-llvm-cov binary present.

    Removal unchanged: delete the overlay element once stock cargo-llvm-cov passes its full suite on a current pin.

  3. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    Intake review

    Related: issue #2715 (the 2026-10-30 nixpkgs update this chore is part of) — re-checked this pass: still OPEN ('nixpkgs update blocked 2026-10-30'), so the removal gate has NOT cleared and this issue is correctly status/blocked.

    Notes: No labels at filing. The body is unusually complete (repro, temporary fix, removal condition, and the exact verification build), so this pass is labels + a formal acceptance section only.

    Risks: removing the override on a pin that only looks fixed (llvm merged but profraw format still ahead) reintroduces the deterministic 14/20 test failure — the verification build in the acceptance criteria is the guard.

    Suggested approach: leave blocked until a post-#2715 pin bump; then delete the override, run the named build, and close with the build result.

    — fleet monitor intake enrichment, 2026-11-02.

  4. added
    kind/infrastructureInfrastructure / host-portability work
    source/humanFiled directly by a human
    priority/lowNice to have; do when convenient
    effort/sSmall: expected under 2 hours of work
    status/blockedQueue or user escalation state
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Nov 2, 2026
  5. added
    queue/queuedHas a queued task in the Supabase agent queue
    task/triageQueue packet kind: verify, reproduce, and route this item
    on Nov 3, 2026
  6. 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 20 (priority/low). Issue carries status/blocked; the covering triage must re-derive and name the current blocker. 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

  7. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

    Evidence (fresh, 2026-11-03):

    • Gate issue chore(deps): nixpkgs update blocked 2026-10-30 #2715 (the 2026-10-30 nixpkgs update) is still OPEN — "chore(deps): nixpkgs update blocked 2026-10-30". The issue body forbids acting until that update lands, and its acceptance additionally requires a later pin where stock cargo-llvm-cov passes its full suite.
    • The temporary override is not on main: nixos/nixpkgs/default.nix at main contains no cargo-llvm-cov override (code search finds the package only in package lists — nix-common.nix, nixos/environment/default.nix). The override exists only on the unlanded nixpkgs-update branch, in its corrected final form doCheck = false (commit 3b532c5; the earlier llvmPackages_23 pairing was retracted on this issue at 2026-11-02T09:38Z — no in-tree llvm-profdata can merge rustc 1.99's profraw v11 profiles).
    • So both halves of the gate are unmet: the branch carrying the override has not landed, and no pin yet satisfies the removal condition (stock suite passing).

    Issue #4277 stays OPEN with status/blocked — that label is accurate. queue/queued removed: no live task is owed while the gate is external; when issue #2715 lands, the removal (delete the overlay element, then nix build .#nixosConfigurations.amd.pkgs.cargo-llvm-cov with the full suite passing, on the laptop/CI per fleet rules) should be enqueued as a fresh small_fix.

  8. added
    work/assignedQueue worker lifecycle state
    queue/claimedQueue 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 · picked up

  10. dezren39 commented on Nov 4, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done — triaged (already covered, re-verified)

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

Metadata

Metadata

Assignees

Labels

effort/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 convenientsource/humanFiled directly by a humanstatus/blockedQueue or user escalation statetask/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