I'm blogging about Emacs, Drupal, php and exciting subjects

A Build Step That Needs the Internet, Inside a Chroot That Doesn't Have It

A build running inside a chroot on this project has no network access, by design — every source tarball is fetched ahead of time and extracted locally, and nothing in the build process is supposed to reach outside the machine while a package compiles. One package's default configuration quietly assumes otherwise.

One Data File Added Because a Build Script's Fallback Path Doesn't Exist

One package in this from-scratch build's KDE stack contains no compiled code at all. It's a database of hardware IDs — PCI, USB, and PNP vendor and device names — and it exists only because a different package's build script checks for a specific file at configure time, before anything about hardware detection actually matters at runtime.

A Vulkan Helper That Can't Exist Because Qt6 Was Never Built With It

Most of the compatibility work in this build's KDE packages involves code that compiles fine but never actually runs — dead paths behind a runtime check that always evaluates false. This one is different: two small helper programs that don't compile at all, because the graphics toolkit underneath them was never built with the one feature they need.

A Graphical Desktop With No Display Manager

This system has no display manager. No login screen, no graphical prompt, nothing that starts automatically when the machine boots. KDE Plasma starts from a plain console login, by running a script by hand — and that script exists at all only because the first time someone tried starting Plasma manually, it failed with nothing to show for it.

Six Attempts to Fix One Migration, and What Each Failure Actually Taught

A migration meant to clean up duplicate rows took six real, distinct failures to get right. None of the six were the same mistake repeated — each one revealed a different way "deduplicate this data" is harder than it sounds once the data is large and the duplicates aren't isolated from each other.

The Shortcut That Almost Fixed Twenty Files at Once, and Why It Couldn't

Twenty files in one KDE package needed the same fix: remove an unconditional include of a header that doesn't exist on this system. Patching all twenty by hand looked avoidable. One upstream flag, flipped the other way, looked like it would satisfy the missing header everywhere at once. It didn't — and the reason it couldn't is more specific than "it didn't work."

Copying Firmware Instead of Building It

The standard way to get wifi firmware onto a from-scratch Linux system is to clone linux-firmware, the upstream repository that bundles binary blobs for essentially every wireless chip Linux supports. It's several gigabytes.

Subscribe to Linkhub