cython: force through env variable#35995
Conversation
149f535 to
e7199de
Compare
|
I like this idea in theory. I think we'll find that a lot of packages will now need a cython build dep that didn't previously have one. We'll see how reliably running cython actually works. There are also likely many packages that manually remove cythonized files that we should clean up. I don't think anyone is currently using cython 3+, so I would keep this as a draft until we add a patch to older versions. |
|
We can also apply cython/cython#5307 as a patch in Spack 🤔 |
|
This still rebuilds the world, needs #36103, which of course takes an eternity because gitlab has to catch up with |
adamjstewart
left a comment
There was a problem hiding this comment.
This looks great! Confirmed that the patch applies all the way back to 0.29. The older versions will become deprecated and be removed if we can figure out the first version that supported Python 3.7
2a4a888 to
83ac763
Compare
So, the cython folks used to recommend shipping generated C files, kinda like
autotools packages include generated configure scripts and docs etc so you need
fewer dependencies.
But it turns out: cython relies a lot on cpython internals, meaning that it's
bound to be forward incompatible with Python, and that may even include
patch releases of Python, e.g.
3.10.1->3.10.2.Since cython itself is only a small build dep, and it takes less time to
generate C files than to compile them, it'd be better to force regeneration
using the new
CYTHON_FORCE_REGENenvironment variable.I've opened a backport for it to 0.29, let's see if that gets accepted, then
the lowerbound for the env variable can be changed:
cython/cython#5307