Opened 4 months ago

Closed 3 months ago

#73027 closed defect (fixed)

py-llvmlite requires clang-15 which doesn't build on macOS 26

Reported by: jaredwsmith (Jared Smith) Owned by: stromnov (Andrey Stromnov)
Priority: Normal Milestone:
Component: ports Version: 2.11.5
Keywords: tahoe Cc: Dave-Allured (Dave Allured), traut21
Port: py-llvmlite

Description

clang-15 is not building properly on macOS 26. The port command acknowledges the frequent rate of failure with this port, so I'm not sure if this is already a known issue (though I've not seen it elsewhere to this point). In any event, this is preventing Python dependencies from building for qgis3-ltr. This appears to be the relevant error:

:info:build ld: 32-bit pointer in 64-bit arch: r_address=0x10, r_type=0, r_extern=1, r_pcrel=0, r_length=2 in 'CMakeFiles/clang_rt.tsan_osx_dynamic.dir/tsan_rtl_aarch64.S.o'
:info:build clang++: error: linker command failed with exit code 1 (use -v to see invocation)

Build log attached. Note that I am building it with +analyzer but I have tried without this modifier as well.

Attachments (2)

main.log (6.2 MB) - added by jaredwsmith (Jared Smith) 4 months ago.
py-llvmlite.diff (3.8 KB) - added by stromnov (Andrey Stromnov) 4 months ago.
py-llvmlite 0.45.0

Change History (14)

Changed 4 months ago by jaredwsmith (Jared Smith)

Attachment: main.log added

comment:1 Changed 4 months ago by Dave-Allured (Dave Allured)

Cc: Dave-Allured added

comment:2 Changed 4 months ago by ryandesign (Ryan Carsten Schmidt)

Keywords: tahoe added
Owner: set to stromnov
Port: py-llvmlite added; clang-15 removed
Status: newassigned
Summary: clang-15 @15.0.7_4 does not build on macOS 26 with Xcode 26.0py-llvmlite requires clang-15 which doesn't build on macOS 26

clang 12 thru 16 were intentionally marked as not supporting macOS 26, presumably after observing a build failure like this, and it's old, so let's focus on why MacPorts is trying to install it and see if it could use a newer clang instead, one which does build on macOS 26. And the reason is:

% port echo rdepof:qgis3-ltr and depends::clang-15
py313-llvmlite

Andrey, could llvmlite use a newer clang?

comment:3 Changed 4 months ago by stromnov (Andrey Stromnov)

In fact, the latest version of llvmlite, 0.45.0, requires LLVM 20.x.x, while the older version, 0.44.0, only supported LLVM versions 15.x.x and 16.x.x (https://github.com/numba/llvmlite/blob/v0.45.0/README.rst#L67-L68).

However, there are other points: the latest llvmlite version requires Python 3.10 or later, and the build system has been changed from Makefile to CMake, which makes it more difficult to support the old version for Python 3.9 simultaneously with the new ones for Python 3.10.

Changed 4 months ago by stromnov (Andrey Stromnov)

Attachment: py-llvmlite.diff added

py-llvmlite 0.45.0

comment:4 Changed 4 months ago by reneeotten (Renee Otten)

Python 3.9 will be EOL next month, so provided that there are no dependents that subport can be dropped. If there are dependents one would need to go down the dependency tree and remove the affected py39 subports so that nothing is left broken.

The highly preferred way of contributing is to open a PR on GitHub if you’re able/willing to do so.

comment:5 Changed 4 months ago by ryandesign (Ryan Carsten Schmidt)

The cmake portgroup sets a lot of good defaults. If you can't use the portgroup (which could be the case here) you may have to study the portgroup and apply some of what it does to the portfile manually. For example, you'll want to verify that the compiler MacPorts has chosen is being used by the build and that the usual MacPorts flags are being applied. And you'll want to depend on path:bin/cmake:cmake like the portgroup does rather than port:cmake.

comment:6 Changed 4 months ago by ryandesign (Ryan Carsten Schmidt)

These ports would be affected by the removal of py39-llvmlite:

  • py39-numba
  • py39-magenta
  • py39-quantecon
  • py39-sparse
  • py39-librosa
  • py39-note-seq
  • py39-resampy
  • py39-segregation
  • py39-umap-learn
  • py-magenta
  • py39-giddy
  • py-sparse
  • py39-pysal
  • py-umap-learn
  • py39-splot

comment:7 Changed 3 months ago by traut21

https://trac.macports.org/ticket/70883 was closed - but unfortunately I don't recognize any solution here how to build clang-15

Version 0, edited 3 months ago by traut21 (next)

comment:8 Changed 3 months ago by ryandesign (Ryan Carsten Schmidt)

Cc: traut21 added

I think the solution will probably be for the maintainer of the py-llvmlite port to update it to a newer version that uses a newer llvm.

comment:9 Changed 3 months ago by ryandesign (Ryan Carsten Schmidt)

That is, that will probably be the solution for installing py-llvmlite on Tahoe. There might not be a solution for installing clang-15 on Tahoe unless someone invests effort in identifying the Tahoe fixes that went into newer clangs and backporting them. But using a newer clang that already has those fixes seems like it would be easier.

comment:10 Changed 3 months ago by traut21

maybe would, yes - but for now neither the current nor any later versions do work on MacOS. So all other projects, relying on it (here: qgis) will fail, too.

comment:11 Changed 3 months ago by ryandesign (Ryan Carsten Schmidt)

Yes, that is correct. That's why this ticket is still open.

comment:12 Changed 3 months ago by i0ntempest <i0ntempest@…>

Resolution: fixed
Status: assignedclosed

In 1f7cb321d345cd4f75476513674e751d3dab13ee/macports-ports (master):

py-llvmlite: update to 0.45.1

Move workarounds no longer needed into python 39 block
Closes: #73027

Note: See TracTickets for help on using tickets.