Skip to content

fix(erlang): build and ship common_test and dialyzer subpackages#17439

Draft
christopherco wants to merge 1 commit into
4.0from
chrco/fix-erlang-stage2
Draft

fix(erlang): build and ship common_test and dialyzer subpackages#17439
christopherco wants to merge 1 commit into
4.0from
chrco/fix-erlang-stage2

Conversation

@christopherco
Copy link
Copy Markdown
Collaborator

@christopherco christopherco commented May 25, 2026

The upstream Fedora spec gates erlang-common_test and erlang-dialyzer behind %if %{__with_wxwidgets}, and also passes
--without-common_test / --without-dialyzer to ./configure when wxwidgets is off. AZL disables wxwidgets (no wxGTK in a headless cloud distro), so neither subpackage was built — yet erlang-rebar3 requires both, which made buildroot resolution fail for the entire erlang/elixir stack (~20 downstream consumers).

Neither library actually links against wxGTK: each has only one optional GUI entry point (dialyzer:gui/0, ct GUI launcher) that delegates to a single wx-using module, and Erlang lazy-loads modules so the wx code path is never reached in CLI mode. Confirmed in upstream OTP-26.2.5.17 sources: dialyzer.app.src and common_test.app.src list only kernel/stdlib/compiler in applications (the enforced load list); wx appears only in the advisory runtime_dependencies metadata.

Overlay does, in order:

  1. un-gate the %package/%files blocks for common_test and dialyzer
  2. drop --without-common_test / --without-dialyzer from %configure (replace with no-op tab+backslash so the surrounding \ continuation stays intact)
  3. strip Requires for the wx-using subpackages we don't ship (debugger/observer/wx) from common_test, dialyzer, and src
  4. fix the wxwidgets-off %install cleanup loop so it no longer deletes ct_run/dialyzer, and rename bindir/typer to erlang-typer to avoid the python3-typer-cli conflict (rhbz#2359567), matching the wxwidgets-on branch

Fixes: AB#20325

The upstream Fedora spec gates erlang-common_test and erlang-dialyzer
behind `%if %{__with_wxwidgets}`, and also passes
`--without-common_test` / `--without-dialyzer` to ./configure when
wxwidgets is off. AZL disables wxwidgets (no wxGTK in a headless cloud
distro), so neither subpackage was built — yet erlang-rebar3 requires
both, which made buildroot resolution fail for the entire erlang/elixir
stack (~20 downstream consumers).

Neither library actually links against wxGTK: each has only one
optional GUI entry point (`dialyzer:gui/0`, `ct` GUI launcher) that
delegates to a single wx-using module, and Erlang lazy-loads modules so
the wx code path is never reached in CLI mode. Confirmed in upstream
OTP-26.2.5.17 sources: dialyzer.app.src and common_test.app.src list
only kernel/stdlib/compiler in `applications` (the enforced load
list); wx appears only in the advisory `runtime_dependencies` metadata.

Overlay does, in order:
  1. un-gate the %package/%files blocks for common_test and dialyzer
  2. drop --without-common_test / --without-dialyzer from %configure
     (replace with no-op tab+backslash so the surrounding \\<newline>
     continuation stays intact)
  3. strip Requires for the wx-using subpackages we don't ship
     (debugger/observer/wx) from common_test, dialyzer, and src
  4. fix the wxwidgets-off %install cleanup loop so it no longer
     deletes ct_run/dialyzer, and rename bindir/typer to erlang-typer
     to avoid the python3-typer-cli conflict (rhbz#2359567), matching
     the wxwidgets-on branch
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.

1 participant