mirror of
https://github.com/ZoneMinder/zoneminder.git
synced 2026-10-02 15:35:09 -04:00
GCC emits a whole class of warnings only from its optimizer passes, so they cannot appear in the -O0 Debug trees used for local development: -Wclobbered, -Wmaybe-uninitialized, -Wstringop-truncation, -Wstringop-overflow, -Warray-bounds, -Wdangling-pointer, -Wuse-after-free. Nothing in CI closed that gap. The deb/rpm workflows build Release and did print these warnings, but never set ENABLE_WERROR, so they scrolled past as log noise. The only -Werror build is .cirrus.yml, which is FreeBSD/clang, and clang does not implement -Wclobbered at all. The three conditions therefore intersected only in the downstream Docker build, which is where such warnings first broke a build. Third-party diagnostics are demoted to warnings so they cannot fail the build: system mosquittopp.h carries a #warning, and gsoap's wsseapi.c casts between function and object pointers. Warnings in ZoneMinder's own sources stay hard errors. Pinned to ubuntu-24.04 rather than ubuntu-latest because -Wclobbered is sensitive to compiler version and inlining, so a GCC bump should be a deliberate change rather than a surprise CI failure. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>