Prerequisites ............. Due to sheer diversity of the environments, build machine is expected to provide strict minimum amount of software (don't forget --no-install-recommends on dpkg-based systems): To access the build machine: * SSH server * Bundled one on Unixes * FreeSSHd on Windows * 'build' account with SSH key installed To transfer files back and forth: * rsync on Unixes * 7z on Windows To be able to install packages and run tests: * passwordless sudo access for 'build' account * sudo should not require TTY (remove 'Defaults requiretty' from /etc/sudoers) To build everything: * GCC (gcc) * GNU make (make) * libc development package (libc-dev, glibc-devel) * bison (bison) * flex (flex) * fakeroot (but not fakeroot 1.12, it is horribly slow!) To create packages: * Native packaging manager * rpm-build on RPM-based systems * dpkg-dev, debhelper, fakeroot * WiX on Windows To build MySQL library (yeah!): * g++ (gcc-c++, g++) * ncurses (ncurses-devel, libncurses5-dev) To build libvirt: * pkg-config (pkg-config, pkgconfig) Anything else is either preprocessed on buildbot slave or built and installed during build. Documentation build pre-requisites .................................. * texinfo * texlive * cm-super * texlive-fonts-extra Non-requisites .............. Build machines should not contain the following items, which may interfere with build process: * CFEngine itself, either in source or binary form (build machines are short-living, so this is not a problem) * Development packages for anything beside libc to avoid picking them up instead of bundled ones accidentally. * MySQL and PostgreSQL servers, clients and libraries The following packages should not be installed on build machines as well, to avoid accidentally regenerating files transferred from buildslave: * automake * autoconf * libtool