Re: Discussion about bug #615504
On Tue, 2010-08-17 at 11:56 -0300, Leandro de Oliveira wrote: > I thought not having a versionless symlink was a bug, but it seems to > be an explicit decision, if that is the case, then java apps using > bluetooth will always need the user to install libbluetooth-dev > instead of being able to work with the latest version. Since backwards > compatibility should be a given, I don't see why there coudn't be a > versionless symlink. But, backward compatibility is NOT a given; that's why we have versioned libraries in the first place. In a POSIX-y system like Linux, shared library versions work like this typically: the library filename is "libfoo.so.x.y" where "x" is the major version and "y" (which might have multiple parts) is the minor version. The rules are that any changes that do not modify the library ABI can change only the "y" version but leave the "x" version the same, and these can be used without recompiling code. Any changes the modify the library ABI _must_ change the "x" version, and all applications must link against the new version explicitly. To support this, the linker (usually) puts a reference to "libfoo.so.x" in the binary so that's the library that the runtime linker looks for, and the package will install a symlink "libfoo.so.x" which points to the currently-installed/newest "libfoo.so.x.y" shared library. In order for new applications to be compiled, the development package installs a symlink "libfoo.so" which points to the currently-installed/newest "libfoo.so.x", or major version. The compile-time linker, when it sees "-lfoo" on the link line, will search for "libfoo.so" and link that, putting (as above) "libfoo.so.x" into the binary for the runtime linker to find. Some incorrectly-built applications force the compile-time linker to add "libfoo.so", only, to the binary: this is wrong because it doesn't follow the conventions above and the "libfoo.so" won't be available on systems which do not have developer packages installed (as above). Note that shared libraries can reference other shared libraries and typically follow the same rules as above. You should file a bug against the Bluecove library: it's not being created properly. -- Ubuntu-devel-discuss mailing list Ubuntu-devel-discuss@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss
Re: Discussion about bug #615504
Bluecove is a java library and is platform-independent. It uses bluez in linux. But the instalation of bluez on ubuntu doesn't provide a versionless symlink that is necessary for bluecove to work without user intervention. Bluecove links against a versionless library to be able to use the same build with bluez version 3 and version 4. I thought not having a versionless symlink was a bug, but it seems to be an explicit decision, if that is the case, then java apps using bluetooth will always need the user to install libbluetooth-dev instead of being able to work with the latest version. Since backwards compatibility should be a given, I don't see why there coudn't be a versionless symlink. 2010/8/17 Martin Pitt : > Hello Leandro, > > Leandro de Oliveira [2010-08-16 15:29 -0300]: >> The main issue is that a symlink named libbluetooth.so is required for >> bluecove to work without user intervention. > > This sounds like a build system bug of bluecove. Library packages > must not install a versionless libfoo.so symlink. This is allowed for > -dev packages, since they do not have to be installable in several > versions in parallel, but that must be the case for the actual > libraries. Also, linking against a versionless library would be very > crash prone, since you cannot rely on the library's ABI. > > bluecove isn't packaged, it seems to be a third-party app? > > Martin > -- > Martin Pitt | http://www.piware.de > Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org) > -- Ubuntu-devel-discuss mailing list Ubuntu-devel-discuss@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss
Re: Discussion about bug #615504
Hello Leandro, Leandro de Oliveira [2010-08-16 15:29 -0300]: > The main issue is that a symlink named libbluetooth.so is required for > bluecove to work without user intervention. This sounds like a build system bug of bluecove. Library packages must not install a versionless libfoo.so symlink. This is allowed for -dev packages, since they do not have to be installable in several versions in parallel, but that must be the case for the actual libraries. Also, linking against a versionless library would be very crash prone, since you cannot rely on the library's ABI. bluecove isn't packaged, it seems to be a third-party app? Martin -- Martin Pitt| http://www.piware.de Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org) -- Ubuntu-devel-discuss mailing list Ubuntu-devel-discuss@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss
Discussion about bug #615504
Hi, I've filed a question that was transformed into a bug was redirected for discussion in some mailing list. I'm guessing this is the right one. Here is a direct link: https://bugs.launchpad.net/ubuntu/+bug/615504 The main issue is that a symlink named libbluetooth.so is required for bluecove to work without user intervention. Without this, users must create this link manually or install the libbluetooth-dev package so their java applications using bluetooth are able to work properly. Is it ok to have this package installed or this symlink created by default in future releases of ubuntu? Thanks -- Ubuntu-devel-discuss mailing list Ubuntu-devel-discuss@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel-discuss