Hi all,
As you may know (or not), I am currently working on
delivering a functional CMake build:
- It will run in parallel with the current build process
for as long as needed; the existing build and packaging tools
remain fully usable and untouched.
- It should help us automate distribution packaging
and improve/optimize the packaging workflows over time, and also
incorporate some of Terabithia's build improvements (futur).
Unfortunately, parts of the current build process are
now impacted by changes in upstream package availability and
major changes in linked libraries. Since I do not want to
build a migration path on top of an obsolete baseline, I
(we) first need to resolve the remaining package-related build
issues. This also aligns with the work already done
by Roland (Debian) that is not yet fully merged into main, but is
already published in the Debian distribution.
To ensure a working CMake build, I need a clear and comprehensive overview of the current (legacy) build, so we can later compare both build systems reliably.
For that, I created a CI tool that builds using the existing flow (configure, make, make install) - and it also works with the new CMake build - and collects build and install status, along with additional detailed information to support build comparisons. This is a high-level summary of some of the information the tool provides:
OS coverage and build variant
lanes (see below for details) and package dependencies info
- Scope: 177 lane jobs
- Outcome: 165 passed, 12 failed
CI environment note: this CI pipeline runs on GitHub
infrastructure only (GitHub-hosted runners), using the
available execution backends there (Docker containers, host-based
jobs, and VMs where applicable). It does not assume any
external or self-hosted build environment. (This tool is not
currently available on the upstream repo, but it is already
available on my branch (see link below) and will be added upstream
when ready? and more reliable.)
This run also includes preliminary work to capture per-lane
package dependencies, to establish a baseline for the
future CMake build. Note: this is not produced by CMake (but
it can); it is generated using the standard legacy build flow
(configure, make, make install). Bugs may still exist in this
baseline/dependency extraction work.
Some next fixes (PRs) are already
prepared but still need review:
- rrd: detect argv const-ABI (1.9+/1.8 backports) and drop RRDtool
<1.2 gates (PR #80)
- snmpcollect: switch MD5 to SHA1 when MD5 is unavailable (PR #75)