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

dpkg-gensymbols and C++ (once again)

Hi all,

With the recent upload of diagnostics I've again been bitten by dpkg-gensymbols
[1]. As you might notice, the symbol is/was there, just the mangling scheme
seems to have changed. For one, the next upload will be the third upload just to
fix changed symbol names on alpha. One could argue that I should have built the
package on an alpha system beforehand to avoid such brokenness. Well, I did.
Most probably the g++ versions used on albeniz.d.o and goetz just don't match.
Similarly, archive-rebuilds will show more or less spurious FTBFS (e.g.,
#562397 -- I'm building binary packages on amd64 myself).

I understand that symbol files could help to improve quality of our archives
and, as diagnostics is about software quality as well, I'd tend to support this
as well as possible. At the current stage, however, this seems hardly feasible
with C++ libraries, unless I'm doing something wrong.

Couldn't the following be implemented, maybe as some C++ mode of dpkg-gensymbols? 
- Instead of mangled symbol names, source packages should ship demangled symbol
  files. This way, package maintainers could truly inspect those lists of
  symbols and maintain them in a sane way (like manually adding symbols as the
  API evolves). The symbol names would remain independent of the architecture
  and sorted in some logical way (i.e., by C++ namespace and class names),
  unintended symbols as part of those lists would become obvious, etc. 
- Pending realizability using g++ or the like, these lists are converted to
  their architecture-specific variants consisting of mangled names by
- Subsequently, the mangled list and the contents of the library should be
  compared and (as done currently) deviances reported. It would be nice, of
  course, to demangle missing and/or additional symbol names.
- The mangled list (generated from the list of the source package) should then
  be shipped in the binary package.

I guess the facilities to mangle/demangle are there, I just don't know whether
they are accessible from the command line.


[1] https://buildd.debian.org/~luk/status/package.php?p=diagnostics

Attachment: pgpRo7rb70fgr.pgp
Description: PGP signature

Reply to: