Robin H. Johnson wrote: > Comments: > --------- > In bug #4411, comment 43, vapier noted: > > any package that does dlopen("libfoo.so") without the version info like > > ".so.X" is broken. > In this case, the lt_dlopenext consumer is explicitly testing multiple > versions of libusb at runtime, and picking the correct interface: > it doesn't need to depend on a specific version.
vapier is still correct and the consumer is indeed broken, it does too need to specify the .so version in the dlopen() call, at least in the case of libusb. It's fine for programs to try to dlopen() API providers for both libusb-0.1 and libusb-1.0 APIs and use whichever they find, but that MUST be done by full filename including ABI version in each call. dev-libs/libusb-0.1 has only ever existed as libusb-0.1.so.4.4.4 so either that or libusb-0.1.so.4 is what must be used with dlopen(). libusb-1.0 API providers are by design API as well as ABI incompatible with libusb-0.1 so there is no way to get libusb-1.0 if you ask for libusb-0.1. I believe that libusb-0.1 being the way it is happened by accident and I know that libusb-1.0 use of libtool is better but can still improve. > This is also because the lt_dlopenext interface does NOT accepted > files versioned after the .so: it needs the filename with no extensions. Hm, that seems limited? //Peter