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
conflict.
> 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
--
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: