Replies: 10 comments 73 replies
-
More thoughts on this...
|
Beta Was this translation helpful? Give feedback.
-
I wouldn't go that far. I think PLATFORM/ARCH have a clear purpose - they describe the system you are willing to run on. Maybe we could just extend BUILD to support exclusions? It would be evaluated left to right, and a rule starting with |
Beta Was this translation helpful? Give feedback.
-
I’m not a big fan of it (have had issues matching what I want - more of an issue with the yaml part though) but there’s a mini language here for file matching: https://github.com/actions/labeler |
Beta Was this translation helpful? Give feedback.
-
I am still a fan of a reduction of About the mini-language: that's going to be harder/annoying to cram into environment variables in a CI config, though? Now, everything normally fits onto one line. Making that more complex enforce making files, etc... :-/ On @henryiii's thing about merging |
Beta Was this translation helpful? Give feedback.
-
Proposal (just thinking out loud here):
For cibuildwheel 2.0, we add CPython 2.7 and 3.5 (if we still support it at that point) to the skip-by-default. This could be used to deselect either univeral2 & arm, or x86 and arm (leaving universal2 on by default) for 2.0 (before 2.0, we do not include univeral2 and arm in the "native/default" archs, only in "all", to avoid disruption). So, for someone upgrading to 1.8, they don't need to do anything; they get identical behavior. But they can start using When upgrading to 2.0, we start PS: Most packages that drop Python 2 support also drop pypy2 support, like NumPy. So, regardless of the fact PyPy isn't expecting it to go anywhere soon, library support is dwindling and it should likely not be in the default. In fact, we could even make pypy opt-in in this scheme....) I haven't checked to see if we support |
Beta Was this translation helpful? Give feedback.
-
How crazy is this (counter-?, extended?) proposal, and what use cases did I miss?
|
Beta Was this translation helpful? Give feedback.
-
Idea to approach this differently: can we set up a complex but realistic example of a build selection, and see how we'd like to write a config for it? |
Beta Was this translation helpful? Give feedback.
-
Here's my proposal compared to the classic syntax, using https://jsfiddle.net/henryiii/btuon0hy/1/show I love #511 :) import toml
t = toml.load("cibuildwheel/resources/build-platforms.toml")
bp = t["tool"]["cibw"]["build-platforms"]
print([v["identifier"] for n in bp for v in bp[n]]) |
Beta Was this translation helpful? Give feedback.
-
I wonder how close this is? https://facelessuser.github.io/wcmatch/fnmatch/ |
Beta Was this translation helpful? Give feedback.
-
Looking over all the different options and different projects, I feel that the special-rule CIBW_BUILD, while not that hard to implement, is too hard to reason with; most users are not straining at the edge of what can be done with the current syntax already. It could be very powerful if a user bothered to learn it, but users don't and should be bothered to learn a custom mini match syntax just to use cibuildwheel. Users tend to do the simplest thing here. I think one reason that many projects already split by python version is that GHA builds 10 jobs in parallel (officially anyway, it's more like 15+ in practice so far), so you can finish the wheels in a fraction of the time if you split it up more (and for larger projects, less likely to get the 6 hour limit). So how about, with reasoning, basically iterating @YannickJadoul's proposal:
ARCH/MIN_PYTHON are about telling cibuildwheel what you are interested in supporting, and is something we can adjust over time to "ideal" defaults, unless a user overrides them, in which case they specifically want that thing. With SKIP, which is in this category sort of, user overrides blend CPython/PyPy, Python version, and OS-ARCH, so we can't control each default separately without the new variables. BUILD is more about telling it what "this" job is trying to build out of the total allowed set. |
Beta Was this translation helpful? Give feedback.
-
I realised when working on #484 that if we had a clever way to set the default of
CIBW_BUILD
or to compose build/skip somehow, we might not even needCIBW_ARCHS
at all. ReallyCIBW_ARCHS
is a way to override some 'default' of build identifiers - it happens beforeCIBW_BUILD
/CIBW_SKIP
is evaluated. And we also haveCIBW_PLATFORM
, controlling the baseline assumption of platform before that.Could there be some way to unify some of this? Perhaps an option like
CIBW_SELECT
, which had some kind of mini-language which specified both built-in (but overridable) platform/arch concerns and user-specified deselect/explicit select instructions? Alas I don't have any solid ideas for this, just a vague notion that there might be a unifying concept that might be interesting to discuss :PBeta Was this translation helpful? Give feedback.
All reactions