Summary
The proposal is to automatically produce debugging symbols for everything in the archive, without the developers needing to add -dbg packages everywhere, which are rarely used and right now we mirror everywhere.
Status
Original proposal created by: ?EmilioPozueloMonfort; his version is at AutomaticDebugPackages/OldProposal
New proposal created by: SamuelBronson (please feel free to edit, though!)
Why
Original "Why"
This thread in debian-devel expresses the need of this change. The reasons mentioned there include:
- -dbg packages are mirrored everywhere, which is a waste of mirror space and bandwidth since they are rarely needed.
- It would be possible to integrate bug-reporting tools to get meaningful stack traces.
- Adding -dbg packages by hand everywhere is a waste of time and resources.
We don't want to completely remove them without having a replacement though. They are very useful when the time arises. The proposed replacement is to automatically build .ddeb packages that contain those debug symbols, and that are moved to a separate component/archive that isn't mirrored. That way we get debugging symbols for every binary in the archive with no effort, and solve the mirror problems.
Existing Practice
Fedora
[blah blah blah, something about including even the sources, blah ...]
Ubuntu
Ubuntu has already done this.
See their spec and the package they use to generate ddebs.
TL;DR: they divert dh_strip to generate -dbgsym packages with filenames ending in .ddeb, and set up their archive manager to keep those somewhere out-of-the-way. One thing that's changed since they wrote the spec is the handling of packages that already ship symbols in -dbg binary packages: instead of making -dbgsym packages that conflicts with & breaks the -dbg packages, it now makes the -dbgsym packages into metapackages that pull in the relevant -dbg packages.
Proposal
As Ubuntu's scheme seems good, we should just copy it, except presumably without the diversion of dh_strip.
It seems like all we really need to do here is:
- Prepare dak to accept ddebs and file them appropriately. (Maybe britney too?)
- Modify dh_strip to do what Ubuntu's pkg-create-dbgsym would make it do. (In theory we could just use pkg-create-dbgsym, but we won't because it diverts dh_strip, which obfuscates things and prevents others (like users) from diverting it.)
- Fix any packages that somehow take exception to the unexpected debuginfo packages.
- [at leisure] Drop -dbg packages, or if they contain something besides separate debug info, drop the separate debug info and rename the packages.
Implementation
debhelper (dh_strip)
dak
ddeb can be installed into the same archive then the other packages and everything else should still work. They would be excluded on a per-mirror basis.
- ddeb will have no override entries, so no priority or section.
- They may not show up in the control-file, nor have a long description.
dak will accept $binary_$version_$arch-ddeb.ddeb if a $binary_$version_$arch.{deb,udeb} is included in the same upload.
- ddeb will go into the component "debug", so will show up in pool/debug (The pool-prefix is pretty much hardcoded, so making it variable would need a lot of work). No other packages will be allowed in "debug".
- Standalone Release/Packages in debug/dists/.