Closed gmarkall closed 4 months ago
Just noticed that this doesn't bump the llvmdev version in the conda recipe
It should replace the conda-recipes/llvmlite
with conda-recipes/llvmlite_llvm15
Ah I thought we might just delete the LLVM 14 version separately as I didn't know if it would be a problem for the build farm setup if the recipe names changed.
Before this can be merged, we also need to synchronize Numba to use opaque type
@sklam many thanks for the review and pointers!
Just noticed that this doesn't bump the llvmdev version in the conda recipe
I don't think we want to do this. This PR doesn't have anything to do with llvmdev builds - the llvmdev build was merged in #1036.
It should replace the
conda-recipes/llvmlite
withconda-recipes/llvmlite_llvm15
This is now done (and I've also done the same with the llvmdev recipe, since the llvmdev 14 recipe is no longer needed).
Before this can be merged, we also need to synchronize Numba to use opaque type
I don't think we want to do this. I thought that the plan was:
This is because as I understand it, the typed / opaque pointer support in LLVM versions is:
We still unconditionally disable opaque pointers in llvmlite with this PR, so Numba should be unaffected for now, and we are in a position to be able to switch to Opaque Pointers smoothly on an LLVM version (15) that supports both, without having to worry about experimental-related issues (Opaque Pointers on 14) or bitrot (Typed Pointers on 16).
Just to add a little to my last comment - I don't think we should be testing Numba with LLVM 16 yet, the CI for LLVM 16 here is only for llvmlite development to ensure future compatibility, with no expectation that Numba works with that configuration yet.
xref: llvmlite Opaque Pointer support is in #1064.
CI is good. I've build this PR on the buildfarm llvmlite dag and tested the artifacts manually against numba main.
there's no way to inject an environment variable to set LLVM_CONFIG from the config file
update PATH before starting your build:
PATH=/usr/lib/llvm-
there's no way to inject an environment variable to set LLVM_CONFIG from the config file
update PATH before starting your build:
PATH=/usr/lib/llvm-/bin:$PATH llvm-config
How do you do that in the context of our RTD configuration?
sorry, I don't know about RTD configuration
sorry, I don't know about RTD configuration
For some background, the problem with RTD configuration is that you can't set environment variables in it as far as I know (from the linked issue in the description of this PR). If I could set an environment variable before starting the build, I'd be able to set LLVM_CONFIG
to point to the correct llvm-config
binary, and there wouldn't be any need for workarounds like running sed over the build script.
Changes required to use LLVM 15 by default, and to support LLVM 16 experimentally, include:
CI config:
Docs:
LLVM_CONFIG
from the config file (see https://github.com/readthedocs/readthedocs.org/issues/6311). Executingupdate-alternatives
to setllvm-config-15
as the defaultllvm-config
also fails with a permission error. So I resorted to editing the FFI build to explicitly usellvm-config-15
in a post-checkout step.llvmlite itself:
Don't initialize of
ObjCARCOpts
in LLVM 16 and above. This was removed in LLVM 16 by:Remove the
AggressiveInstCombine
andPruneEH
passes. These were removed from the legacy pass manager in LLVM 16 by:and
reserveAllocationSpace
in the memory manager to useAlign
for the type of alignments in LLVM 16 - this mirrors an upstream change.memory(<action>)
as opposed to individual attributes likereadonly
. See: https://releases.llvm.org/16.0.0/docs/LangRef.html#function-attributes