Skip to content
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

Travis credits #159

Open
henryiii opened this issue Jul 2, 2021 · 11 comments
Open

Travis credits #159

henryiii opened this issue Jul 2, 2021 · 11 comments

Comments

@henryiii
Copy link
Contributor

henryiii commented Jul 2, 2021

I've released CMake 3.20.5, which worked beautifully on the GitHub Actions backend, which the exception of a missnamed deployment secret (so I was just able to download the artifacts and push those to PyPI manually, fantastic! I've added a new key with the proper name - in the future, we can change the name in the workflow to one of the other two options now).

However, the PowerPC job on Travis failed due to networking issues, and I restarted it several times, and now have an "out of credits" message and can't build the PowerPC arch for 3.20.5 (so if you are reading this and need PowerPC, use 3.20.4 for the moment). Here are some ideas:

  • Move Scikit-build to GHA, to avoid extra Travis credit usage for things that are easy to run elsewhere
  • Maybe use emulation on GHA? Much slower, but could be released all at once and only if all jobs succeed, which is nice.
  • I could run the emulation build locally via cibuildwheel 2 and upload it, probably. Edit: I don't know how to do run emulation on Docker on macOS.
  • Maybe a small fund for Travis credits could be included in our NSF CSSI proposal?
  • When does the allowance reset? I would have thought on the first.
@mayeut
Copy link
Contributor

mayeut commented Jul 3, 2021

There's a race condition between travis-ci & GHA I did not think about when crafting #139 :

Because building cmake python package requires cmake, the following line exists (required for manylinux1 only on linux):

"pipx install cmake",

We could pin its version or require it only for x86/x64.
I will open a PR pinning it in a first time.
The dependency on a previous version of cmake will only become an issue when adding a new platform and can be addressed at this point (c.f. also #33 which is relevant for this issue)

I will also open a PR for with GHA emulation just to see how much time it takes.

@mayeut
Copy link
Contributor

mayeut commented Jul 3, 2021

I could run the emulation build locally via cibuildwheel 2 and upload it, probably. Edit: I don't know how to do run emulation on Docker on macOS.

@henryiii,
on macOS (Intel) with Docker Desktop, running CIBW_ARCHS="ppc64le" cibuildwheel --platform linux on the #161 branch just works (qemu is bundled in Docker Desktop, at least macOS Intel).

@mayeut
Copy link
Contributor

mayeut commented Jul 3, 2021

Maybe use emulation on GHA? Much slower, but could be released all at once and only if all jobs succeed, which is nice.

The GHA workflow takes a bit more than 2 hours with emulation. IMHO, this takes too long for PR but should be OK for releases.

Here's what I'm thinking:

Given almost everything happens in a docker container, it should not matter wether we're using GHA emulated or Travis-CI and I think there's very little risk with what's proposed. The cron job would ensure that we're not hitting a qemu issue now & then.

@mayeut
Copy link
Contributor

mayeut commented Jul 4, 2021

@jcfr, @henryiii,

I've built the missing wheel for 3.20.5 but can't push it to PyPI (lacking rights on PyPI for this).
If rights are granted, I can push it, otherwise, I can share it. Another option is to push a release once #160 and/or #161 land.

@henryiii
Copy link
Contributor Author

henryiii commented Jul 4, 2021

I'm just a maintainer on the PyPI package, so can't add you there. You can send it to me and I can upload it, or @jcfr or @thewtex could add you.

That plan sounds good. The "only upload if all wheels are built" part, especially. Adding three parallel 2 hour jobs isn't awful for release-only. We also are reducing our unnecessary usage of Travis.

I did try to build locally on my mac, but had an illegal instruction (even just trying to open that ppc manylinux image).

@mayeut
Copy link
Contributor

mayeut commented Jul 4, 2021

@henryiii,

You can send it to me and I can upload it

I sent you a google drive link along with the sha256sum
I tested it briefly on python:latest (& cibuildwheel tested it) via qemu.

I did try to build locally on my mac, but had an illegal instruction (even just trying to open that ppc manylinux image).

that's something I've certainly seen before and one of the quirks of using qemu.

That plan sounds good. The "only upload if all wheels are built" part, especially. Adding three parallel 2 hour jobs isn't awful for release-only. We also are reducing our unnecessary usage of Travis.

I will update my PR for this.

@thewtex
Copy link
Member

thewtex commented Jul 9, 2021

Here are some ideas:

These are all great ideas.

One more idea: cross-compile on amd64 via dockcross. @mayeut how possible is it to support dockcross in cibuildwheel?

@jcfr
Copy link
Contributor

jcfr commented Jul 9, 2021

To streamline releases:

@mayeut
Copy link
Contributor

mayeut commented Jul 14, 2021

you have been added as a maintainer to both https://pypi.org/manage/project/cmake and https://pypi.org/manage/project/ninja

@jcfr, thanks. Unfortunately, I was away for a long week-end and the link to join those projects expired before I could accept. Can you send those again please ?

@jcfr
Copy link
Contributor

jcfr commented Jul 14, 2021

Can you send those again please ?

Of course, I just sent new invites :)

@mayeut
Copy link
Contributor

mayeut commented Jul 14, 2021

@jcfr, thanks, I could upload the missing wheel to PyPI.

One more idea: cross-compile on amd64 via dockcross.

@thewtex,
That's yet another option but cross-compilation is not supported for linux in cibuildwheel.
It would also require for auditwheel to support cross-repairing (probably before cibuildwheel can be used for that).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants