Raphael Hertzog writes:
> On Sun, 02 Dec 2007, Matthias Klose wrote:
> > Package: dpkg-dev
> > Severity: serious
> > Version: 1.14.12
> > 
> > The gcj-4.X packages fail to build with this version of dpkg:
> > 
> > dpkg-shlibdeps: failure: no dependency information found for 
> > /usr/lib64/libgcj_bc.so.1 (used by 
> > debian/gcj-4.3/usr/lib/gcc/x86_64-linux-gnu/4.3/ecj1).
> > dh_shlibdeps: command returned error code 512
> > 
> > $ cat /var/lib/dpkg/info/libgcj-bc.shlibs 
> > libgcj_bc 1 libgcj-bc (>= 4.2.1-1)
> > 
> > I don't see any extra value to make a difference between /usr/lib64
> > and /usr/lib on amd64 and ppc64.
> 
> I must say that I find the construction of the libgcj-bc package very
> fragile. It doesn't contain the library it's supposed to contain but only
> a symlink to the library which is contained in another package (libgcj8-1
> on i386).

This is done to build code which is independent of the libgcj
soversion (see /usr/lib/gcj/).  On the contrary, that is rather stable
than fragile.

> This works as long as the library is found exactly at the same path as the
> official symlink installed by libgcj-bc. However, as you noticed, there
> are cases where the library will be found somewhere else.
> 
> You have the case with /usr/lib64 which is a symink and thus "dpkg -S
> /usr/lib64/libgcj_bc.so.1" doesn't return a package. I know openoffice.org
> had the case of the library being found where it actually is through
> the use of LD_LIBRARY_PATH becaused it linked to other java-related
> libraries that were in the same private directory (looks like on amd64 the
> library is not at the same place as on i386).
> 
> Why don't you ship the shlibs file in the package that provides the
> library ? 
> 
> On i386:
> libgcj8-1: /usr/lib/libgcj.so.81.0.0
> 
> If you had done that, you wouldn't not have had that failure because
> dpkg-shlibdeps fallbacks to the realpath of the library when the
> first match doesn't give back a package.

It is shipped in the same package. libgcj_bc is a different library
than libgcjX-Y which is used when building with -findirect-dispatch.
You can better see this by looking at the libgcj_bc.so file in the
libgcj8-dev package.

> Anyway, I think I'll modify the code to not report a lib found though an
> official symlink like those (instead I'll resolve the directory symlink
> beforehand). Expect a fix later this week.

Thanks. Many upstream build systems do hardcode /usr/lib64 for x86_64,
and /usr/lib32 is used as a synonym for /emul/<something> ...

  Matthias



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to