Skip to content

Build scripts for CFEngine Community packages

Notifications You must be signed in to change notification settings

cfengine/buildscripts

Repository files navigation

This repository contains the necessary tools to build and test cfengine packages for various platforms.

Hardware requirements

By experimentation I have found that building hub packages, which includes php dependency requires more than 1.6G of RAM/swap. 2.6G worked for me, less might work as well.

Example build of Community Agent

A minimal example would be to build packages for cfengine community agent. This should be done in an isolated environment such as a dedicated host, virtual machine or linux container.

Install necessary distribution packages. For example on debian/ubuntu:

apt update -y apt upgrade -y apt install -y git autoconf automake m4 make bison flex binutils libtool gcc g++ libc-dev libpam0g-dev python3 psmisc libtokyocabinet-dev libssl-dev libpcre2-dev default-jre-headless build-essential fakeroot ntp dpkg-dev debhelper pkg-config nfs-common sudo apt-utils wget libncurses5 rsync libexpat1-dev libexpat1 curl apt purge -y emacs emacs24 libltdl-dev libltdl7 

Get the cfengine source code:

mkdir $HOME/cfengine cd $HOME/cfengine git clone --recursive --depth 1 https://github.com/cfengine/core git clone --depth 1 https://github.com/cfengine/buildscripts git clone --depth 1 https://github.com/cfengine/masterfiles 

Set some environment variables:

export NO_CONFIGURE=1 export PROJECT=community export BUILD_TYPE=DEBUG export EXPLICIT_ROLE=agent 

Execute the build steps and see that packages are generated:

./buildscripts/build-scripts/autogen ./buildscripts/build-scripts/clean-buildmachine ./buildscripts/build-scripts/install-dependencies ./buildscripts/build-scripts/configure ./buildscripts/build-scripts/compile ./buildscripts/build-scripts/package ls -l cfengine-community/*.deb 

General Build Machine 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)
    • Additionally, libgcc is used on AIX and Solaris only
  • 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

Dependencies

File install-dependencies and the relevant subdirectories in deps-packaging are the source of this information.

Agent Dependencies

CFEngine version3.21.x3.24.xmasterNotes
diffutils3.123.123.12
libacl2.3.22.3.22.3.2
libattr2.5.22.5.22.5.2
libcurl8.17.08.17.08.17.0
libgnurx2.5.12.5.12.5.1Windows Enterprise agent
libiconv1.181.181.18Needed by libxml2
libxml22.15.12.15.12.15.1
libyaml0.2.50.2.50.2.5
LMDB0.9.330.9.330.9.33
OpenLDAP2.6.102.6.102.6.10Enterprise agent only
OpenSSL3.0.183.6.03.6.0See note below
PCRE8.45--
PCRE2-10.4710.47
pthreads-w322-9-12-9-12-9-1Windows Enterprise agent
SASL22.1.282.1.282.1.28Solaris Enterprise agent
zlib1.3.11.3.11.3.1
librsync--2.3.4
leech--0.2.0

Note: We don't package OpenSSL for RHEL >= 8 and SuSE >= 15. We use the systems bundled SSL for these platforms.

Enterprise Hub dependencies

CFEngine version3.21.x3.24.xmaster
Apache2.4.662.4.662.4.66
APR1.7.61.7.61.7.6
apr-util1.6.31.6.31.6.3
Git2.52.02.52.02.52.0
libexpat-2.7.32.7.3
PHP8.3.288.3.298.5.1
PostgreSQL15.1516.1118.1
nghttp2--1.68.0
rsync3.4.13.4.13.4.1

About

Build scripts for CFEngine Community packages

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 23