On Sat, 17 Jun 2006 16:25:39 +0900 Junichi Uekawa wrote:

> > > > When compiling a C++ library, d-shlibs resolves the
> > > > build-dependency to the virtual package libstdc++6-dev which is
> > > > provided only by the libstdc++ from gcc-3.4 source package
> > > > (even if the package was actually compiled using the one from
> > > > gcc-4.1).
> > > > 
> > > > Compiling same C++ library on sarge the resolving fails, trying
> > > > to build-depend on non-existing libstdc++5-dev.
> > > > 
> > > > The attached patch fixes this for the cases of using default
> > > > compiler. I suspect, however, that a proper fix also taking
> > > > non-default compilers into account requires changes to the
> > > > objdump analysis.
> > > 
> > > Thanks.
> > > 
> > > I think we have a choice.
> > > 
> > > It's part of Build-Essential, so we should be able to ignore
> > > libstdc++6-XXX-dev.  For non-default compilers, we should also
> > > ignore libstdc++XXX-dev and leave a note to add Build-Depends on g
> > > ++-XX.
> > 
> > Ah, yes: Build-essential.
> > 
> > But how to resolve if it was the default compiler or not?
> > 
> > If possible to resolve which are non-default compilers, then why not
> > provide build-dependencies for them now we are at it?
> 
> They are supposed to be compatible with each other, although the two
> -dev packages contain different files, the actual shared library file
> is one. I don't know why they decided to split the -dev package and
> leave the .so file.
> 
> Is there a compelling reason to use a non-default compiler version?

I am no expert in the field, but assume that if some library needs a
specific version of a compiler, then it is quite likely that other
software linking against that library will need same compiler. A
concrete example is the linux kernel and out-of-tree modules, I believe.

I guess the very existence of multiple concurrent versions of same
compiler series demonstrate the need for sometimes explicitly using a
different compiler, no?

D-shlibs goes by the fundamental assumption that a shared library
matches the package name, right? In the case of libstdc++ this
assumption is wrong, and will in the simple case lead to pulling in
useless dependencies, but I suspect in some cases will cause breakage
due to not providing the actual _needed_ dependency: The case of
depending on a library not provided by build-essential either.


In my concrete case it makes sense to simply silence the dependency,
but looking at your other workarounds, they seem to be mostly
simplifications. What seems to be needed here is a complication
instead: correcting a simpler package name to a more complex one - due
to the package maintainers' odd choice of names, but that's the
overall challenge we have to live with, when Debian Policy only
recommends, not requires, strict library naming :-)


 - Jonas

-- 
* Jonas Smedegaard - idealist og Internet-arkitekt
* Tlf.: +45 40843136  Website: http://dr.jones.dk/

 - Enden er nær: http://www.shibumi.org/eoti.htm

Attachment: pgpJimKWW3bvy.pgp
Description: PGP signature

Reply via email to