[avahi] embedding avahi

chris mcharg chris at outtrack.org
Thu Sep 14 05:49:01 PDT 2006


Gidday,

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)  
> wrote:
>
>> Hi,
>
> Hi!
>
>> 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  
sometime.

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:
>
>    http://avahi.org/wiki/DownloadAvahi#Requirements
>
>> Would it be possible to write a simple non-dbus version of the
>> daemon?
>
> 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.

Chris

----

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 \
		--host=$(CROSS_COMPILE:-=) \
		--cache-file=`pwd`/../config.cache --disable-manpages \
		--disable-dbus \




More information about the avahi mailing list