Skip to content

A build from scratch and a rebuild on a cached tree install the same programs - #427

Merged
DevomB merged 1 commit into
python-no-testsfrom
same-programs-cold-or-warm
Oct 13, 2026
Merged

DevomB merged 1 commit into
python-no-testsfrom
same-programs-cold-or-warm

Conversation

@DevomB

@DevomB DevomB commented Oct 12, 2026

Copy link
Copy Markdown
Owner

What was wrong. Stage 04 builds its steps in a fixed order, but some packages pick up an optional library only if it is already installed. A build from scratch, as a release tag's is, sees only the steps before it. A rebuild on a cached tree sees everything an earlier build installed. Two packages came out different:

  • iproute2 builds before libmnl. From scratch it built without libmnl. On a cached tree it found libmnl and built seven more programs (devlink, rdma, tipc, dcb, vdpa, dpll, netshaper), plus an ip that prints the kernel's extended error messages.
  • Python builds before gdbm. On a cached tree it built _gdbm too.

The program list (#403) was made from a cached tree's image. A build from scratch then failed stage 06 on eight entries naming nothing (Distro 38246073914). This is the trap perl's recipe already guards against for its GDBM_File module.

What changed.

  • libmnl is built right before iproute2 instead of with the net zone's packages. nftables, which comes later, still finds it.
  • iproute2's Makefile no longer lists the libmnl tools; nothing here runs them. The recipe fails if a later iproute2 lists them another way. It also removes their man pages and completions, which install regardless, and any copies a cached tree holds.
  • ip and tc now always build with libmnl, so a failed ip command in the net zone's log says what the kernel refused, for example "Error: Nexthop has invalid gateway." instead of only "RTNETLINK answers: Invalid argument".
  • Python is configured without _gdbm and _dbm (py_cv_module__gdbm=n/a, py_cv_module__dbm=n/a), and the recipe removes any copy a cached tree holds. Nothing imports dbm.gnu or dbm.ndbm; dbm itself falls back to dbm.dumb.

How the run proves it.

Stacked on #348, whose lines in python.sh this extends. Merge it with #403.

…programs

libmnl is built before iproute2, whose libmnl tools are left out (ip and tc keep it for the kernel's error messages), and Python is built without its dbm modules, which only a cached tree holding gdbm gave it.
@DevomB
DevomB merged commit 68e0152 into python-no-tests Oct 13, 2026
6 checks passed
@DevomB
DevomB deleted the same-programs-cold-or-warm branch October 13, 2026 15:58
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.

1 participant