wiki.debian.org Open in urlscan Pro
2001:41b8:202:deb:6564:a62:52c3:4b70  Public Scan

URL: https://wiki.debian.org/AutomaticDebugPackages
Submission: On June 14 via api from RU — Scanned from DE

Form analysis 2 forms found in the DOM

GET /AutomaticDebugPackages

<form id="searchform" method="get" action="/AutomaticDebugPackages">
  <div>
    <input type="hidden" name="action" value="fullsearch">
    <input type="hidden" name="context" value="180">
    <label for="searchinput" style="display: none;">Suchen:</label>
    <input id="searchinput" type="text" name="value" value="" size="20" onfocus="searchFocus(this)" onblur="searchBlur(this)" onkeyup="searchChange(this)" onchange="searchChange(this)" alt="Search" class="disabled">
    <input id="titlesearch" name="titlesearch" type="submit" value="Titel" alt="Search Titles" disabled="">
    <input id="fullsearch" name="fullsearch" type="submit" value="Text" alt="Search Full Text" disabled="">
  </div>
</form>

GET /AutomaticDebugPackages

<form class="actionsmenu" method="GET" action="/AutomaticDebugPackages">
  <div>
    <select name="action" onchange="if ((this.selectedIndex != 0) &amp;&amp;
                      (this.options[this.selectedIndex].disabled == false)) {
                this.form.submit();
            }
            this.selectedIndex = 0;">
      <option value="show">Weitere Aktionen:</option>
      <option value="raw">Rohform</option>
      <option value="print">Druckansicht</option>
      <option value="RenderAsDocbook">Als Docbook ausgeben</option>
      <option value="refresh">Cache löschen</option>
      <option value="show" disabled="" class="disabled">-----------------------------------</option>
      <option value="SpellCheck">Rechtschreibung prüfen</option>
      <option value="LikePages">Ähnliche Seiten</option>
      <option value="LocalSiteMap">ÜbersichtsKarte</option>
      <option value="show" disabled="" class="disabled">-----------------------------------</option>
      <option value="RenamePage" disabled="" class="disabled">Seite umbenennen</option>
      <option value="DeletePage" disabled="" class="disabled">Seite löschen</option>
      <option value="show" disabled="" class="disabled">-----------------------------------</option>
      <option value="show" disabled="" class="disabled">Abo für Benutzer</option>
      <option value="show" disabled="" class="disabled">-----------------------------------</option>
      <option value="show" disabled="" class="disabled">Spam entfernen</option>
      <option value="show" disabled="" class="disabled">Diese Revision restaurieren</option>
      <option value="PackagePages">Seiten einpacken</option>
      <option value="show" disabled="" class="disabled">-----------------------------------</option>
      <option value="Load">Laden</option>
      <option value="Save">Speichern</option>
      <option value="SlideShow">SlideShow</option>
    </select>
  </div>
  <script type="text/javascript">
    <!--// Init menu
    actionsMenuInit('Weitere Aktionen:');
    //
    -->
  </script>
</form>

Text Content

Wiki

Anmelden
 * StartSeite
 * AktuelleÄnderungen
 * SeiteFinden
 * HilfeInhalt
 * AutomaticDebugPackages

Suchen:

Wiki/
 * Anmelden
 * Kommentare
 * Info
 * Dateianhänge
 * Weitere Aktionen:Rohform Druckansicht Als Docbook ausgeben Cache löschen
   ----------------------------------- Rechtschreibung prüfen Ähnliche Seiten
   ÜbersichtsKarte ----------------------------------- Seite umbenennen Seite
   löschen ----------------------------------- Abo für Benutzer
   ----------------------------------- Spam entfernen Diese Revision
   restaurieren Seiten einpacken ----------------------------------- Laden
   Speichern SlideShow

 * AUTOMATICDEBUGPACKAGES


TL;DR FOR PACKAGE MAINTAINERS WHO’D LIKE TO MIGRATE




IF YOU’RE USING DH WITH COMPAT ≥ 9

Say you’re preparing freeradius 3.0.11-1 and want to switch from a -dbg package
to automatically created -dbgsym packages. You would:

 1. Change your existing dh_strip -a --dbg-package=freeradius-dbg to
    dh_strip --dbgsym-migration='freeradius-dbg (<< 3.0.11-1~)'

 2. Delete the freeradius-dbg package from debian/control

 3. Bump the Build-Depends to debhelper (>= 9.20160114) or newer.

NB: The debhelper in jessie-backports has -dbgsym support reverted despite
satisfying this version constraint.




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

This proposal is implemented. Although some of the items listed below may be
different from the current implementation.

The security archive does not yet provide dbgsym packages.




ARCHIVE

The automatic dbgsym packages are available from a separate archive. Please
fetch these from http://deb.debian.org/debian-debug/ (backed by
http://debug.mirrors.debian.org/debian-debug/). They are also available on
http://snapshot.debian.org/. They are only available for stable,
proposed-updates, backports, testing, unstable and experimental at this point in
time, optionally also under the release's codename.

To get the corresponding dbgsym packages for stable security updates, please use
the proposed-updates-debug apt source.



deb http://deb.debian.org/debian-debug/ stable-debug main
deb http://deb.debian.org/debian-debug/ proposed-updates-debug main
deb http://deb.debian.org/debian-debug/ stretch-backports-debug main
deb http://deb.debian.org/debian-debug/ testing-debug main
deb http://deb.debian.org/debian-debug/ testing-proposed-updates-debug main
deb http://deb.debian.org/debian-debug/ unstable-debug main
deb http://deb.debian.org/debian-debug/ experimental-debug main




ORIGIN

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

StackTraces Packaging:Debuginfo




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:

 1. Prepare dak to accept ddebs and file them appropriately. (Maybe britney
    too?)
 2. 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.)
 3. Fix any packages that somehow take exception to the unexpected debuginfo
    packages.
 4. [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

This describes the implementation in debhelper/9.20160114 (first implementation
was 9.20151219) - it may have changed since then:

 * dh_strip (without --dbg-package or --no-automatic-dbgsym):
   * Saves extracted debugging info in a directory per dbgsym package (in an
     implementation defined location under debian/.debhelper).
     * Note that dh_strip only retains debug symbols for ELF binaries with
       build-ids - everything else is discarded.
   
   * Creates a usr/share/doc/<package>-dbgsym -> <package> symlink.
 * dh_md5sums
   * Generates an md5sums file for the dbgsym package like for a regular
     package.
 * dh_gencontrol:
   
   * Generate a control for <package>-dbgsym based on the entry for <package> in
     debian/control.
   
   * It will set the following fields:
     * Auto-Built-Package: debug-symbols
     * Priority: extra
     * Section: debug
     
     * Depends: <package> (= ${binary:Version})
     
     * Multi-arch: same [If the original binary was Multi-Arch: same, otherwise
       there is no Multi-Arch field]
     
     * Breaks/Replaces: <value passed dh_strip --dbgsym-migration>
   * This uses dpkg-gencontrol and accordingly, dpkg will know about the dbgsym
     package when generating the changes.
 * dh_builddeb:
   * Builds the debug symbol package like a regular deb.




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-dbgsym_$version_$arch.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/.




BRITNEY




LINTIAN

Warn about -dbg packages that are duplicates of the -dbgsym packages.




QUESTIONS

 * How to generate recommends for the library dependencies?
 * Do we need the dependency from ddeb to deb?
 * Do we need to split ddeb per main/contrib/non-free?

 * There seems to be no solution at the moment for -dbg packages that contains
   more than debug symbols. See
   https://lists.debian.org/debian-python/2016/04/msg00092.html update January
   2019: solutions to this question are documented in dh_strip (1).



AutomaticDebugPackages (zuletzt geändert 2020-03-14 23:56:21)

 * Debian privacy policy, Wiki team, bugs and config.
 * Powered by MoinMoin and Python, with hosting provided by Metropolitan Area
   Network Darmstadt.