[Pkg-silc-devel] Current state of SILC in Debian

Daniel Kahn Gillmor dkg at fifthhorseman.net
Thu Oct 16 17:57:30 UTC 2008


On Thu 2008-10-16 12:10:04 -0400, Jérémy Bobbio wrote:

> Upstream says it was impossible due to the way irssi plugins work.  I am
> still unconvinced about this, but we might have to do some really hacky
> dlopen(3) hacks in order to manually load the SILC library when the
> plugin is loaded.  I never had the time to dig this issue properly and
> see solutions to avoid a static linkage of the embedded source copy
> present in silc-client.

I'd love to see some documentation from upstream for this claim.

Clearly, shared objects *can* be used within an irssi plugin because
the OTR plugin loads libotr (among other things), and the XMPP plugin
loads libloudmouth (also among other things), all without using
dlopen:

[0 dkg at squeak ~]$ dpkg -L irssi-plugin-otr | grep '\.so'
/usr/lib/irssi/modules/libotr.so
[0 dkg at squeak ~]$ ldd /usr/lib/irssi/modules/libotr.so
	linux-gate.so.1 =>  (0xb7f6e000)
	libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7e92000)
	libotr.so.2 => /usr/lib/libotr.so.2 (0xb7e7f000)
	libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7d24000)
	libpcre.so.3 => /usr/lib/libpcre.so.3 (0xb7cfb000)
	libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0xb7c93000)
	/lib/ld-linux.so.2 (0xb7f6f000)
	libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0xb7c8e000)
[0 dkg at squeak ~]$ dpkg -L irssi-plugin-xmpp | grep '\.so'
/usr/lib/irssi/modules/libxmpp_core.so
/usr/lib/irssi/modules/libfe_xmpp.so
/usr/lib/irssi/modules/libtext_xmpp.so
[0 dkg at squeak ~]$ ldd /usr/lib/irssi/modules/*xmpp*.so
/usr/lib/irssi/modules/libfe_xmpp.so:
	linux-gate.so.1 =>  (0xb7f2a000)
	libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7e4e000)
	libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7cf3000)
	libpcre.so.3 => /usr/lib/libpcre.so.3 (0xb7cca000)
	/lib/ld-linux.so.2 (0xb7f2b000)
/usr/lib/irssi/modules/libtext_xmpp.so:
	linux-gate.so.1 =>  (0xb7f6d000)
	libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7e99000)
	libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7d3e000)
	libpcre.so.3 => /usr/lib/libpcre.so.3 (0xb7d15000)
	/lib/ld-linux.so.2 (0xb7f6e000)
/usr/lib/irssi/modules/libxmpp_core.so:
	linux-gate.so.1 =>  (0xb7ef5000)
	libloudmouth-1.so.0 => /usr/lib/libloudmouth-1.so.0 (0xb7ea8000)
	libidn.so.11 => /usr/lib/libidn.so.11 (0xb7e77000)
	libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0xb7dc2000)
	libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7c67000)
	libresolv.so.2 => /lib/i686/cmov/libresolv.so.2 (0xb7c53000)
	libnsl.so.1 => /lib/i686/cmov/libnsl.so.1 (0xb7c3a000)
	libgnutls.so.26 => /usr/lib/libgnutls.so.26 (0xb7b9b000)
	libpcre.so.3 => /usr/lib/libpcre.so.3 (0xb7b72000)
	/lib/ld-linux.so.2 (0xb7ef6000)
	libtasn1.so.3 => /usr/lib/libtasn1.so.3 (0xb7b62000)
	libz.so.1 => /usr/lib/libz.so.1 (0xb7b4d000)
	libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0xb7ae5000)
	libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0xb7ae0000)
[0 dkg at squeak ~]$ 

By comparison, the silc plugin loads nothing but libc:

[0 dkg at squeak ~]$ ldd /usr/lib/irssi/modules/*silc*.so
/usr/lib/irssi/modules/libfe_common_silc.so:
	linux-gate.so.1 =>  (0xb7fbb000)
	libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7e38000)
	/lib/ld-linux.so.2 (0xb7fbc000)
/usr/lib/irssi/modules/libfe_silc.so:
	linux-gate.so.1 =>  (0xb7fb9000)
	libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7e36000)
	/lib/ld-linux.so.2 (0xb7fba000)
/usr/lib/irssi/modules/libsilc_core.so:
	linux-gate.so.1 =>  (0xb7eff000)
	libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7c67000)
	/lib/ld-linux.so.2 (0xb7f00000)
[0 dkg at squeak ~]$ 

> The lib/ directory in silc-client tarball has almost all files
> present in the lib/ directory of silc-toolkit.  So new releases of
> silc-client should be up-to-date.
>
> But, whenever a bug is fixed in a new release of silc-toolkit that
> affects the client without a new release of silc-client (which did
> happen from time to time), the differences must be applied manually
> to silc-client in order to get an updated irssi-plugin-silc.

This is exactly the maintenance hassle that shared libraries were
meant to avoid.  How frustrating!

    --dkg
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 826 bytes
Desc: not available
Url : http://lists.alioth.debian.org/pipermail/pkg-silc-devel/attachments/20081016/f3aad25d/attachment.pgp 


More information about the Pkg-silc-devel mailing list