Hi Oden (hi list?)!

I don't have an account for Mandrake's bug reporting system
https://qa.mandrakesoft.com/, and I don't intend to subscribe to the
mailing lists just to create a report, so I'm writing to you as a
packager (Cc: to the list, it's worth a try).

I recently wanted to try out the program "autotrace" on my RedHat box,
and noticed it requires libming.so. I found libming.so (using
rpmfind.net) in your Mandrake packages. Quite obviously, the autotrace
package I got must've been built with Mandrake.

Due to my small installation problem, I ran into a somewhat severe bug
in your packaging:

The shared library "libming.so.0{,.2}" in the package libming0 is not
created with an soname.

This is the chain of results:

- A program is linked with "-lming".
- The linker finds the shared library "libming.so" (symbolic link) in
  your libming0-devel package and links against it.
- During linking, a dependancy is created in the application towards
  either a) the soname or b) the filename of the lib, in that order.
- Lacking an soname, the dependency (see objdump -p appname, "NEEDED:")
  is "libming.so".
- This program (or rather ld.so/ld-linux.so) then needs to find a
  "libming.so" in order to be able to run.
- Yet libming.so is not packaged in the libming0 package, it's in
  libming0-devel. Yet the latter shouldn't be needed during runtime!
  Such a mis-linked program cannot be installed as an RPM package
  without the presence of libming0-devel.

The proper way around it is for the lib to have an soname identical to
one of the file names (or link names) in the base lib package, in this
case "libming.so.0".

This is achieved in libming's case by changing the call in src/Makefile
which links the dynamic lib, adding "-Wl,-soname -Wl,libming.so.0"
(which is the syntax for gcc to hand "-soname libming.so.0" to the
linker).

Thanks for listening,
Moritz.

Reply via email to