RalfG / python-wheels-manylinux-build

GitHub Action to build Python manylinux wheels
https://github.com/marketplace/actions/python-wheels-manylinux-build
Apache License 2.0
92 stars 44 forks source link

Some requirements can't be installed as suggested #1

Closed pedrocamargo closed 4 years ago

pedrocamargo commented 4 years ago

Thanks for creating this action! However, at least one requirement can't be installed using pip on Linux, PyQT5.

Ideally, installation on windows is done like this:
sudo apt-get install python3-pyqt5

Would it make sense having a third parameter to the action with a list of commands to run prior to compilation?

Stack trace:

Collecting PyQt5 Downloading https://files.pythonhosted.org/packages/3a/fb/eb51731f2dc7c22d8e1a63ba88fb702727b324c635***83a32f27f73b8116/PyQt5-5.14.1.tar.gz (3.2MB) Installing build dependencies: started Installing build dependencies: finished with status 'done' Getting requirements to build wheel: started Getting requirements to build wheel: finished with status 'done' Preparing wheel metadata: started ERROR: Complete output from command /opt/_internal/cpython-3.7.6/bin/python /opt/_internal/cpython-3.7.6/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py prepare_metadata_for_build_wheel /tmp/tmprhikcrkk: Preparing wheel metadata: finished with status 'error' ERROR: Traceback (most recent call last): File "/opt/_internal/cpython-3.7.6/lib/python3.7/site-packages/pip/_vendor/pep517/_in_process.py", line 64, in prepare_metadata_for_build_wheel hook = backend.prepare_metadata_for_build_wheel AttributeError: module 'sipbuild.api' has no attribute 'prepare_metadata_for_build_wheel'

During handling of the above exception, another exception occurred:
RalfG commented 4 years ago

I'm not sure if installing with apt would fix this issue, as the dependencies do not only need to be installed, their wheels need to be built. Apparently PyQt5 switched to the manylinux2014 container recently. So I think your issue would be fixed if you use the manylinux2014 container.

I've been trying to get an option into the action to choose which manylinux container to use, but it doesn't seem possible to create an action with a variable container depending on the actions arguments: https://github.community/t5/GitHub-Actions/Expressions-in-Docker-URI/td-p/31927

So I think I'll make multiple versions/releases of the action for each of the manylinux containers. If anyone else has a better solution, suggestions are welcome!

RalfG commented 4 years ago

Additionally, the manylinux containers use CentOS, which uses the yum package manager. In #2, an option to install system packages with yum will be added . However, I'm not sure if python-PyQt5 can be installed with yum.

I think the solution to your problem is to use the manylinux2014 container, which is functionality I'm planning to implement soon.

pedrocamargo commented 4 years ago

Thanks for looking into this, @RalfG . I will wait for the manylinux2014 container!!

RalfG commented 4 years ago

@pedrocamargo Can you try to run the action with reference RalfG/python-wheels-manylinux-build@v0.2-manylinux2014_x86_64? I'm curious to see if this fixes the issue!

pedrocamargo commented 4 years ago

Hey Ralf, sorry for the delay in trying this. I was up to my neck with the next release I have to do.

It actually didn;t work:

INFO:auditwheel.main_repair:Repairing aequilibrae-0.6.0-cp37-cp37m-linux_x86_64.whl usage: auditwheel [-h] [-V] [-v] command ... auditwheel: error: cannot repair "aequilibrae-0.6.0-cp37-cp37m-linux_x86_64.whl" to "manylinux1_x86_64" ABI because of the presence of too-recent versioned symbols. You'll need to compile the wheel on an older toolchain.

[error]Process completed with exit code 2.

https://github.com/AequilibraE/aequilibrae/runs/449428075?check_suite_focus=true

RalfG commented 4 years ago

Hi, no problem. I noticed in the log that you build the wheels outside of the container: https://github.com/AequilibraE/aequilibrae/runs/449428075?check_suite_focus=true#step:7:3 Then it makes sense that it still gives this error. Can you remove that step and immediately build the package with the RalfG/python-wheels-manylinux-build@v0.2-manylinux2014_x86_64 action?