Skip to content

[ENHANCEMENT] Publish musllinux wheels (Alpine / musl libc) #1877

Description

@Kelketek

Bug Description

Summary: Compilation fails with "cc: error: unrecognized command-line option '--rtlib=compiler-rt'" on Alpine in an arm64 environment.

Expected Behavior:
Autobahn installs as normal, compiling if it must.

Actual Behavior:
Compilation is induced upon install rather than using a prebuilt wheel, and fails.

Reproduction Steps

On an Arm64 system with docker, create a directory, change to it, and put in it this Dockerfile:

FROM alpine
RUN apk add uv gcc
RUN uv init /app
WORKDIR /app
RUN uv add autobahn

Then run docker build .

Environment

  • Package: autobahn-python
  • Version: 26.6.1
  • Python Version: CPython 3.14.4
  • Operating System: Raspberry Pi OS based on Debian GNU/Linux 12 (bookworm)
  • Framework: Happens even installing alone, but getting it as a transitive dependency of Django channels/Daphne

Additional Context

Error Messages:

  × Failed to build `autobahn==26.6.1`
  ├─▶ The build backend returned an error
  ╰─▶ Call to `hatchling.build.build_wheel` failed (exit status: 1)
      [stdout]
      ======================================================================
      Capturing FlatBuffers git version from deps/flatbuffers
      ======================================================================
        -> deps/flatbuffers not found or not a git repo
        -> Using existing version in _git_version.py
      Building for Python with extension suffix:
      .cpython-314-aarch64-linux-musl.so
      Building CFFI module:
      /root/.cache/uv/sdists-v9/pypi/autobahn/26.6.1/ke1VdRcg1EUd1NkdWNLjb/src/src/autobahn/nvx/_utf8validator.py
      generating ./_nvx_utf8validator.c
      the current directory is
      '/root/.cache/uv/sdists-v9/pypi/autobahn/26.6.1/ke1VdRcg1EUd1NkdWNLjb/src/src/autobahn/nvx'
      Building CFFI module:
      /root/.cache/uv/sdists-v9/pypi/autobahn/26.6.1/ke1VdRcg1EUd1NkdWNLjb/src/src/autobahn/nvx/_xormasker.py
      generating ./_nvx_xormasker.c
      the current directory is
      '/root/.cache/uv/sdists-v9/pypi/autobahn/26.6.1/ke1VdRcg1EUd1NkdWNLjb/src/src/autobahn/nvx'
      [stderr]
      cc: error: unrecognized command-line option '--rtlib=compiler-rt'
      warning: build_ext: building extension "_nvx_utf8validator" failed:
      command '/usr/bin/cc' failed with exit code 1
      cc: error: unrecognized command-line option '--rtlib=compiler-rt'
      warning: build_ext: building extension "_nvx_xormasker" failed: command
      '/usr/bin/cc' failed with exit code 1
      Traceback (most recent call last):
        File "<string>", line 11, in <module>
          wheel_filename =
      backend.build_wheel("/root/.cache/uv/builds-v0/.tmp8L16Vi", {}, None)
        File
      "/root/.cache/uv/builds-v0/.tmpblVrse/lib/python3.14/site-packages/hatchling/build.py",
      line 58, in build_wheel
          return os.path.basename(next(builder.build(directory=wheel_directory,
      versions=["standard"])))
      
      ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File
      "/root/.cache/uv/builds-v0/.tmpblVrse/lib/python3.14/site-packages/hatchling/builders/plugin/interface.py",
      line 149, in build
          build_hook.initialize(version, build_data)
          ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
        File
      "/root/.cache/uv/sdists-v9/pypi/autobahn/26.6.1/ke1VdRcg1EUd1NkdWNLjb/src/hatch_build.py",
      line 73, in initialize
          raise RuntimeError(
          ...<5 lines>...
          )
      RuntimeError: NVX CFFI extension was requested (AUTOBAHN_USE_NVX) but
      was not built - refusing to emit a pure-Python (py3-none-any) autobahn
      wheel. See the build log above for the underlying compile failure. Set
      AUTOBAHN_USE_NVX=0 to intentionally build a pure-Python wheel.
      hint: This usually indicates a problem with the package or the build
      environment.
  help: `autobahn` (v26.6.1) was included because `artconomy` (v3.2.0) depends
        on `channels[daphne]` (v4.3.2) which depends on `daphne` (v4.2.2)
        which depends on `autobahn`

Checklist

  • I have searched existing issues to avoid duplicates
  • I have provided a minimal reproducible example
  • I have included version information
  • I have included error messages/logs

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions