Skip to content

bug(reviewer): confusion around arch-dependent essentials #9

Description

@lczyk

reviewing the strace slice (PRs #1022 / #1023 / #1024), the dependency-accuracy check nearly produced a wrong verdict. deb-list.py strace on an arm64 host reported:

Depends: libc6 (>= 2.38)

no libunwind8. the slice lists libunwind8_libs as an essential of strace_bins, so on that evidence alone it looks like a textbook over-include (rejection reason #15) -- and readelf -d on the arm64 binary backs it up: libc.so.6 only, plus the string "binary is built without stack tracing".

that conclusion is wrong. strace's Depends: is arch-dependent:

24.04 amd64 Depends: libc6, libunwind8
24.04 arm64 Depends: libc6
25.10 amd64 Depends: libc6, libunwind8
25.10 arm64 Depends: libc6
26.04 amd64 Depends: libc6, libtinfo6, libunwind8
26.04 arm64 Depends: libc6, libtinfo6

strace's libunwind-based stack unwinding (-k) is compiled in on x86 only; the arm64 build ships without it. so libunwind8_libs is a legitimate dep on amd64 and dead weight on arm64 -- it's arch-gated, not over-included.

root cause (the skill gap)

deb-list.py inspects a single arch -- whatever the host / default is (arm64 here). the review-slice guidance leans on it and on pkg-deps for dependency accuracy, but never warns that:

  1. Depends: can differ per arch, so a single-arch deb-list.py run is not sufficient evidence to call a dep spurious (or complete).
  2. the pkg-deps CI bot runs on amd64, so its output and a deb-list.py run on an arm64 host can legitimately disagree -- and that disagreement is signal, not noise.

on an arm64 host the trap is symmetric and cuts both ways: you can wrongly flag an amd64-only dep as over-included, or miss an amd64-only dep that's genuinely absent from the slice.

shared/CHISEL.md already lists "Essential syntax" and dep changes under cross-release differences, and the arch-gated-essentials section covers how to express per-arch deps -- but nothing tells the reviewer to look across arches before judging a dep.

suggested fixes

  • review-slice.md, Dependency Validation: add a line -- before calling a dep over-included or missing, check Depends: across all release arches, not just the host arch. per-arch differences mean arch-gating (v3 essential-as-map, or v3-essential: on v1/v2), not a bug.
  • note explicitly that pkg-deps CI runs on amd64, so a host-arch deb-list.py that disagrees with it is expected when a dep is arch-specific -- reconcile the two rather than trusting either alone.
  • deb-list.py: either default to reporting Depends: for all arches, or add an --arch all / arch-loop mode, so the deterministic pass surfaces per-arch deltas instead of hiding them behind the host arch.

Metadata

Metadata

Assignees

No one assigned

    Labels

    skill-bugskill isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions