On Fri, Jun 24, 2011 at 06:27:22PM +0200, Luca Ceresoli wrote: > The cyrus-imapd build system apparently does not currently allow to > build shared executables. This results in needlessly large files. > In a basic build for x86 (./configure && make), most of the > executables in imap/ have a size between 2.2 and 2.5 MB, and the sum > is 62.8 MB.
Yeah, I've noticed that too - it gets pretty large. > This may not be a problem on a classic mail server, but storage > space can be a precious resource on embedded systems. > Clearly, using shared libraries would reduce the overall space required. Doesn't bother us at all for sure - we have 48Gb RAM on our new IMAP servers. A few statically linked binaries disappear into the noise. Which is why I haven't bothered with it :) > It looks like I'm not the first to think about this. In > http://bugzilla.cyrusimap.org/show_bug.cgi?id=3095 > a patch was proposed and rejected. Unfortunately I could not apply > it, possibly because it's based on an old code base (2008). Yeah, the Makefiles have changed a fair bit in that time. > Would it be feasible to add shared build support in the cyrus-imapd > build system? I don't see any problem with this. I'd love for someone to do it. I have a pile of tasks that would be higher priority for me, but I'm happy to review changes. > For the same motivation (saving precious storage space), it would be > extremely useful to disable the compilation and installation of > selected executables. Agreed. > The standard distribution installed as many as 30 executables in > /usr/cyrus/bin/, which cross-compiled for ARM and stripped take 32 > MB. Those that I really need take <7 MB and I wish I could get rid > of them by passing --disable-pop3proxyd or similar to ./configure. Yeah, absolutely. Of course they'd be a lot smaller with shared libraries anyway. The other option is to just not install those executables. Nothing says you can't clean up your "install" after building it. I assume your build machine has space. > AFAIK this is not currently possible in cyrus-imapd. Is this correct? > Do the Cyrus developers have anything similar in mind for the future > of cyrus-imapd? Is this feasible? I have no objection to it, but I can't prioritise it over my other responsibilities, so someone else will have to do the work! Regards, Bron.