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

Re: Using symbols files



On Mon, 14 Jan 2008 12:40:37 -0300
Felipe Sateler <fsateler@gmail.com> wrote:

> David Paleino wrote:
> 
> > Hi all,
> > one of my packages, libopenraw, has just been uploaded to NEW. My sponsor
> > (lucab, thanks Luca!) noted that I should've read [1] and [2], to write proper
> > symbols files.
> > Unfortunately, I've not been able to fully understand how to implement this.
> > 
> > Can anyone give some help? That would be appreciated :p
> > 
> 
> The thing is that very few packages are using this right now, and I remember
> someone asking in debian-devel for early adopters to write a set of guidelines,
> but nothing has come out yet. 
> 
> I should note that apparently it takes some work to get the new dependencies
> working, and that currently only packages with *lots* of reverse dependencies
> (such as glibc) have it implemented. I personally wouldn't bother for a new
> library.

OK. This is what I have done so far with the next release of QOF.

1. Upstream : add --version-script support to the libtool
implementation so that objdump -p lists the symbols. This involves
changes to configure.in|ac and to Makefile.am as well as creation of a
new file in the main library source directory which needs to be
packaged in the source tarball. These changes are difficult to achieve
except by upstream. The changes implement versioned symbols and
involves ongoing maintenance upstream so that whenever a symbol is
added, the symbol script is updated.

2. Use the Debian site (via mole) to get the symbols file for the
package, if possible. If not, you'll need to use dpkg-gensymbols to get
a patch to create the symbols file(s).

I'm going to write up something more helpful on a wiki page and the
changes in QOF are currently in CVS so that people can see the process.

I've also been discussing the issues on debian-devel and that's all in
the archives.

I'm more than willing to discuss the merits of this over IRC later on
if needed.

Quick summary: IMHO, symbols files are largely irrelevant if not
supported upstream via versioned symbols. Versioned symbols are largely
useless if the upstream maintenance is generally poor or has a
particularly poor understanding of libtool versioning. Versioned symbols
involve continuous maintenance upstream every time a symbol is modified
(e.g. new functions added) but have no effect on changes within
functions that do not modify the function prototype itself. Symbols
files involve regular maintenance by the Debian maintainer.

Although scripts exist for easy maintenance of symbols files in Debian,
scripts (of any kind) are distinctly lacking for *upstream* maintenance
of the versioned symbols and --version-script data.

Overall, this is definitely worth attempting but should only be
actually implemented if it is done properly. Libraries that have many
reverse dependencies - especially if those include other libraries -
should ensure that versioned symbols are implemented and maintained.

Poorly implemented versioned symbols and symbols files are probably
worse than useless.

Library maintenance is one of the harder tasks, both for upstream and
in Debian. Every library *should* implement versioned symbols and
support symbols files. Getting libraries to do things properly is the
real challenge. You need a very good understanding of libtool and
various other library-related issues.

Details of QOF: http://www.linux.codehelp.co.uk/
http://qof.sourceforge.net/
http://qof.cvs.sourceforge.net/qof/

-- 

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

Attachment: pgpgP4Hq7WmFv.pgp
Description: PGP signature


Reply to: