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

Re: S-Lang for use with libc6 uploaded (source, i386)

On Jun 4, joost witteveen wrote
> > Because the current slang0.99.34 and slang0.99.34-dev packages are
> > implicitly for libc5, we can't "re-use" them and therefore need to use
> > new package names for the new libc6 versions.  I've been recommending
> > people simply append a "g" to the package names in these cases to
> > identify them as being for glibc/libc6.  The new packages might then
> > be slang0.99.34g and slang0.99.34g-dev.
> With libg++, I noticed that the upstream, version, patched by
> HJ Lu for glibc, had a new soname (it's 272 now, was 27). So, I called

H.J. probably did this so it wouldn't conflict.

> the glibc compiled libg++ package "libg++272" (libc5: libg++27).
> Do you think this was a good idea? If not, should I change it to

This is fine.  The bit about appending a "g" to package names and
moving old libraries to libc5-compat is only needed when the sonames

> libg++272g? (even though some packages already may depend on libg++272,
> I don't know).

No, you don't have to change it.

> > First, the libraries can't be in the same directory as each other.  To
> > solve this problem, the current libc5 package provides two new
> > directories, /lib/libc5-compat and /usr/lib/libc5-compat.  These can
> > be used to put old libc5-based libraries which conflict with new
> > libc6-based ones.
> So, that means my libg++27 package (the old one) should be updated
> to put it's shared libs in /usr/libc5-compat, right? At the moment,
> it doesn't do so, but I don't have problems with that -- probably
> because of the different sonames I'm using. Should I still put the
> libc5-compat stuff in the right place?

You can, but you don't have to.

> > Second, the dynamic linkers need to be able to determine which
> > libraries are for libc5 and which are for libc6.  To facilitate this,
> > each library must contain a run-time dependency on at least one of
> > libc, libm and libdl.
> $ ldd /usr/lib/libg++.so.272.5.0 
>         libstdc++.so.272 => /usr/lib/libg++-dbg/libstdc++.so.272 (0x4003c000)
> So, I'm wrong here too? Does that mean I didn't have the same libc6-dev
> version installed as libc6 version? If I recompile libg++272 now, will
> it be fixed (I've got it correct now, I *though* I had it correct at
> the time too). Did I do something else wrong? (And, why don't I notice
> any problems -- well never mind, that must be because ldso is so clever).

Again, since you used a non-conflicting soname, you don't strictly
have to do this.  Doing it anyway would still be a good idea though.
We need to get people in the habit of doing it.

The way to get the dependency included in the shared library is to
link it with "-lc", "-lm" and/or "-ldl" when building it.  For
example, for a hypothetical libfoo, you would do:

    gcc -shared -o libfoo.so.1.0 -Wl,-soname,libfoo.so.1 foo.o -lc

David Engel                        ODS Networks
david@sw.ods.com                   1001 E. Arapaho Road
(972) 234-6400                     Richardson, TX  75081

TO UNSUBSCRIBE FROM THIS MAILING LIST: e-mail the word "unsubscribe" to
debian-devel-request@lists.debian.org . 
Trouble?  e-mail to templin@bucknell.edu .

Reply to: