Skip to content

ci(ubuntu): install binutils-dev so the BFD path is exercised - #488

Merged
mrjimenez merged 1 commit into
amule-project:masterfrom
got3nks:ci-install-binutils-dev
Apr 27, 2026
Merged

ci(ubuntu): install binutils-dev so the BFD path is exercised#488
mrjimenez merged 1 commit into
amule-project:masterfrom
got3nks:ci-install-binutils-dev

Conversation

@got3nks

@got3nks got3nks commented Apr 27, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #487 (already merged as ae5b70b). Suggested by @danim7 in #487 (comment).

Why

cmake/bfd.cmake has a check_include_file (bfd.h HAVE_BFD) gate. When bfd.h isn't findable, the entire foreach probe loop below is dead code. None of the CI jobs install binutils-dev (or its mingw/Homebrew equivalents), so the buggy block fixed in #487 was never exercised in CI — which is exactly why three independent bugs in it survived for years.

What

Adds binutils-dev to cmake_ubuntu_deps (one line). The Ubuntu job will then have bfd.h findable, the foreach probe loop will run, and any future regression in cmake/bfd.cmake will fail the build.

Why Ubuntu only

cmake/bfd.cmake is platform-agnostic — there's no per-platform branching in it. Coverage on one platform is sufficient to catch regressions; adding the dep to mingw-w64 and macOS jobs would just bloat their install steps without adding meaningful coverage.

Test plan

cmake/bfd.cmake's foreach probe loop only runs when bfd.h is
findable on the build host, i.e. when binutils-dev is installed.
None of the CI jobs install it today, which is why the bugs
fixed in amule-project#487 (PR ae5b70b) survived for years -- the entire
buggy block was dead code under CI.

Adding binutils-dev to the Ubuntu CI dep list ensures the BFD
probe loop actually runs, so any future regression in bfd.cmake
fails the build. The mingw-w64 and macOS jobs are intentionally
left alone: cmake/bfd.cmake is platform-agnostic, so coverage on
one platform is enough and we avoid bloating the other two
jobs' install steps.

Suggested by @danim7 as a follow-up to amule-project#487.
@mrjimenez
mrjimenez merged commit 71e58be into amule-project:master Apr 27, 2026
9 checks passed
@got3nks
got3nks deleted the ci-install-binutils-dev branch May 3, 2026 15:19
got3nks added a commit to got3nks/amule that referenced this pull request Jul 15, 2026
…sing-override (amule-project#488) (amule-project#493)

* style(amule): mark CamuleApp wxApp overrides with `override` (amule-project#488)

CamuleApp already marks some of its wxApp overrides `override` (e.g.
EnableIP2Country, GetIP2Country), so newer clang flags the ones that don't via
-Winconsistent-missing-override. That fires 800+ times across the build because
amule.h is included in almost every translation unit (issue amule-project#488, and it grows
louder on the fussier clang shipping in Ubuntu 26.10).

Mark the five remaining wxApp overrides -- OnInit, OnExit, OnFatalException,
OnAssertFailure, OnUnhandledException -- with `override` (dropping the now
redundant `virtual`), matching the class's existing style. `override` also makes
the compiler verify they really do override a base method. Reproduced locally
(830 warnings) and confirmed 0 after the change, clean build.

Scope is deliberately just these compiler warnings; the broader tree-wide
modernize-use-override sweep + enabling the clang-tidy check is left for a
separate one-shot PR.

Refs amule-project#488

* build: promote -Winconsistent-missing-override to an error on Clang (amule-project#488)

Now that amule.h no longer trips it, guard against the whole class of amule-project#488
warning recurring: when a class marks some virtual overrides `override` but not
others, Clang emits -Winconsistent-missing-override once per translation unit, so
one header can produce hundreds of warnings (amule.h was 800+). Promote it to an
error, mirroring the existing -Werror=deprecated* gate.

Clang-only via a generator expression: GCC has no "some marked, some not"
variant (only the whole-tree -Wsuggest-override), so an unconditional -Werror=
would break the GCC/Ubuntu build. The Clang-based CI jobs (macOS, mingw-w64) are
enough to catch a regression. The warning is on by default under Clang, so only
the promotion to error is added. Verified: build stays green, and un-marking a
single override makes it fail as intended.

Refs amule-project#488
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants