minimal required version of (optional) tools

Greg Banks gnb at
Mon Jul 2 02:39:45 EDT 2012

On Sun, Jul 1, 2012, at 12:07 AM, Дилян Палаузов wrote:
> Hello,
> is it possible to define in doc/install-compile.html the minimum 
> versions of the tools, a developer needs in order to re-generate all 
> source files need for the compilation of cyrus-imapd?
> The needed tools are autoconf, automake, bison, (f)lex, gperf, libtool 
> and possibly compile_et .
> with the version requirements
>    autoconf >= 2.67
>    automake >= 1.10
>    libtool >= 2.2.6
> What about the minimum required version of (f)lex, bison and gperf?
> gperf is checked for, only when ./configure --maintainer-mode .  If 
> gperf is not found, ./configure aborts (I think).  However, ./configure 
> always checks for lex and bison, and does not fail, if they are not 
> found (I think).
> Can we stick to flex instead of lex?  In any case, flex 2.5.35 supports 
> %option reentrant noyyget_FUNCTIO and noyyset_FUNCTION, which options 
> are not supported by lex on .  noyyget_ and noyyset_ 
> permit to exclude some unneeded functions from sieve/addr-lex.c and 
> sieve/sieve-lex.c, which results smaller .c files and smaller tables of 
> exported symbols (which in theory means less time for the dynamic linker 
> to find an exported symbol).

I think some good rules of thumb for any OSS project would be:

1) if we have any doubts about the version of tools needed to generate
parts of the source, then ship the generated source in the dist tarball
and hide the make rules in maintainer mode.  The code should be
buildable from a dist tarball on the widest possible range of platforms.

2) For maintainer mode, the ideal situation is that versions of tools
available in the current Long Term Support releases of common target
platforms should work without difficulty.

3) For maintainer mode, if a tool is needed to build then check for it
in configure and fail configure if the tool is either not present or is
missing a necessary feature.

Ideally we would be enforcing 2) by having CI machines for all supported
target platforms.  Currently we have only one CI machine and it's
running an old CentOS.  We really should add some more.  Also, as a
project we really should have some kind of policy about which platforms
we officially support.  I'm guessing the list would be something like
"RHEL, SLES, Ubuntu Server, and Solaris".

Re the specific question of flex, I believe both bison and flex are
supported and easily installable on all those target platforms,
including Solaris (in SFW or whatever Oracle call it now).


More information about the Cyrus-devel mailing list