This page collects build and CI details that are mainly relevant for maintainers and contributors.
The generated cpanfile artifacts describe the expected CPAN dependencies before the image build starts. To document what actually ended up in an image, the build now exports an inventory of installed Perl modules after the CPAN installation stage finished.
For every platform built in GitHub Actions, the cpan_build job builds a dedicated export stage and uploads an artifact named like cpan-inventory-bookworm-arm64. It contains:
core/core-modules.tsv|jsonfor the modules installed from the FHEMcpanfile3rdparty/3rdparty-modules.tsv|jsonfor the modules installed from the3rdParty/cpanfileall/all-modules.tsv|jsonfor the combined installed module setverify/core|3rdparty|all/*for the requirement verification reportslogs/core-install.logandlogs/3rdparty-install.logfor the capturedcpm installoutput
The inventory is generated directly in build-cpan after the cpm install steps and exported through a separate cpan-inventory stage. This keeps the inventory out of the regular runtime images and still makes it possible to compare the dynamic cpanfile input with the actually installed module set even when the CPAN build layer was restored from cache.
For verification, build-cpan now reads the generated cpanfiles directly inside the container, validates them with require against the real Perl environment, and correlates unresolved modules with the captured install logs. The workflow host only evaluates the exported verification reports. The cpan_build job only fails for actionable verification results such as probable install failures or real version mismatches.
Some CPAN requirements are removed for specific image and platform combinations before cpm install runs. These removals are also listed in the CPAN build report comment on pull requests.
| Image family | Architecture | Excluded from core |
Excluded from 3rdparty |
|---|---|---|---|
*-bookworm, *-bullseye |
linux/amd64 |
none | none |
*-bullseye |
linux/386 |
Math::Pari, Crypt::Random, HiPi |
none |
*-bookworm |
linux/386 |
Math::Pari, Crypt::Random, HiPi |
SNMP |
*-bookworm, *-bullseye |
linux/arm/v7 |
Device::Firmata::Constants, Math::Pari, Crypt::Random, HiPi |
Device::Firmata::Constants, SNMP |
*-bookworm |
linux/arm64 |
Device::Firmata::Constants, HiPi |
Device::Firmata::Constants, SNMP |
*-bullseye |
linux/arm64 |
Device::Firmata::Constants, HiPi |
Device::Firmata::Constants |
Device::Firmata::Constants is only kept on linux/amd64 and linux/386. Math::Pari and Crypt::Random are removed on linux/386 and linux/arm/v7 due runtime instability in Math::Pari on those platforms. HiPi is only kept on linux/amd64, because its dependency chain currently builds reliably only there. SNMP is removed where the CPAN module is not usable with the system Net-SNMP library version used by the image.