Re: Putting .so symlinks in libs package for dlopen()ing?
On Mon, Dec 09, 2002 at 11:26:14AM +1100, Timshel Knoll <email@example.com> was heard to say:
> 2. Make parted dlopen() libreiserfs-0.3.so.0 rather than libreiserfs.so.
> This will solve the problem, but is not ideal solution since a minor
> version upgrade or SONAME change of libreiserfs will break parted's
> reiserfs support (note that parted does its own internal checking of
> libreiserfs versions to make sure it is compatible, and gracefully
> fails if it can't resolve all required symbols on dlopen()).
Could you explain in more detail why this is a bad thing? SONAME
changes mean binary compatibility is broken -- even if you can resolve
all symbols, I don't think blindly trying to call stuff in the library
is a good idea. I especially don't want a program with questionable
linkage to be mucking with my filesystems.
> Also, the parted source code needs to be manually edited on every
> minor or SONAME change of library.
Hm, maybe you could run readlink on the development package's .so link
at build time...would that work?
> 3. Include a symlink to the appropriate libreiserfs in the
> libparted1.6-0 package "/lib/parted/modules/libreiserfs.so" and
> dlopen that instead. This has the added advantage that the symbolic
> link could be updated from libparted's postinst, and I could also
> modify it from libreiserfs's postinst. However, I'd rather find a
> solution that didn't require _any_ mention of parted in libreiserfs,
> other than a Suggests:. Or am I just being a puritan here?
> ATM I'm leaning towards 2, or possibly 3. Any comments/queries/further
> Timshel Knoll <firstname.lastname@example.org>, Debian email: <email@example.com>
> Debian GNU/Linux developer: http://people.debian.org/~timshel/
> GnuPG public key: finger firstname.lastname@example.org
/-------------------- Daniel Burrows <email@example.com> -------------------\
| "Inconceivable!" |
| -- "The Princess Bride" |
\------- (if (not (understand-this)) (go-to http://www.schemers.org)) --------/