-
Notifications
You must be signed in to change notification settings - Fork 234
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add --print-build-identifiers to GitHub Action #872
Conversation
For troubleshooting
This is going to be a bit problematic. ;) Anyway, we already print out identifiers as we go. |
But how to troubleshoot these build then? I specified to use
The full log.
https://github.com/mkleehammer/pyodbc/runs/3890149950?check_suite_focus=true |
Ideally the info that helps is a build matrix as a table, which shows both builds scheduled and filtered out, with a reason why they are filtered. |
That's PyPy, you didn't change the image for |
Well,
Yep, that would help. |
It will even help if before starting Docker image it was explained what it is started for. -Starting Docker image quay.io/pypa/manylinux_2_24_x86_64:2021-10-06-94da8f1...
+Starting wheel builder image for CPython [3.7, 3.8, 3.9] platform [manylinux_2_24]
+ docker://quay.io/pypa/manylinux_2_24_x86_64:2021-10-06-94da8f1... |
That's basically what I meant; I was thinking:
The "manylinux_2_24" is lost at that point, and isn't required, you could target arbitrary images. But that's fine, you see that from the docker image started. |
This is a historical artifact; we discussed changing it for 2.0, but it remained as is. See #711. TL;DR: We only recently merged PyPy + manylinux images; before that, you had to have different images. And PyPy doesn't support manylinux1, which 70% of our users use last I checked. So we left the setting separate. Overrides (#854) would actually make this really easy to merge now, but it wouldn't be backwards compatible. (3.0 idea?) One other downside is that currently I think you will always get two docker launches, even if you don't use different images; that might be fixed in the overrides branch though. |
+1 to what Henry said.
It isn't fixed in the current implementation, we still include the |
Isn't the arch part of the docker image? I don't think there can be a single image that can build two archs? |
@joerick, would you like to do that? I'm working on adding a bit more testing currently, then I think it will be ready. If you can't get to it soonish, I can add it by or before mid tomorrow. |
Correction as I'm adding tests:
Yes, it is. If you set |
Not sure I am getting the thread. All I want is to be able to see current build matrix before it is executed. Docker images are a little too low level concept for discussing it. |
We are going off on a tangent about #854. Ignore us. :) Basically, there's a good opportunity here to add this - for each scheduled Docker launch, we can print the identifiers that are going to be built in that image. We are discussing the new details about how cibuildwheel groups identifiers in a launch. In fact, I've got the change here for the new code: - log.step(f"Starting Docker image {build_step.docker_image}...")
+ ids_to_build = [x.identifier for x in build_step.platform_configs]
+ log.step(f"Starting Docker image {build_step.docker_image} for {', '.join(ids_to_build)}...") |
Yes, it looks Python versions are already known here. cibuildwheel/cibuildwheel/linux.py Line 306 in 414b4f0
|
Apologies for the off-topic chats @abitrolly !
Ah, that's nice! I was getting confused as sometimes in that code we have things like pypy_x86_64, but this is not one of those cases :)
Cool, I see that commit in #854. I think that will help you with this issue @abitrolly , so I'll close this PR. Let me know if you disagree! |
@joerick so how does #854 look like? For
|
🤔 that's exactly what the docs on CIBW_BUILD / CIBW_SKIP do...? |
There's always my JS selector idea, where we could have a way to preview the selectors. I still have the code for that. |
No, they don't explain why selectors are no not |
Why do we need to explain that? Our selectors are not the same thing at all - Making the docs longer takes emphasis away from what we need to get across and make them less readable; I don't think explaining differences with |
I agree that docs needs less text. One way to do that is to add some tables, with short explanation why such prefixes are used. It is probably described in some PEP.. in fact in https://www.python.org/dev/peps/pep-0425/ which is referenced somewhere inline down below. The 425 is based on https://www.python.org/dev/peps/pep-0427/#file-name-convention which says wheel names are these.
where
So what is If the Build selection docs could start with the explanation, then users would be more aware what are they going to choose from. And a better table. The |
You can't have a 1:1 map between cibuildwheel selectors and wheel names. The selector defines the platform the wheel is built on. The wheel name defines the platform the wheel is run on. Those are often closely related, but not always. If you have an The "m" was removed in Python 3.4 or 3.5 (don't remember which), so the last time it was in a build selector was with Python 2, in cibuildwheel 1.x. Yes, you had to build all CPython 2.7 wheels twice. Yes, some wheels (like Pandas) forgot to do this. But yes, this is the build platform's ABI, which is probably where the name came from. Plus it's easy to select on. Personally, I love the table in https://cibuildwheel.readthedocs.io/en/stable/options/#build-skip and the only thing I'd be tempted to change is to duplicate it onto the main page / readme, as I feel like I have to jump there all the time. Adding explanations to it would extend the docs, and not really add all that much, I think. You can easily see the mapping to Python versions on one axes, and platforms on the other. |
I didn't realize that was in the docs; I think that's already a reasonable level of detail, since we also show all the selectors in a table. Technically it's probably closer to abi_tag-platform_tag, though using "python_tag" is probably easier for people to understand/digest here. |
For troubleshooting