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

Re: lintian bug?



Stephen Crowley wrote:
> On Thu, Sep 24, 1998 at 10:05:26PM +0200, Richard Braakman wrote:
> > Stephen Crowley wrote:
> > > E: kaffe1: pkg-without-shlibs-has-shlibs-control-file N:
> > > N:   Though the package does not include any shared libraries, it does have
> > > N:   a shlibs control file.
> > > N:
> > 
> > Is this the literal output?  That looks like a genuine Lintian Bug to me,
> > since the "E:" line is not terminated by a newline.  Unfortunately I
> > can't think of anything that could cause this.
> 
> No, that's not what im talking about, i just mis-pasted that into the editor.

Okay :)

> The problem is that its giving me that error even though i DO have several
> shared libs in the .deb. But I did find out what is causing this though.
> The shared libs are there, e.g. libkaffevm.so.1.00 but the symlink is not
> (libkaffevm.so.1 -> libkaffevm.so.1.00) I think it would be much better to
> have a new error message for this type of problem than just confusing me like it did.

No, it seems that the libs do not have a "soname" at all.  (The soname is
what other programs use to refer to this library; for example the one
for libc5 is "libc.so.5", not "libc.so.5.4.38").

If there is no "soname" entry, the soname defaults to the full filename
of the library, in your case "libkaffevm.so.1.00".  If this is what you
want, then you should call the package "kaffe1.00" rather than "kaffe1",
and the package name should change every time the library name changes.
(See section 3.3.3 of the Policy Manual).

If, as I suspect, this is _not_ what you want, then you should link this
library with "-Wl,-soname,libkaffevm.so.1" and make the symlink.  (That
complicated-looking option just tells gcc to pass "-soname libkaffevm.so.1"
to the linker.)

Note that usually the soname is not determined by the packager, but by
the upstream author.  This way binary compatibility across distributions
can be achieved.  Thus, the proper soname to use should be documented
somewhere.

Now, back to lintian: The bug you're seeing is that lintian does not
recognize a file without a "SONAME" header as a shared library.
(Try objdump --private-headers on the library to see these headers).
Unfortunately, fixing this will require rewriting the check in question,
so it will have to live in my TODO list for a while.

Richard Braakman


Reply to: