{{>toc}} h1. Buildbot CICD configuration h2. Master h3. Installation
adduser --home /var/lib/buildbot --disabled-password --disabled-login --gecos "Buildbot user" buildbot
apt-get install -y python3-venv build-essential python3-dev libssl-dev libffi-dev libmariadb-dev-compat mercurial
su - buildbot
python3 -m venv sandbox
source sandbox/bin/activate
pip install --upgrade pip
pip install 'buildbot[bundle]' mysqlclient
exit
su - buildbot -c '(source sandbox/bin/activate; buildbot create-master master)'
h3. Developers try jobs
addgroup developers
mkdir -p /var/lib/buildbot/jobdir/{new,cur,tmp}
chown -R buildbot.developers /var/lib/buildbot/jobdir
chmod -R g+rwx,o-rwx /var/lib/buildbot/jobdir
adduser ${UN} developers
h3. MySQL database initialization
echo "DROP DATABASE IF EXISTS ${BUILDBOT_DB_NAME};" | mysql
echo "DROP USER IF EXISTS '${BUILDBOT_DB_USER}'@'localhost';" | mysql
echo "CREATE DATABASE ${BUILDBOT_DB_NAME};" | mysql
echo "CREATE USER IF NOT EXISTS '${BUILDBOT_DB_USER}'@'localhost' IDENTIFIED BY '${BUILDBOT_DB_PASS}';" | mysql
echo "GRANT ALL ON ${BUILDBOT_DB_NAME}.* TO '${BUILDBOT_DB_USER}'@'localhost';" | mysql
echo "FLUSH PRIVILEGES;" | mysql
su - buildbot -c '(source sandbox/bin/activate; buildbot upgrade-master master)'
su - buildbot -c '(source sandbox/bin/activate; buildbot checkconfig master)'
su - buildbot -c '(source sandbox/bin/activate; buildbot restart master)'
h3. SystemD script
cat << EOF > /etc/systemd/system/buildbot-master.service
[Unit]
Description=BuildBot master service
After=network.target
[Service]
User=buildbot
Group=buildbot
WorkingDirectory=/var/lib/buildbot/
ExecStart=/var/lib/buildbot/sandbox/bin/buildbot start --nodaemon master
ExecStop=/var/lib/buildbot/sandbox/bin/buildbot stop master
ExecReload=/var/lib/buildbot/sandbox/bin/buildbot reconfig master
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload 
systemctl enable buildbot-master
h3. Basic configuration
cat << EOF > /var/lib/buildbot/master/master.cfg
from buildbot.plugins import *
c = BuildmasterConfig = {}

c['protocols'] = {'pb': {'port': 9989}}
c['workers'] = [
worker.Worker("bb-linux", "pass!"),
worker.Worker("bb-dist", "pass!"),
worker.Worker("bb-deb", "pass!"),
worker.Worker("bb-mingw", "pass!"),
worker.Worker("macos-monterey", "pass!"),
]

c['change_source'] = []
cs_mkernel = changes.HgPoller(repourl='/srv/hg/mkernel', workdir='mkernel', pollInterval=30, branch='') 
#cs_mkernel=changes.HgPoller(repourl='http://hg.cerbelle.net/hg/mkernel', workdir='mkernel', pollInterval=30, branch='')
c['change_source'].append(cs_mkernel)

c['projects'] = [
    util.Project(name="mkernel", description="Micro_Kernel application"),
]

oomtest_lock = util.WorkerLock("oomtest_lock")

c['builders'] = []

c['schedulers'] = []

c['services'] = []

mn = reporters.MailNotifier(
    fromaddr="buildbot@cerbelle.net",
    relayhost="127.0.0.1", smtpPort=25,
    extraRecipients=["francois@cerbelle.net"],
    )
c['services'].append(mn)

c['title'] = "Buildbot Cerbelle"
c['titleURL'] = "https://redmine.cerbelle.net/"
c['buildbotURL'] = "https://buildbot.cerbelle.net/"
c['www'] = dict(port="tcp:8010:interface=127.0.0.1", plugins=dict(waterfall_view={}, console_view={}, grid_view={}))
c['db'] = { 'db_url' : "mysql://${BUILDBOT_DB_USER}:${BUILDBOT_DB_PASS}@localhost/${BUILDBOT_DB_NAME}?max_idle=300" }
EOF
h2. Workers h3. bb-dist Designed to try, test and build from mercurial repository. Generate the dist (sources) files. h4. Infrastructure * 8 CPU * 4GB RAM * 20GB HDD h4. Configuration Debian12 with postinstall customizations

adduser --home /var/lib/buildbot --disabled-password --gecos "Buildbot user" buildbot
apt-get install -y python3-venv sudo
su - buildbot -c '(python3 -m venv sandbox)'
su - buildbot -c '(source sandbox/bin/activate; pip install --upgrade pip)'
su - buildbot -c '(source sandbox/bin/activate; pip install buildbot-worker)'
su - buildbot -c '(source sandbox/bin/activate; buildbot-worker create-worker worker buildbot.cerbelle.net example-worker pass)'
echo 'François Cerbelle ' > /var/lib/buildbot/worker/info/admin
hostname -f > /var/lib/buildbot/worker/info/host
cat << EOF > /etc/systemd/system/buildbot-worker.service
[Unit]
Description=BuildBot worker service
After=network.target
[Service]
User=buildbot
Group=buildbot
WorkingDirectory=/var/lib/buildbot/
ExecStart=/var/lib/buildbot/sandbox/bin/buildbot-worker start --nodaemon worker
ExecStop=/var/lib/buildbot/sandbox/bin/buildbot-worker stop worker
ExecReload=/var/lib/buildbot/sandbox/bin/buildbot-worker restart worker
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable buildbot-worker
systemctl stop buildbot-worker
systemctl start buildbot-worker
h4. Build pre-requisites

apt-get install -y mercurial build-essential autogen autoconf autopoint libtool check pkg-config gettext cppcheck gcovr
h3. bb-linux Designed to try, test and build from dist (sources) files. h4. Infrastructure * 4 CPU * 2GB RAM * 20GB HDD h4. Configuration Debian12 with postinstall customizations

adduser --home /var/lib/buildbot --disabled-password --gecos "Buildbot user" buildbot
apt-get install -y python3-venv sudo
su - buildbot -c '(python3 -m venv sandbox)'
su - buildbot -c '(source sandbox/bin/activate; pip install --upgrade pip)'
su - buildbot -c '(source sandbox/bin/activate; pip install buildbot-worker)'
su - buildbot -c '(source sandbox/bin/activate; buildbot-worker create-worker worker buildbot.cerbelle.net example-worker pass)'
echo 'François Cerbelle ' > /var/lib/buildbot/worker/info/admin
hostname -f > /var/lib/buildbot/worker/info/host
cat << EOF > /etc/systemd/system/buildbot-worker.service
[Unit]
Description=BuildBot worker service
After=network.target
[Service]
User=buildbot
Group=buildbot
WorkingDirectory=/var/lib/buildbot/
ExecStart=/var/lib/buildbot/sandbox/bin/buildbot-worker start --nodaemon worker
ExecStop=/var/lib/buildbot/sandbox/bin/buildbot-worker stop worker
ExecReload=/var/lib/buildbot/sandbox/bin/buildbot-worker restart worker
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable buildbot-worker
systemctl stop buildbot-worker
systemctl start buildbot-worker
h4. Build pre-requisites

apt-get install -y build-essential doxygen doxygen-latex check pkg-config lcov graphviz fuse3 gcovr
h3. bb-mingw Designed to try, test and build from dist (sources) files. h4. Infrastructure * 4 CPU * 2GB RAM * 20GB HDD h4. Configuration Debian12 with postinstall customizations

adduser --home /var/lib/buildbot --disabled-password --gecos "Buildbot user" buildbot
apt-get install -y python3-venv sudo
su - buildbot -c '(python3 -m venv sandbox)'
su - buildbot -c '(source sandbox/bin/activate; pip install --upgrade pip)'
su - buildbot -c '(source sandbox/bin/activate; pip install buildbot-worker)'
su - buildbot -c '(source sandbox/bin/activate; buildbot-worker create-worker worker buildbot.cerbelle.net example-worker pass)'
echo 'François Cerbelle ' > /var/lib/buildbot/worker/info/admin
hostname -f > /var/lib/buildbot/worker/info/host
cat << EOF > /etc/systemd/system/buildbot-worker.service
[Unit]
Description=BuildBot worker service
After=network.target
[Service]
User=buildbot
Group=buildbot
WorkingDirectory=/var/lib/buildbot/
ExecStart=/var/lib/buildbot/sandbox/bin/buildbot-worker start --nodaemon worker
ExecStop=/var/lib/buildbot/sandbox/bin/buildbot-worker stop worker
ExecReload=/var/lib/buildbot/sandbox/bin/buildbot-worker restart worker
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable buildbot-worker
systemctl stop buildbot-worker
systemctl start buildbot-worker
h4. Build pre-requisites

apt-get install -y mingw-w64 mingw-w64-tools make g++ nsis pkg-config pev
Then, follow all the individual dependencies installations steps from [[Cross_compilation_on_Debian_for_Windows]] h3. bb-macos12 Designed to try, test and build from dist (sources) files. h4. Infrastructure * 4 CPU * 2GB RAM * 20GB HDD h4. Configuration h4. Build pre-requisites

h3. bb-debian12 Designed to try, test and build from dist (sources) files. h4. Infrastructure * 4 CPU * 2GB RAM * 20GB HDD h4. Configuration Debian12 with postinstall customizations

adduser --home /var/lib/buildbot --disabled-password --gecos "Buildbot user" buildbot
apt-get install -y python3-venv sudo
su - buildbot -c '(python3 -m venv sandbox)'
su - buildbot -c '(source sandbox/bin/activate; pip install --upgrade pip)'
su - buildbot -c '(source sandbox/bin/activate; pip install buildbot-worker)'
su - buildbot -c '(source sandbox/bin/activate; buildbot-worker create-worker worker buildbot.cerbelle.net example-worker pass)'
echo 'François Cerbelle ' > /var/lib/buildbot/worker/info/admin
hostname -f > /var/lib/buildbot/worker/info/host
cat << EOF > /etc/systemd/system/buildbot-worker.service
[Unit]
Description=BuildBot worker service
After=network.target
[Service]
User=buildbot
Group=buildbot
WorkingDirectory=/var/lib/buildbot/
ExecStart=/var/lib/buildbot/sandbox/bin/buildbot-worker start --nodaemon worker
ExecStop=/var/lib/buildbot/sandbox/bin/buildbot-worker stop worker
ExecReload=/var/lib/buildbot/sandbox/bin/buildbot-worker restart worker
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable buildbot-worker
systemctl stop buildbot-worker
systemctl start buildbot-worker
h4. Build pre-requisites

apt-get install -y pbuilder
h3. bb-rhel9 Designed to try, test and build from dist (sources) files. h4. Infrastructure * 4 CPU * 2GB RAM * 20GB HDD h4. Configuration

h4. Build pre-requisites

h2. Builders h3. src Prerequisites: mercurial build-essential autogen autoconf autopoint libtool check Worker: bb-dist Steps: # hg clone # ./bootstrap.sh # ./configure # make all check clean # make distclean

src = util.BuildFactory()
src.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
src.addStep(steps.Mercurial(name="Clone repository",repourl='http://hg.cerbelle.net/hg/mkernel', mode='full', method='fresh', branchType='inrepo'))
src.addStep(steps.SetPropertyFromCommand(name="Get package name", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\1~'", property="package", want_stdout=True, want_stderr=True))
src.addStep(steps.SetPropertyFromCommand(name="Get package version", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\2~'", property="version", want_stdout=True, want_stderr=True))
src.addStep(steps.ShellCommand(name="Generate autotools files",command=["./bootstrap.sh"], want_stdout=True, want_stderr=True))
src.addStep(steps.Configure(name='Default configuration', command=["./configure","--disable-doxygen"], want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
src.addStep(steps.Compile(name="Default make all",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "all" ], want_stdout=True, want_stderr=True))
src.addStep(steps.Test(name="Default make check",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "check" ], want_stdout=True, want_stderr=True, haltOnFailure=True, logfiles={"testsuite.log": "test/testsuite.log"}, locks=[oomtest_lock.access('exclusive')]))
src.addStep(steps.Compile(name="Default make clean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "clean" ], want_stdout=True, want_stderr=True))
src.addStep(steps.Compile(name="Default make distclean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ], want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="Src",
    workernames=["bb-dist"],
    factory=src))
h3. src-cppcheck Pre-requisites: mercurial build-essential autogen autoconf autopoint libtool check cppcheck Worker: bb-dist Steps: # hg clone # cppcheck # ./bootstrap.sh? # ./configure --enable-debug? # make all check cppcheck clean? # Publish cppcheck # make distclean

srcCppcheck = util.BuildFactory()
srcCppcheck.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
srcCppcheck.addStep(steps.SetProperty(name="Compute basename", property="basename", value=util.Interpolate("%(prop:package)s-%(prop:version)s")))
srcCppcheck.addStep(steps.Mercurial(name="Clone repository",repourl='http://hg.cerbelle.net/hg/mkernel', mode='full', method='fresh', branchType='inrepo'))
srcCppcheck.addStep(steps.SetPropertyFromCommand(name="Get package name", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\1~'", property="package", want_stdout=True, want_stderr=True))
srcCppcheck.addStep(steps.SetPropertyFromCommand(name="Get package version", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\2~'", property="version", want_stdout=True, want_stderr=True))
srcCppcheck.addStep(steps.ShellCommand(name="Generate autotools files",command=["./bootstrap.sh"], want_stdout=True, want_stderr=True))
srcCppcheck.addStep(steps.Configure(name='Default configuration', command=["./configure","--disable-doxygen"], want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
srcCppcheck.addStep(steps.Test(name="Default make cppcheck",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "cppcheck" ], want_stdout=True, want_stderr=True, haltOnFailure=True, logfiles={"cppcheck.xml": "cppcheck.xml"}))
srcCppcheck.addStep(steps.DirectoryUpload(name="Cppcheck upload report", workersrc="cppcheck", masterdest=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-cppcheck"), urlText="CppCheck report", url=util.Interpolate("https://packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-cppcheck")))
srcCppcheck.addStep(steps.Compile(name="Default make clean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "clean" ], want_stdout=True, want_stderr=True))
srcCppcheck.addStep(steps.Compile(name="Default make distclean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ], want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="SrcCppcheck",
    workernames=["bb-dist"],
    factory=srcCppcheck))
h3. src-dbg Pre-requisite: mercurial build-essential autogen autoconf autopoint libtool check Worker: bb-dist Steps: # hg clone # ./bootstrap.sh # ./configure --enable-debug # make all check clean # make distclean

srcdbg = util.BuildFactory()
srcdbg.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
srcdbg.addStep(steps.Mercurial(name="Clone repository",repourl='http://hg.cerbelle.net/hg/mkernel', mode='full', method='fresh', branchType='inrepo'))
srcdbg.addStep(steps.SetPropertyFromCommand(name="Get package name", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\1~'", property="package", want_stdout=True, want_stderr=True))
srcdbg.addStep(steps.SetPropertyFromCommand(name="Get package version", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\2~'", property="version", want_stdout=True, want_stderr=True))
srcdbg.addStep(steps.ShellCommand(name="Generate autotools files",command=["./bootstrap.sh"], want_stdout=True, want_stderr=True))
srcdbg.addStep(steps.Configure(name='Default configuration for debug', command=["./configure","--disable-doxygen", "--enable-debug"], want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
srcdbg.addStep(steps.Compile(name="Default make all",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "all" ], want_stdout=True, want_stderr=True))
srcdbg.addStep(steps.Test(name="Default make check",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "check" ], want_stdout=True, want_stderr=True, haltOnFailure=True, logfiles={"testsuite.log": "test/testsuite.log"}, locks=[oomtest_lock.access('exclusive')]))
srcdbg.addStep(steps.Compile(name="Default make clean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "clean" ], want_stdout=True, want_stderr=True))
srcdbg.addStep(steps.Compile(name="Default make distclean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ], want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="SrcDbg",
    workernames=["bb-dist"],
    factory=srcdbg))
h3. src-gcov Pre-requisite: mercurial build-essential autogen autoconf autopoint libtool check Worker: bb-dist Steps: # hg clone # ./bootstrap.sh # ./configure --enable-gcov # make all check lcov clean # gcov `find . -name '*.gcno'` # make distclean

srcgcov = util.BuildFactory()
srcgcov.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
srcgcov.addStep(steps.Mercurial(name="Clone repository",repourl='http://hg.cerbelle.net/hg/mkernel', mode='full', method='fresh', branchType='inrepo'))
srcgcov.addStep(steps.SetPropertyFromCommand(name="Get package name", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\1~'", property="package", want_stdout=True, want_stderr=True))
srcgcov.addStep(steps.SetPropertyFromCommand(name="Get package version", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\2~'", property="version", want_stdout=True, want_stderr=True))
srcgcov.addStep(steps.ShellCommand(name="Generate autotools files",command=["./bootstrap.sh"], want_stdout=True, want_stderr=True))
srcgcov.addStep(steps.Configure(name='Default configuration for gcov', command=["./configure","--disable-doxygen", "--enable-gcov"], want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
srcgcov.addStep(steps.Compile(name="Default make all",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "all" ], want_stdout=True, want_stderr=True))
srcgcov.addStep(steps.Test(name="Default make check",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "check" ], want_stdout=True, want_stderr=True, haltOnFailure=True, logfiles={"testsuite.log": "test/testsuite.log"}, locks=[oomtest_lock.access('exclusive')]))
srcgcov.addStep(steps.ShellCommand(name="Check coverage statistics",command="gcov -n `find . -type f -name '*.gcno'`", want_stdout=True, want_stderr=True))
srcgcov.addStep(steps.Compile(name="Default make clean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "clean" ], want_stdout=True, want_stderr=True))
srcgcov.addStep(steps.Compile(name="Default make distclean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ], want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="SrcGcov",
    workernames=["bb-dist"],
    factory=srcgcov))
h3. src-dbggcov Pre-requisites: mercurial build-essential autogen autoconf autopoint libtool check Worker: bb-dist Steps: # hg clone # ./bootstrap.sh # ./configure --enable-debug --enable-gcov # make all check clean # gcov `find . -name '*.gcno'` # make distclean

srcdbggcov = util.BuildFactory()
srcdbggcov.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
srcdbggcov.addStep(steps.Mercurial(name="Clone repository",repourl='http://hg.cerbelle.net/hg/mkernel', mode='full', method='fresh', branchType='inrepo'))
srcdbggcov.addStep(steps.SetPropertyFromCommand(name="Get package name", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\1~'", property="package", want_stdout=True, want_stderr=True))
srcdbggcov.addStep(steps.SetPropertyFromCommand(name="Get package version", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\2~'", property="version", want_stdout=True, want_stderr=True))
srcdbggcov.addStep(steps.ShellCommand(name="Generate autotools files",command=["./bootstrap.sh"], want_stdout=True, want_stderr=True))
srcdbggcov.addStep(steps.Configure(name='Default configuration for gcov and debug', command=["./configure","--disable-doxygen", "--enable-debug", "--enable-gcov"], want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
srcdbggcov.addStep(steps.Compile(name="Default make all",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "all" ], want_stdout=True, want_stderr=True))
srcdbggcov.addStep(steps.Test(name="Default make check",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "check" ], want_stdout=True, want_stderr=True, haltOnFailure=True, logfiles={"testsuite.log": "test/testsuite.log"}, locks=[oomtest_lock.access('exclusive')]))
srcdbggcov.addStep(steps.ShellCommand(name="Check coverage statistics",command="gcov -n `find . -type f -name '*.gcno'`", want_stdout=True, want_stderr=True))
srcdbggcov.addStep(steps.Compile(name="Default make clean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "clean" ], want_stdout=True, want_stderr=True))
srcdbggcov.addStep(steps.Compile(name="Default make distclean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ], want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="SrcDbgGcov",
    workernames=["bb-dist"],
    factory=srcdbggcov))
h3. src-gprof Pre-requisite: mercurial build-essential autogen autoconf autopoint libtool check Worker: bb-dist Steps: # hg clone # ./bootstrap.sh # ./configure --enable-gprof # make all check clean # gprof ./src/mkernel `find src -name 'gmon.out'` # make distclean

srcgprof = util.BuildFactory()
srcgprof.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
srcgprof.addStep(steps.Mercurial(name="Clone repository",repourl='http://hg.cerbelle.net/hg/mkernel', mode='full', method='fresh', branchType='inrepo'))
srcgprof.addStep(steps.SetPropertyFromCommand(name="Get package name", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\1~'", property="package", want_stdout=True, want_stderr=True))
srcgprof.addStep(steps.SetPropertyFromCommand(name="Get package version", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\2~'", property="version", want_stdout=True, want_stderr=True))
srcgprof.addStep(steps.ShellCommand(name="Generate autotools files",command=["./bootstrap.sh"], want_stdout=True, want_stderr=True))
srcgprof.addStep(steps.Configure(name='Default configuration for gprof', command=["./configure","--disable-doxygen", "--enable-gprof"], want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
srcgprof.addStep(steps.Compile(name="Default make all",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "all" ], want_stdout=True, want_stderr=True))
srcgprof.addStep(steps.Test(name="Default make check",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "check" ], want_stdout=True, want_stderr=True, haltOnFailure=True, logfiles={"testsuite.log": "test/testsuite.log"}, locks=[oomtest_lock.access('exclusive')]))
srcgprof.addStep(steps.Compile(name="Default make clean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "clean" ], want_stdout=True, want_stderr=True))
srcgprof.addStep(steps.Compile(name="Default make distclean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ], want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="SrcGprof",
    workernames=["bb-dist"],
    factory=srcgprof))
h3. src-gdb Pre-requisites: mercurial build-essential autogen autoconf autopoint libtool check Worker: bb-dist Steps: # hg clone # ./bootstrap.sh # ./configure --enable-gdb # make all check clean # make distclean

srcgdb = util.BuildFactory()
srcgdb.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
srcgdb.addStep(steps.Mercurial(name="Clone repository",repourl='http://hg.cerbelle.net/hg/mkernel', mode='full', method='fresh', branchType='inrepo'))
srcgdb.addStep(steps.SetPropertyFromCommand(name="Get package name", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\1~'", property="package", want_stdout=True, want_stderr=True))
srcgdb.addStep(steps.SetPropertyFromCommand(name="Get package version", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\2~'", property="version", want_stdout=True, want_stderr=True))
srcgdb.addStep(steps.ShellCommand(name="Generate autotools files",command=["./bootstrap.sh"], want_stdout=True, want_stderr=True))
srcgdb.addStep(steps.Configure(name='Default configuration for gdb', command=["./configure","--disable-doxygen", "--enable-gdb"], want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
srcgdb.addStep(steps.Compile(name="Default make all",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "all" ], want_stdout=True, want_stderr=True))
srcgdb.addStep(steps.Test(name="Default make check",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "check" ], want_stdout=True, want_stderr=True, haltOnFailure=True, logfiles={"testsuite.log": "test/testsuite.log"}, locks=[oomtest_lock.access('exclusive')]))
srcgdb.addStep(steps.Compile(name="Default make clean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "clean" ], want_stdout=True, want_stderr=True))
srcgdb.addStep(steps.Compile(name="Default make distclean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ], want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="SrcGdb",
    workernames=["bb-dist"],
    factory=srcgdb))
h3. src-dist Pre-requisites: mercurial build-essential autogen autoconf autopoint libtool gettext check Worker: bb-dist Steps: # hg clone # ./bootstrap.sh # ./configure # make dist distcheck distclean # Upload tgz # make distclean

srcdist = util.BuildFactory()
srcdist.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
srcdist.addStep(steps.SetProperty(name="Compute basename", property="basename", value=util.Interpolate("%(prop:package)s-%(prop:version)s")))
srcdist.addStep(steps.Mercurial(name="Clone repository",repourl='http://hg.cerbelle.net/hg/mkernel', mode='full', method='fresh', branchType='inrepo'))
srcdist.addStep(steps.SetPropertyFromCommand(name="Get package name", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\1~'", property="package", want_stdout=True, want_stderr=True))
srcdist.addStep(steps.SetPropertyFromCommand(name="Get package version", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\2~'", property="version", want_stdout=True, want_stderr=True))
srcdist.addStep(steps.ShellCommand(name="Generate autotools files",command=["./bootstrap.sh"], want_stdout=True, want_stderr=True))
srcdist.addStep(steps.Configure(name='Default configuration', command=["./configure","--disable-doxygen" ], want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
srcdist.addStep(steps.Compile(name="Default make dist",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "dist" ], want_stdout=True, want_stderr=True))
srcdist.addStep(steps.Test(name="Default make distcheck",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distcheck" ], want_stdout=True, want_stderr=True, haltOnFailure=True, locks=[oomtest_lock.access('exclusive')]))
srcdist.addStep(steps.Compile(name="Default make distclean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ], want_stdout=True, want_stderr=True))
srcdist.addStep(steps.MultipleFileUpload(name="Default publish sources dist files",
  workersrcs=[
    util.Interpolate("%(prop:basename)s.tar.*"),
    util.Interpolate("%(prop:basename)s.zip"),
  ],
  masterdest=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s"), url=util.Interpolate("https://packages.cerbelle.net/%(prop:package)s/"),
  urlText="Sources folder", mode=0o755, glob=True, keepstamp=True))
srcdist.addStep(steps.MasterShellCommand(name="Fix www folders permissions",command=["chmod", "-R", "u+rw,go+r", util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s")]))
srcdist.addStep(steps.Trigger(
  schedulerNames=['MKernel_Triggerable'], waitForFinish=False, updateSourceStamp=True,
  set_properties={
    'package'  : util.Interpolate("%(prop:package)s"),
    'version'  : util.Interpolate("%(prop:version)s"),
}))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="SrcDist",
    workernames=["bb-dist"],
    factory=srcdist))
h3. src-inst Pre-requisites: mercurial build-essential autogen autoconf autopoint libtool check Worker: bb-dist Steps: # hg clone # ./bootstrap.sh # ./configure --prefix=`pwd`/inst # make install installcheck uninstall # make distclean

srcinst = util.BuildFactory()
srcinst.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
srcinst.addStep(steps.Mercurial(name="Clone repository",repourl='http://hg.cerbelle.net/hg/mkernel', mode='full', method='fresh', branchType='inrepo'))
srcinst.addStep(steps.SetPropertyFromCommand(name="Get package name", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\1~'", property="package", want_stdout=True, want_stderr=True))
srcinst.addStep(steps.SetPropertyFromCommand(name="Get package version", command="grep AC_INIT configure.ac | sed 's~.*\[\(.*\)\].*\[\(.*\)\].*\[\(.*\)\].*~\\2~'", property="version", want_stdout=True, want_stderr=True))
srcinst.addStep(steps.ShellCommand(name="Generate autotools files",command=["./bootstrap.sh"], want_stdout=True, want_stderr=True))
srcinst.addStep(steps.Configure(name='Default configuration', command=["./configure", util.Interpolate("--prefix=%(prop:builddir)s/inst"), "--disable-doxygen" ], want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
srcinst.addStep(steps.Compile(name="Default make install",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "install" ], want_stdout=True, want_stderr=True))
srcinst.addStep(steps.Test(name="Default make installcheck",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "installcheck" ], want_stdout=True, want_stderr=True, haltOnFailure=True, locks=[oomtest_lock.access('exclusive')]))
srcinst.addStep(steps.Compile(name="Default make uninstall",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "uninstall" ], want_stdout=True, want_stderr=True))
srcinst.addStep(steps.Compile(name="Default make distclean",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ], want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="SrcInst",
    workernames=["bb-dist"],
    factory=srcinst))
h3. dist-dox Pre-requisites: build-essential doxygen doxygen-latex Worker: bb-linux Steps:> # Download TGZ # ./configure --enable-latex-docs # make -C doc html/index.html # Upload HTML # make -C doc mkernel.pdf # Upload PDF # make distclean

distdox = util.BuildFactory()
distdox.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
distdox.addStep(steps.SetProperty(name="Compute basename", property="basename", value=util.Interpolate("%(prop:package)s-%(prop:version)s")))
distdox.addStep(steps.FileDownload(name="Download sources",mastersrc=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s.tar.gz"),workerdest=util.Interpolate("%(prop:basename)s.tar.gz")))
distdox.addStep(steps.ShellCommand(name='Extract sources from dist', command=['tar', 'xvzf', util.Interpolate("%(prop:basename)s.tar.gz")], want_stdout=True, want_stderr=True))
distdox.addStep(steps.MakeDirectory(name='Create a build folder', dir=util.Interpolate("build/%(prop:basename)s-build")))
distdox.addStep(steps.Configure(name='Doxygen configure (Out of tree)', command=[util.Interpolate("../%(prop:basename)s/configure"), '--prefix=/usr', '--enable-latex-docs' ], workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
distdox.addStep(steps.Compile(name="Doxygen make HTML (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "-C", "doc", "all" ], workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
distdox.addStep(steps.DirectoryUpload(name="Upload HTML refman", workersrc=util.Interpolate("%(prop:basename)s-build/doc/html"), masterdest=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-refman"), urlText="HTML Refman", url=util.Interpolate("https://packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-refman")))
distdox.addStep(steps.Compile(name="Doxygen make PDF (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "pdf" ], workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
distdox.addStep(steps.FileUpload(name="Upload PDF refman", workersrc=util.Interpolate("%(prop:basename)s-build/doc/latex/refman.pdf"), masterdest=util.Interpolate('/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-refman.pdf'),mode=0o755,urlText="PDF Refman",url=util.Interpolate("https://packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-refman.pdf")))
distdox.addStep(steps.Compile(name="Doxygen make clean (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "clean" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
distdox.addStep(steps.Compile(name="Doxygen make distclean (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="DistDox",
    workernames=["bb-linux"],
    factory=distdox))
h3. dist-lcov Pre-requisites: build-essential check pkg-config lcov Worker: bb-linux Steps: # Download TGZ # ./configure --disable-doxygen --enable-debug --enable-gcov # make all check lcov # Upload LCOV # make clean distclean

distlcov = util.BuildFactory()
distlcov.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
distlcov.addStep(steps.SetProperty(name="Compute basename", property="basename", value=util.Interpolate("%(prop:package)s-%(prop:version)s")))
distlcov.addStep(steps.FileDownload(name="Download sources",mastersrc=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s.tar.gz"),workerdest=util.Interpolate("%(prop:basename)s.tar.gz")))
distlcov.addStep(steps.ShellCommand(name='Extract sources from dist', command=['tar', 'xvzf', util.Interpolate("%(prop:basename)s.tar.gz")], want_stdout=True, want_stderr=True))
distlcov.addStep(steps.MakeDirectory(name='Create a build folder', dir=util.Interpolate("build/%(prop:basename)s-build")))
distlcov.addStep(steps.Configure(name='Default configure (Out of tree)', command=[util.Interpolate("../%(prop:basename)s/configure"), '--prefix=/usr', '--disable-doxygen', '--enable-gcov', '--enable-debug' ], workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
distlcov.addStep(steps.Compile(name="Default make all (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "all" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
distlcov.addStep(steps.Test(name="Default make check (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "check" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True, haltOnFailure=True, logfiles={"testsuite.log": "test/testsuite.log"}, locks=[oomtest_lock.access('exclusive')]))
distlcov.addStep(steps.Compile(name="Default make lcov (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "lcov" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
distlcov.addStep(steps.DirectoryUpload(name="LCov upload coverage tests report", workersrc=util.Interpolate("%(prop:basename)s-build/lcov"), masterdest=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-dbg-lcov"), urlText="Coverage report (Debug)", url=util.Interpolate("https://packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-dbg-lcov")))
distlcov.addStep(steps.Compile(name="Default make clean (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "clean" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
distlcov.addStep(steps.Compile(name="Default make distclean (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="DistLCov",
    workernames=["bb-linux"],
    factory=distlcov))
h3. dist-gprof Pre-requisites: build-essential check pkg-config Worker: bb-linux Steps: # Download TGZ # ./configure --disable-doxygen --enable-gprof # make all check clean distclean

distgprof = util.BuildFactory()
distgprof.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
distgprof.addStep(steps.SetProperty(name="Compute basename", property="basename", value=util.Interpolate("%(prop:package)s-%(prop:version)s")))
distgprof.addStep(steps.FileDownload(name="Download sources",mastersrc=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s.tar.gz"),workerdest=util.Interpolate("%(prop:basename)s.tar.gz")))
distgprof.addStep(steps.ShellCommand(name='Extract sources from dist', command=['tar', 'xvzf', util.Interpolate("%(prop:basename)s.tar.gz")], want_stdout=True, want_stderr=True))
distgprof.addStep(steps.MakeDirectory(name='Create a build folder', dir=util.Interpolate("build/%(prop:basename)s-build")))
distgprof.addStep(steps.Configure(name='Default configure (Out of tree)', command=[util.Interpolate("../%(prop:basename)s/configure"), '--prefix=/usr', '--disable-doxygen', '--enable-gprof' ], workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
distgprof.addStep(steps.Compile(name="Default make all (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "all" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
distgprof.addStep(steps.Test(name="Default make check (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "check" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True, haltOnFailure=True, locks=[oomtest_lock.access('exclusive')]))
distgprof.addStep(steps.ShellCommand(name='Run unforked check_oom', command=['./check_oom'], workdir=util.Interpolate("build/%(prop:basename)s-build/test", env={'CK_FORK': 'no'}), want_stdout=True, want_stderr=True, locks=[oomtest_lock.access('exclusive')]))
distgprof.addStep(steps.Test(name="Profiling ./check_oom (Out of tree)",command=["../libtool", "--mode=execute", "gprof", "./check_oom" ], workdir=util.Interpolate("build/%(prop:basename)s-build/test"), want_stdout=True, want_stderr=True, haltOnFailure=True))
distgprof.addStep(steps.ShellCommand(name='Run unforked check_test', command=['./check_test'], workdir=util.Interpolate("build/%(prop:basename)s-build/test", env={'CK_FORK': 'no'}), want_stdout=True, want_stderr=True, locks=[oomtest_lock.access('exclusive')]))
distgprof.addStep(steps.Test(name="Profiling ./check_test (Out of tree)",command=["../libtool", "--mode=execute", "gprof", "./check_test" ], workdir=util.Interpolate("build/%(prop:basename)s-build/test"), want_stdout=True, want_stderr=True, haltOnFailure=True))
distgprof.addStep(steps.ShellCommand(name='Run unforked check_libdebug', command=['./check_libdebug'], workdir=util.Interpolate("build/%(prop:basename)s-build/test", env={'CK_FORK': 'no'}), want_stdout=True, want_stderr=True, locks=[oomtest_lock.access('exclusive')]))
distgprof.addStep(steps.Test(name="Profiling ./check_libdebug (Out of tree)",command=["../libtool", "--mode=execute", "gprof", "./check_libdebug" ], workdir=util.Interpolate("build/%(prop:basename)s-build/test"), want_stdout=True, want_stderr=True, haltOnFailure=True))
distgprof.addStep(steps.ShellCommand(name='Run unforked check_modmgr', command=['./check_modmgr'], workdir=util.Interpolate("build/%(prop:basename)s-build/test", env={'CK_FORK': 'no'}), want_stdout=True, want_stderr=True, locks=[oomtest_lock.access('exclusive')]))
distgprof.addStep(steps.Test(name="Profiling ./check_modmgr (Out of tree)",command=["../libtool", "--mode=execute", "gprof", "./check_modmgr" ], workdir=util.Interpolate("build/%(prop:basename)s-build/test"), want_stdout=True, want_stderr=True, haltOnFailure=True))
distgprof.addStep(steps.ShellCommand(name='Run unforked check_svcmgr', command=['./check_svcmgr'], workdir=util.Interpolate("build/%(prop:basename)s-build/test", env={'CK_FORK': 'no'}), want_stdout=True, want_stderr=True, locks=[oomtest_lock.access('exclusive')]))
distgprof.addStep(steps.Test(name="Profiling ./check_svcmgr (Out of tree)",command=["../libtool", "--mode=execute", "gprof", "./check_svcmgr" ], workdir=util.Interpolate("build/%(prop:basename)s-build/test"), want_stdout=True, want_stderr=True, haltOnFailure=True))
distgprof.addStep(steps.Compile(name="Default make clean (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "clean" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
distgprof.addStep(steps.Compile(name="Default make distclean (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="DistGProf",
    workernames=["bb-linux"],
    factory=distgprof))
h3. dist-gdb Pre-requisites: build-essential check pkg-config Worker: bb-linux Steps: # Download TGZ # ./configure --disable-doxygen --enable-gdb # make all check clean distclean

distgdb = util.BuildFactory()
distgdb.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
distgdb.addStep(steps.SetProperty(name="Compute basename", property="basename", value=util.Interpolate("%(prop:package)s-%(prop:version)s")))
distgdb.addStep(steps.FileDownload(name="Download sources",mastersrc=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s.tar.gz"),workerdest=util.Interpolate("%(prop:basename)s.tar.gz")))
distgdb.addStep(steps.ShellCommand(name='Extract sources from dist', command=['tar', 'xvzf', util.Interpolate("%(prop:basename)s.tar.gz")], want_stdout=True, want_stderr=True))
distgdb.addStep(steps.MakeDirectory(name='Create a build folder', dir=util.Interpolate("build/%(prop:basename)s-build")))
distgdb.addStep(steps.Configure(name='Default configure (Out of tree)', command=[util.Interpolate("../%(prop:basename)s/configure"), '--prefix=/usr', '--disable-doxygen', '--enable-gdb' ], workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
distgdb.addStep(steps.Compile(name="Default make all (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "all" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
distgdb.addStep(steps.Test(name="Default make check (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "check" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True, haltOnFailure=True, logfiles={"testsuite.log": "test/testsuite.log"}, locks=[oomtest_lock.access('exclusive')]))
distgdb.addStep(steps.Compile(name="Default make clean (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "clean" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
distgdb.addStep(steps.Compile(name="Default make distclean (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="DistGdb",
    workernames=["bb-linux"],
    factory=distgdb))
h3. bin-linux Pre-requisites: build-essential check pkg-config doxygen doxygen-latex fuse3 Worker: bb-linux Steps: # Download TGZ # ./configure # make all check # make AppImage # Upload AppImage # make clean distclean

binlin = util.BuildFactory()
binlin.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
binlin.addStep(steps.SetProperty(name="Compute basename", property="basename", value=util.Interpolate("%(prop:package)s-%(prop:version)s")))
binlin.addStep(steps.FileDownload(name="Download sources",mastersrc=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s.tar.gz"),workerdest=util.Interpolate("%(prop:basename)s.tar.gz")))
binlin.addStep(steps.ShellCommand(name='Extract sources from dist', command=['tar', 'xvzf', util.Interpolate("%(prop:basename)s.tar.gz")], want_stdout=True, want_stderr=True))
binlin.addStep(steps.MakeDirectory(name='Create a build folder', dir=util.Interpolate("build/%(prop:basename)s-build")))
binlin.addStep(steps.Configure(name='Default configure (Out of tree)', command=[util.Interpolate("../%(prop:basename)s/configure"), '--prefix=/usr' ], workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
binlin.addStep(steps.Compile(name="Default make all (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "all" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
binlin.addStep(steps.Test(name="Default make check (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "check" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True, haltOnFailure=True, logfiles={"testsuite.log": "test/testsuite.log"}, locks=[oomtest_lock.access('exclusive')]))
binlin.addStep(steps.Compile(name="Default make install (Out of tree, DESTDIR)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), util.Interpolate('DESTDIR=%(prop:builddir)s/build/%(prop:basename)s-linux'), "install" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
binlin.addStep(steps.ShellCommand(name='Default create the archive', command=['tar', 'cvzf', util.Interpolate('%(prop:basename)s-linux.tar.gz'), util.Interpolate('%(prop:basename)s-linux')], want_stdout=True, want_stderr=True))
binlin.addStep(steps.FileUpload(name="Upload linux binary", workersrc=util.Interpolate('%(prop:basename)s-linux.tar.gz'), masterdest=util.Interpolate('/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-linux.tar.gz'),mode=0o755,urlText="Linux binaries",url=util.Interpolate("https://packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-linux.tar.gz")))
binlin.addStep(steps.ShellCommand(name="Get linuxdeploy for Appimages",command=["wget","https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage"], want_stdout=True, want_stderr=True))
binlin.addStep(steps.ShellCommand(name="Make linuxdeploy executable",command=["chmod","+x","linuxdeploy-x86_64.AppImage"], want_stdout=True, want_stderr=True))
binlin.addStep(steps.ShellCommand(name='Build AppImage', command=[ "./linuxdeploy-x86_64.AppImage","--appdir",util.Interpolate('%(prop:basename)s-linux'),"-e",util.Interpolate('%(prop:basename)s-linux/usr/bin/mkernel'),"-i",util.Interpolate("%(prop:basename)s/resources/mkernel.png"),"-d",util.Interpolate("%(prop:basename)s/resources/mkernel.desktop"),"--output","appimage" ], env={'LD_LIBRARY_PATH': util.Interpolate("%(prop:basename)s-linux/usr/lib/mkernel")}, want_stdout=True, want_stderr=True))
binlin.addStep(steps.FileUpload(name="Upload linux AppImage", workersrc="MKernel-x86_64.AppImage", masterdest=util.Interpolate('/var/www/packages.cerbelle.net/%(prop:package)s/MKernel-x86_64.AppImage'),mode=0o755,urlText="Linux AppImage",url=util.Interpolate("https://packages.cerbelle.net/%(prop:package)s/MKernel-x86_64.AppImage")))
binlin.addStep(steps.Compile(name="Default make distclean (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "distclean" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    project="mkernel",
    name="BinLinux",
    workernames=["bb-linux"],
    factory=binlin))
h3. bin-windows Pre-requisites: see [[Cross_compilation_on_Debian_for_Windows]] Worker: bb-mingw Steps: # Download TGZ # ./configure --host= # make all install # Create a zip # Upload ZIP # make windows # Upload installer.exe # make clean distclean

binwin = util.BuildFactory()
binwin.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
binwin.addStep(steps.SetProperty(name="Compute basename", property="basename", value=util.Interpolate("%(prop:package)s-%(prop:version)s")))
binwin.addStep(steps.FileDownload(name="Download sources",mastersrc=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s.tar.gz"),workerdest=util.Interpolate("%(prop:basename)s.tar.gz")))
binwin.addStep(steps.ShellCommand(name='Extract sources from dist', command=['tar', 'xvzf', util.Interpolate("%(prop:basename)s.tar.gz")], want_stdout=True, want_stderr=True))
binwin.addStep(steps.MakeDirectory(name='Create a build folder', dir=util.Interpolate("build/%(prop:basename)s-build")))
binwin.addStep(steps.Configure(name='Default configure (Out of tree)', command=[util.Interpolate("../%(prop:basename)s/configure"), '--prefix=/usr', '--host=x86_64-w64-mingw32', 'ac_cv_func_malloc_0_nonnull=yes','ac_cv_func_realloc_0_nonnull=yes' ], workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True, logfiles={"config.log": "config.log"}))
binwin.addStep(steps.Compile(name="Default make all (Out of tree)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), "all" ],workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
binwin.addStep(steps.Compile(name="Default make install (Out of tree, DESTDIR)",command=["make", util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), util.Interpolate('DESTDIR=%(prop:builddir)s/build/%(prop:basename)s-win64'), "install" ], workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
binwin.addStep(steps.ShellCommand(name='Create the archive', command=['zip', '-r', util.Interpolate('%(prop:basename)s-win64.zip'), util.Interpolate('%(prop:basename)s-win64')], want_stdout=True, want_stderr=True))
binwin.addStep(steps.FileUpload(name="Upload windows binary archive", workersrc=util.Interpolate('%(prop:basename)s-win64.zip'), masterdest=util.Interpolate('/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-win64.zip'),mode=0o755,urlText="Win64 binaries",url=util.Interpolate("https://packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-win64.zip")))
binwin.addStep(steps.Compile(name="Create installer", command=['make', util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), 'windows', util.Interpolate('DESTDIR=%(prop:builddir)s/build/%(prop:basename)s-win64')], workdir=util.Interpolate("build/%(prop:basename)s-build"), want_stdout=True, want_stderr=True))
binwin.addStep(steps.FileUpload(workersrc=util.Interpolate("%(prop:basename)s-build/mkernel-installer.exe"), masterdest=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s/mkernel-installer.exe"),mode=0o755,urlText="Windows installer",url=util.Interpolate("https://packages.cerbelle.net/%(prop:package)s/mkernel-installer.exe")))
c['builders'].append( util.BuilderConfig(
    name="BinWindows",
    workernames=["bb-mingw"],
    factory=binwin))
h3. bin-deb Pre-requisites: pbuilder Worker: bb-debian Steps: #

bindeb = util.BuildFactory()
bindeb.addStep(steps.RemoveDirectory(name='Cleanup environment',dir="build"))
bindeb.addStep(steps.SetProperty(name="Compute basename", property="basename", value=util.Interpolate("%(prop:package)s-%(prop:version)s")))
bindeb.addStep(steps.FileDownload(name="Download sources", mastersrc=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s.tar.gz"),workerdest=util.Interpolate("%(prop:basename)s.tar.gz")))
bindeb.addStep(steps.ShellCommand(name='Extract sources from dist', command=['tar', 'xvzf', util.Interpolate("%(prop:basename)s.tar.gz")], want_stdout=True, want_stderr=True))
bindeb.addStep(steps.ShellCommand(name='Rename src dist file', command=['mv', util.Interpolate("%(prop:basename)s.tar.gz"), util.Interpolate("%(prop:package)s_%(prop:version)s.orig.tar.gz")], want_stdout=True, want_stderr=True))
bindeb.addStep(steps.ShellCommand(name='Add Build ID to revision.h', command=['sed', '-i', util.Interpolate("s/$/\\n#define BBID \\\"%(prop:buildnumber)s\\\"\\n/"), util.Interpolate("%(prop:basename)s/src/revision.h")], want_stdout=True, want_stderr=True))
bindeb.addStep(steps.ShellCommand(name='Commit sources changes', env={'EDITOR':'/bin/true'}, command=['dpkg-source', '--commit', './', 'build'], workdir=util.Interpolate("build/%(prop:basename)s"), want_stdout=True, want_stderr=True))
bindeb.addStep(steps.DebPbuilder(architecture="amd64",distribution="bookworm",workdir=util.Interpolate("build/%(prop:basename)s"), want_stdout=True, want_stderr=True))
bindeb.addStep(steps.ShellCommand(name='Upload to cerbelle repo', command=['dput', util.Interpolate("%(prop:basename)s/%(prop:package)s_%(prop:version)s-1.1_amd64.changes")], want_stdout=True, want_stderr=True))
c['builders'].append( util.BuilderConfig(
    name="BinDebian",
    workernames=["bb-deb"],
    factory=bindeb))
h3. bin-macos Pre-requisites: see [[CrossCompilationMacOS]] Worker: bb-macos Steps: #

macbin = util.BuildFactory()
macbin.addStep(steps.SetProperty(name="Compute basename", property="basename", value=util.Interpolate("%(prop:package)s-%(prop:version)s")))
macbin.addStep(steps.ShellCommand(name='Cleanup environment', command=['rm', '-Rf', util.Interpolate('%(prop:builddir)s/build')]))
macbin.addStep(steps.FileDownload(name="Download sources",mastersrc=util.Interpolate("/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s.tar.gz"),workerdest=util.Interpolate("%(prop:basename)s.tar.gz")))
macbin.addStep(steps.ShellCommand(name='Extract sources from dist', command=['tar', 'xvzf', util.Interpolate("%(prop:basename)s.tar.gz")]))
macbin.addStep(steps.ShellCommand(name='Create a build folder', command=['mkdir', util.Interpolate("%(prop:basename)s-build")]))
macbin.addStep(steps.ShellCommand(name='Out of tree default configuration', command=[util.Interpolate("../%(prop:basename)s/configure"), '--prefix=/usr' ], workdir=util.Interpolate("build/%(prop:basename)s-build")))
macbin.addStep(steps.Compile(name="Compile and Install", command=['make', util.Interpolate("CFLAGS=-DBBID=\\\"%(prop:buildnumber)s\\\""), 'clean', 'all', 'install', util.Interpolate('CFLAGS=-I%(prop:builddir)s/build/%(prop:basename)s-build/intl'), util.Interpolate('DESTDIR=%(prop:builddir)s/build/%(prop:basename)s-macos')], workdir=util.Interpolate("build/%(prop:basename)s-build")))
macbin.addStep(steps.ShellCommand(name='Create the archive', command=['tar', 'cvzf', util.Interpolate('%(prop:basename)s-macos.tar.gz'), util.Interpolate('%(prop:basename)s-macos')]))
macbin.addStep(steps.FileUpload(workersrc=util.Interpolate('%(prop:basename)s-macos.tar.gz'), masterdest=util.Interpolate('/var/www/packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-macos.tar.gz'),mode=0o755,urlText="MacOS binaries",url=util.Interpolate("https://packages.cerbelle.net/%(prop:package)s/%(prop:basename)s-macos.tar.gz")))
c['builders'].append( util.BuilderConfig(
    name="BinMacOS",
    workernames=["macos-monterey"],
    factory=macbin))
h2. Schedulers h3. ForceSrc To force from repository builders

mk_forcesrc=schedulers.ForceScheduler(
    name="ForceSrc",
    buttonName="Force src",
    label="Force parameters",
    codebases=[util.CodebaseParameter(
        "",
        label="Main repository",
        branch=util.FixedParameter(name="branch", default="default"),
        revision=util.FixedParameter(name="revision", default=""),
        repository=util.FixedParameter(name="repository", default=""),
        project=util.FixedParameter(name="project", default="mkernel"),
    ),],
    reason=util.StringParameter(name="reason",
        label="Reason:", required=True, size=80),
    username=util.UserNameParameter(label="Your name (and email):",
        size=80),
    builderNames=["Src", "SrcCppcheck", "SrcDist", "SrcInst", "SrcDbg", "SrcGprof", "SrcDbgGcov", "SrcGdb", "SrcGcov" ],
)
c['schedulers'].append(mk_forcesrc)
h3. ForceBin Force package build from source

mk_forcebin=schedulers.ForceScheduler(
    name="ForceBin",
    buttonName="Force bin",
    label="Force parameters",
    codebases=[util.CodebaseParameter(
        "",
        label="Main repository",
        branch=util.FixedParameter(name="branch", default="default"),
        revision=util.FixedParameter(name="revision", default=""),
        repository=util.FixedParameter(name="repository", default=""),
        project=util.FixedParameter(name="project", default="mkernel"),
    ),],
    reason=util.StringParameter(name="reason",
        label="Reason:", required=True, size=80),
    username=util.UserNameParameter(label="Your name (and email):",
        size=80),
    properties=[
        util.StringParameter(name="package", label="Package name.", default="mkernel"),
        util.ChoiceStringParameter(name="version", label="Source version.", choices=["0.0.1","0.0.2"],default="0.0.1"),
    ],
    builderNames=["BinLinux","BinDebian","BinWindows", "DistDox", "DistLCov", "DistGProf", "DistGdb" ]
)
c['schedulers'].append(mk_forcebin)
h3. Try For developers to submit a try

mk_try = schedulers.Try_Jobdir(
    name="Try",
    builderNames=["Src", "SrcCppcheck", "SrcDist", "SrcInst", "SrcDbg", "SrcGprof", "SrcDbgGcov", "SrcGdb", "SrcGcov" ],
    jobdir="/var/lib/buildbot/jobdir")
c['schedulers'].append(mk_try)
h3. Auto build from repo commit

mk_oncommit=schedulers.SingleBranchScheduler(
    name="On commit",
    change_filter=util.ChangeFilter(branch='default'),
    treeStableTimer=None,
    builderNames=["Src", "SrcCppcheck", "SrcDist", "SrcInst", "SrcDbg", "SrcGprof", "SrcDbgGcov", "SrcGdb", "SrcGcov" ],
    )
c['schedulers'].append(mk_oncommit)
h3. Triggerable Trigger packages builds after dist build

mkernel_triggerable=schedulers.Triggerable(
    name="MKernel_Triggerable",
    builderNames=[ "BinLinux", "BinDebian", "BinWindows", "BinMacOS", "DistDox", "DistLCov", "DistGProf", "DistGdb" ]
)
c['schedulers'].append(mkernel_triggerable)