EKG2 packages for Debian
========================

Multiple binary packages
------------------------

One of the goals behind the modularization of ekg2 is to allow the users to
only install and run the features they want - there are multiple plugins, with
diverse sets of dependencies.  In Debian, when splitting ekg2 across multiple
binary packages, we need to balance between the flexibility that this gives to
the user, and the load on Debian infrastructure and package selection tools.

Therefore I have chosen NOT to have a separate binary package for EACH AND
EVERY plugin, but only where this is warranted by its footprint (difference of
the installed size of the package and its dependencies), or a noticeable gain
to the Debian infrastructure.  Thus a component is in a separate package if,
all things being equal, at least one of the following applies:

 - uninstalling it lets user decrease the footprint by more than 1MB, on a base
   system. This might seem small but keep in mind that in a certain
   distribution of packages, when the rule is applied consistently, bumping this
   threshold by a couple of MB would inflate the core package footprint by a
   dozen or so megabytes.

 - it is usable on a machine without the core package,

 - it may be made into an architecture: all binary package larger than 4MB


The current package split was determined by analyzing the installed size of
dependencies of each ELF file on i386 architecture, using the following
commands:

  # In the build directory:
  find debian/ekg2/ -type f|xargs file|grep ELF|cut -d: -f 1| while read file;do
    basename=`basename $file`
    dpkg-shlibdeps --warnings=0 -O $file|cut -d= -f 2-|
      sed 's,([^)]*),,g;s/,/ /g'|sed "s,^,$basename:,"
  done | sed 's,libc6,,;s, \+, ,g;s, $,,;s,: ,:,' | grep -v ':$' > pkgs
  # Then, in a clean base-only chroot:
  cat pkgs | while read l;do
    file=$(echo $l|cut -d: -f 1)
    deps=$(echo $l|cut -d: -f 2)
    echo -n "$file "
    LANG=C aptitude install -syDZq $deps < /dev/null | grep 'After unpacking' |
      sed 's,.*unpacking \(.*\) will.*,\1,'
  done

Which yielded:

  gtk.so          103000 kB
  python.so        19400 kB
  ncurses.so        5321 kB
  xosd.so           4096 kB
  jabber.so         2634 kB
  ekg2-remote       2257 kB
  perl.so           1421 kB
  gpg.so            1139 kB
  feed.so            377 kB
  ekg2               377 kB
  gg.so              205 kB




Build-time configuration
------------------------

For the convenience of the user, here are the flags that ekg2 is configured
with at build time:

	dh_auto_configure -- \
		$(confflags) \
		--prefix=/usr \
		--sysconfdir=/etc \
		--mandir=\$${prefix}/share/man \
		--infodir=\$${prefix}/share/info \
		--libexecdir=\$${prefix}/lib/ekg2 \
		--enable-autoresponder \
		--enable-gg \
		--enable-gpg \
		--enable-gtk \
		--enable-icq \
		--enable-irc \
		--enable-jabber \
		--enable-jogger \
		--enable-logs \
		--enable-logsqlite \
		--enable-mail \
		--enable-ncurses \
		--enable-nntp \
		--enable-perl \
		--enable-polchat \
		--enable-python \
		--enable-rivchat \
		--enable-rss \
		--enable-sim \
		--enable-sms \
		--disable-xosd \
		--with-aspell \
		--with-expat \
                --with-gnutls \
		--with-gpgme \
		--with-gpm \
		--with-gtk \
		--with-libgadu \
		--without-libxosd \
		--with-ncurses \
                --with-openssl \
		--with-perl \
		--with-python \
		--with-sqlite3 \
		--with-zlib

Some features are currently not buildable in the upstream source tree, possibly
because they are broken and do not have an active maintainer.  The Debian
packaging follows those upstream decisions, additionally disabling them
explicitly in order not to re-enable unconsciously.
 - dbus
 - gif/ungif/jpeg support: Gadu-Gadu tokens are in GIF format now, but they are
   not readable when displayed in ascii format, not mentioning their OCR-ability
 - gsm: codec support is not implemented in the client
 - httprc_xajax
 - ioctld
 - logsoracle: (also: no build-deps in Debian)
 - oss
 - pcm
 - rc
 - remote
 - rot13
 - ruby
 - sniff
 - xmsg
 - xosd: also does not handle unicode correctly, due to the xosd library using
   a deprecated X11 interface.

OpenSSL is necessary for "sim" plugin to work, and for TLS support in the "irc"
plugin. GNUTLS support is recommended for TLS support in the "jabber" plugin.

Readline plugin is disabled explicitly, due to legal problems with
openssl+readline.

 -- Marcin Owsiany <porridge@debian.org>,  Sat, 27 Nov 2010 18:13:04 -0800
