-
Hello, I am evaluatiing GH Actions and converted my multi platform build to it (runs smoothly on OSX, Linux, Windows). Now I got error on OSX that the action is only supported on Linux, which is a pity
https://github.com/htm-community/htm.core/commit/babeb019b8ec3439122ea08d872ebcc265c3717c/checks Cheers, |
Beta Was this translation helpful? Give feedback.
Replies: 31 comments
-
Wow, that's a good point. I didn't realize that GitHub doesn't run the docker daemon in macOS VMs. Maybe it's even a bug in GitHub workflows. |
Beta Was this translation helpful? Give feedback.
-
As for improving the cross-platform support, we need to evaluate whether it's really needed. @pradyunsg any thoughts? |
Beta Was this translation helpful? Give feedback.
-
@breznak please feel free to send a PR improving the README :) |
Beta Was this translation helpful? Give feedback.
-
Thanks for swift reply!
I don't know enough of the Actions' internals, would you investigate, please?
thanks, that's a possible workaround 👍 How would I define dependency of jobs? I couldn't find something as needs/requires in CircleCI's workflows.
the PS: Zdravim z CZ 👋 |
Beta Was this translation helpful? Give feedback.
-
I guess this https://github.com/remorses/pypi would have the same problem, since it runs docker (?) |
Beta Was this translation helpful? Give feedback.
-
For needs see https://help.github.com/en/articles/workflow-syntax-for-github-actions#jobsjob_idneeds |
Beta Was this translation helpful? Give feedback.
-
@chrispat I'm personally aware of job deps via
Yes. They run JS code using NodeJS which is pre-installed in all CI runner VM. For use to do the same, it's needed to pre-install Python and then exec a Python script and proceed from there. This needs some experimentation atm and honestly, I think that the way with collecting artifacts and uploading via a single job looks way better.
Totally. It also looks half-baked and does more than it should (like setuptools lock-in which is the same problem that Travis CI has).
Ahoj |
Beta Was this translation helpful? Give feedback.
-
I'm starting to think the same. Maybe this issue could be resolved only with a Readme example on using the |
Beta Was this translation helpful? Give feedback.
-
Yep. But not only the README. I also have a guide PR pending: pypa/packaging.python.org#647. Please link the results of your experiments here. I can't promise that I'll get to do it myself soon so a PR is also welcome :) |
Beta Was this translation helpful? Give feedback.
-
hey, that's pretty cool, thanks! |
Beta Was this translation helpful? Give feedback.
-
It's not "better". It's just a unified way of invoking other tools which defaults to FWIW, you can invoke PEP517 build backend manually using |
Beta Was this translation helpful? Give feedback.
-
Thanks for your help, the workflow with Q: Is PYPI and
|
Beta Was this translation helpful? Give feedback.
-
Until #10 is addressed, you should put all of the wheels into P.S. I see you're building eggs, it's a decade-deprecated format. Better drop those in favor of wheels. And it's also highly recommended to ship a source dist (a |
Beta Was this translation helpful? Give feedback.
-
perfect, thanks!
oh, didn't know, I'll drop the eggs 🍳 |
Beta Was this translation helpful? Give feedback.
-
Hi, I'm getting back with my results, made this method work:
All CI seems to pass, But I still have a problem as
could this be because my "hack"? https://github.com/htm-community/htm.core/blob/master/.github/workflows/htmcore.yml#L135 |
Beta Was this translation helpful? Give feedback.
-
Yay!
Yes, yes it could. pypa/pip#6526 |
Beta Was this translation helpful? Give feedback.
-
You shouldn't do this, it's a very bad idea. You have to use manylinux docker containers to build wheels against every Python interpreter version you want to support + also use auditwheel to eliminate external references. |
Beta Was this translation helpful? Give feedback.
-
I wasn't able to upload to PyPI a wheel created on Ubuntu18.04, (which would be fine and enough if pip could recognize). So I got the impression that Linux OSs have to be
yes, I'm aware what I do isn't optimal solution, we already got some users failing on that, But our library is c++/python + other dependencies, and we require a rather modern c++ standard (c++11,ideally '17). I thought if we build with The problem is the manylinux (CentOS 5) c++ environment is quite ancient for modern c++ development, so unless newer
I'll have to try this, building the binary with
|
Beta Was this translation helpful? Give feedback.
-
@breznak the idea is to only link against things that are 100% present in the user's OS. So if you can compile all externals statically it should work. You can improve glibc dep a bit by using manylinux2010 which is based on CentOS 6 but you still have to build against glibc present there. Regarding non-manylinux1, I'm not sure but maybe you could use just Anyway, publishing wheels which are marked as manylinux1 but are not compliant is disrespectful to users because this standard is a promise for that that the thing will work no matter what. |
Beta Was this translation helpful? Give feedback.
-
I'd like to think I'm trustable, hah, but in the linked issue I do provide a recipe for easily making your own manylinux-derived images with newer versions of GCC. As long as you use |
Beta Was this translation helpful? Give feedback.
-
Would manylinux 2010 not be a solution? |
Beta Was this translation helpful? Give feedback.
-
@maartenbreddels manylinux2010 allows using a newer toolchain but I think whether it's a solution or not depends on each project's specific needs. |
Beta Was this translation helpful? Give feedback.
-
One issue could be that it requires pip>=19, for the rest I only see benefits. |
Beta Was this translation helpful? Give feedback.
-
It's not an issue at all. But everyone needs a solution that fits their needs. There's no universal pill. |
Beta Was this translation helpful? Give feedback.
-
To make actual manylinux wheels, I recenty made this GitHub Action that builds using the So if it fits your project, feel free to use it. |
Beta Was this translation helpful? Give feedback.
-
Is there a guide on how to upload artifacts somewhere and collect them on a later Linux job? @breznak's links are 404 now and I am having trouble following how that is supposed to work. |
Beta Was this translation helpful? Give feedback.
-
Hey @polm, Just use Here's how I do it: https://github.com/ansible/pylibssh/blob/17e8683/.github/workflows/build-test-n-publish.yml#L353-L357. This example implements quite a complex workflow (with testing exactly the same artifacts that are going to be uploaded) but it should give you some idea of how to address your question. |
Beta Was this translation helpful? Give feedback.
-
Got it, thanks - that makes it much clearer. |
Beta Was this translation helpful? Give feedback.
-
@polm this is illustrated somewhat simply in the Scikit-HEP guide on binary wheels, too: https://scikit-hep.org/developer/gha_wheels |
Beta Was this translation helpful? Give feedback.
Hey @polm,
Just use
actions/upload-artifact@v2
with the samename
from multiple build jobs and then have a job withneeds
that would useactions/download-artifact@v2
to grab the artifact. v2 upload action merges the artifacts with the same name into one so the download will get an artifact will all the files in it.Here's how I do it: https://github.com/ansible/pylibssh/blob/17e8683/.github/workflows/build-test-n-publish.yml#L353-L357. This example implements quite a complex workflow (with testing exactly the same artifacts that are going to be uploaded) but it should give you some idea of how to address your question.