Toolchain Build System using Conan#
Maintaining a multi-platform, 3rdParty toolchain ecosystem consistent for all developers offers some significant challenges.
The goal of this project is to provide a comprehensive, reliable system to build a toolchain that works by design. Configured, built, and installed consistently. Rather than trying to manipulate tools to work in configurations they were not originally built for.
To achieve this we leverage the Conan C/C++ package manager to produce repeatable builds using consistent host configurations. Delivering a complete toolchain in the form of OS System packages for Linux.
To put this all together, I've developed these integration pieces:
RPM and .deb package generation using Conan. conan-system-packaging
provides rpm_deployer and deb_deployer
custom deployers
Custom GitHub Actions Reusable Workflows to provide multi-platform build/test/release workflows for individual Conan builds, and for complete toolchain builds.
Example Usage of the conan-github-workflows for practical scenarios.
Starting with the gcc/binutils/make/cmake toolchain installed into our
conan-build-container.
Documented in Demo - MultiPhase Toolchain Build
Includes the Container image builds used in our conan-github-workflows.
These images provide basic conan functionality and GCC toolchain
from OS Vendor provided packages:
conan-base-${os_name}:${arch}-latestconan-bootstrap-${os_name}:${arch}-latest
And these add our own Conan GCC Toolchain and other useful toolchain construction tools onto the base image.
conan-build-${os_name}:${arch}-latestconan-docker-build-${os_name}:${arch}-latest
OS/Platform support includes:
- AlmaLinux 9.6 (x86_64, aarch64)
- Ubuntu 24.04LTS (x86_64, aarch64)
By delivering OS packages, we are able to:
- Provide the simplest, easiest tool installation for Developers. Especially for custom Container images
- Link to any vendor-provided OS dependencies so that
yum install -y <tool>orapt-get install -y <tool>"just works" - Register our tool component packages with Software Composition Analysis (SCA) tools like Black Duck SCA or Dependency-Track
- Provide an end-to-end auditable software supply chain
If you are using your own compiler/interpreter versions, or special ABI configurations for your products, then you will likely want your toolchains to be built using configurations consistent and compatible with your products.
For more in-depth discussion of the issues in maintaining an Enterprise Engineering Development toolchain, and the benefits of this solution, read on..
License and Copyright#
Copyright © 2025 David L. Armstrong