[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#436419: Mandatory -dbg packages for shared libraries



On Tue, 7 Aug 2007 11:55:54 +0200
Loïc Minier <lool@dooz.org> wrote:

>         Hi,
> 
> On Tue, Aug 07, 2007, Neil Williams wrote:
> >          the -dbg (with SONAME)
> [...]
> >                                          provide a binary package
> > librarynamesoversion-dbg
> [...]
> > Josh Triplett <josh@freedesktop.org>  on 2007-04-22 19:48
> 
>  Please don't impose "librarynamesoversion-dbg", a lot of source
>  packages do not only provide a library, but also programs, and we
>  shouldn't duplicate all packages into having a -dbg (name-dbg).
>  This would also imply having multiple -dbg packages when there are two
>  libraries in the same source.

(It will be libnameSONAME-dbg, e.g. libqof1-dbg not libraryqof0.7.2-1-dbg)

? This change only affects shared libraries - i.e. library source
packages installing shared libraries in /usr/lib/ and with a -dev, not
private libraries installed in /usr/lib/package/ and not application
source packages that also contain shared libraries. (Although -dbg
content should be encouraged separately).

So libqof1 has a -dbg because it installs /usr/lib/libqof.so.1.0.9
gnucash does not need a -dbg (at least not via this policy request)
because it installs loads of libraries in /usr/lib/gnucash/...

The principle here is to make upstream development on Debian easier and
when building gnucash or nautilus from the respective upstream RCS, the
debug code from within that source tree will always be available. What
is needed is to ensure that any other libraries that are part of the
package build dependencies also contain debug symbols so that the
upstream developer always gets a sensible backtrace. It will also make
it easier to get sensible backtraces within Debian bug reports AFTER
the upstream release but that is a useful side-effect rather than my
main incentive.

Private (application) libraries are not affected, only SHARED libraries
(hence the bug title). 

"Library source package" == package that only builds a shared library.
e.g. gtk, glib2, qof ...

http://packages.qa.debian.org/g/glib2.0.html
http://packages.qa.debian.org/g/gtk+2.0.html
http://packages.qa.debian.org/q/qof.html

Source packages that provide an application and a *shared* library (i.e.
one with a -dev package) can provide a -dbg to complement the -dev but
that isn't expressly part of this proposal. (I do believe it should be
encouraged). There is no need for these to be renamed. The intent of
this policy change is to make it easier to debug things like nautilus
by ensuring that not only are the debug symbols available for the
package being inspected (nautilus-dbg) - which one would hope the
person needing the debug symbols would already have installed - but
also the debug symbols for other libraries that are called FROM either
nautilus or the nautilus shared library.

Example:
gpe-expenses. Previous version included all the code in the
application, no debug symbol package (although that could have been
done). The gpe-expenses source only built one binary.
Current version: Upstream split some of the code into a new shared
library and created a public API for that library to be used by other
applications. Debian now has a smaller application, a shared library
with a -dev a -dbg and because the API docs were quite large, a -doc
too.

          'Binaries' => [
                          'libqofexpensesobjects-dev',
                          'gpe-expenses',
                          'libqofexpensesobjects-doc',
                          'libqofexpensesobjects0-dbg',
                          'libqofexpensesobjects0'
                        ]

The important point is that dependencies OF gpe-expenses and
libqofexpensesobjects also need to have -dbg symbols available. This
includes libqof1, libglib2.0-0 and libgtk+2.0-0 etc. It does not mean
that gpe-contacts or applications using libqofexpensesobjects0 need to
be changed in any way.

Whether the -dbg package should be named after the program or the
library (or whether two -dbg packages might be more useful) is up to
the maintainer. 

The point is that the libraries upon which nautilus and
libnautilus-extension1 depend must also provide -dbg symbols -
principally to make it easier to develop and debug nautilus UPSTREAM
using Debian instead of some other distribution but also to make it
easier to get sensible backtraces when nautilus-dbg is actually
installed.

>  One example of such a package could be nautilus which has a
>  nautilus-dbg with debugging symbols for nautilus and
>  libnautilus-extension.

Not affected.

The actual wording for this proposal isn't finalised and it would be
worth ensuring that "library source package" is accurately explained
and defined for these reasons.

> 
>  I recommend naming the -dbg $source-dbg instead.

Applications can use whatever the maintainer wants for the debug
content. The point is that the library source package foo that (only)
builds libfoo1 and libfoo[1]?-dev must also build libfoo1-dbg. The -dbg
must be the same SONAME as the library whilst the -dev can be either,
depending on how the maintainer wants to handle transitions.

However, qof-dbg would simply be wrong, IMHO. Library source packages
may or may not use the lib prefix to the actual source name but there
is no "qof" package, just libqofSONAME so it would be wrong to provide
a package qof-dbg where only the shared library is built from the qof
upstream source. libqofSONAME-dbg should be mandated for such packages.

This is all about debugging the entire dependency chain from the
perspective of an upstream developer working on a library that depends
on other libraries or an application that depends on third-party
libraries (which includes all GUI applications). The only packages that
need libfooSONAME-dbg are those that only build a shared library and
which do not yet provide debug symbols for that shared library.
Packages that build an application and one or more shared libraries
should also provide debug symbols but the maintainer is free to put
those symbols in whatever package name best suits that package.

>  We don't really need to keep -dbg for the transitional period where two
>  SONAMEs of the same lib from the same source are on user systems and we
>  can have very lax dependencies in the -dbg packages and on the -dbg
>  packages.

? To debug libfoo1 you must have libfoo1-dbg, libfoo0-dbg won't work.
The dependency needs to be fixed as:
Depends: ${binary:Version}
i.e. libfoo1-dbg 1.2.3-4 depends on libfoo1 1.2.3-4

>= or << etc. will not work.

Please read some of the debian-devel thread on this, starting at:
http://lists.debian.org/debian-devel/2007/04/msg00663.html

(Note that the -doc part of the idea is NOT part of this proposal for
policy.)

-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/

Attachment: pgpSUjcw8xn7r.pgp
Description: PGP signature


Reply to: