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