[avahi] embedding avahi
chris at outtrack.org
Thu Sep 14 05:49:01 PDT 2006
We've had Avahi in the demo images for a couple of our devices at
work for a few months now.
On 2006/09/14, at 6:19, Lennart Poettering wrote:
> On Wed, 13.09.06 16:30, Vet, Paul (Paul.Vet at christiedigital.com)
>> I'm wondering how possible it is to strip avahi down to the bare
>> minimum for
>> installation on a small device. How large would such a minimal
>> version be?
> Good question.
> The embeddable core of Avahi is about 200K large (x86/Linux), i guess
> with a little bit optimizing for size (i.e. -Os, compiling statically)
> and removing unnecessary features you could get near 100K without too
> much trouble.
> However, we don't have much experience with this, so YMMV.
>> What is the absolute minimum required set of external libraries?
> That depends. If you need just the embeddable mDNS core of Avahi
> (libavahi-core) then you need no other deps. However, I've you want to
> have the "avahi-daemon" binary with its configuration files and
> command line parsing, you need libdaemon and libexpat. If you want
> access to the avahi core from other processes using our client API you
> need D-Bus.
avahi-daemon minus d-bus is the configuration we're using at the
moment. (I've copied the configure options for 0.6.9 below)
It would have been nice to have IPC, but looking at the D-Bus' debian
package dependancy trail and its likely binary size kind of put me
off that. I should really check what D-Bus really needs at a minimum
I can't remember the final binary size and lib dependancies off hand,
but I'll try to remember to post them sometime soon (on arm by the way).
> Please have a look on the dependency table on:
>> Would it be possible to write a simple non-dbus version of the
> No need for writing this. All you have to do is passing --disable-dbus
> to the configure script. However, if you do that Avahi will not be
> accessible from other processes, i.e. tools like "avahi-browse" will
> not be available. The static service and host name definition file is
> still availablle, though. For many embedded devices that just want to
> announce a service this should probably suffice.
> For more sophistacated devices it is probably best to write your own
> minimal daemon that makes direct use of avahi-core and doesn't need
> any IPC functionality. The API documentation for this embeddable core
> is built only when --enable-core-docs is passed to the configure
> script and is not available online.
I too would have liked a non-dbus/expat daemon. The Avahi package
now has great flexibility with the core library, but I think a lot of
embedded linux projects will just be looking for a tested, ready to
go and small daemon.
Still, using avahi-daemon just with the static configuration files is
fine for us at the moment.
CONFIGURE_OPT = --disable-glib --disable-qt3 --disable-qt4 \
--disable-gtk --disable-gdbm --disable-python \
--disable-pygtk --disable-python-dbus --disable-mono \
--disable-monodoc --disable-doxygen-doc --disable-doxygen-dot \
--disable-doxygen-html --disable-manpages --disable-xmltoman \
--with-distro=none --prefix=`pwd`/../install \
--cache-file=`pwd`/../config.cache --disable-manpages \
More information about the avahi