You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Don't think we should update cmake on the Stretch builders, but we could build it off-system in Stretch with a newer cmake and import the wheel if that works.
piwheels works by automating building wheels from packages with essentially pip wheel <package>, so apart from adding build dependencies we don't generally do custom build options or manually build from github. Looks like it's ok in Buster, which will soon become the supported distro. Might be able to get it working for Stretch.
Thank you for the information, that's super helpful!
Regarding CMake, we can just use the piwheels cmake versions. I probably have to "search harder" for its install with setup.py since the installed cmake wheel is usually not in the user's pathadd a pyproject.toml. will address that on my side for the next release :)
On PyPI/manylinux2010, I plan to upload HDF5 & ADIOS1 as static deps which can be more recent and avoid additional deps to be installed after the wheel (also, I am afraid to loose some that are unable to google the "shared lib not found" problems).
apart from adding build dependencies
Either way, how can we specify such additional build dependencies? By default, my scripts search for "take everything you can find and continue without if not found" which potentially means it has no HDF5/ADIOS1 support at all. What is the apt package list that is installed when we build the wheels? E.g. the linked buster wheel looks like it has not found HDF5 during build.
On PyPI/manylinux2010, I plan to upload HDF5 & ADIOS1 as static deps
How do I build a manylinux2010 wheel?
regarding dependencies (especially HDF5 and ADIOS1), it looked to me that you seam to prefer shared dependencies that the user has then to install on top of the wheel?
On PyPI/manylinux2010, I plan to upload HDF5 & ADIOS1 as static deps
How do I build a manylinux2010 wheel?
manylinux2010 (PEP-571) is a portability subset of allowed symbols and external dependencies. It's not super relevant for piwheels since you build for one distro anyway, but the static build scripts that I use (Dockerfile, instructions) would be the same logic to avoid manually installing apt-packages alongside a wheel. It also helps me to use newer dependency versions than shipped with in a distro.
The next release will probably fix some build issues you are seeing, since it will ship this fix: openPMD/openPMD-api#527 So yes, Python 3.5 is fixable :)
Thanks!
Hm, two interesting things here: first of all it tries to download CMake from pypi instead of piwheels and second it seams to lack a dependency while installing CMake itself, skbuild, which means it decided to download a source package for CMake:
File "/tmp/pip-install-pls3e7ps/cmake/setup.py", line 7, in <module>
from skbuild import setup
ImportError: No module named 'skbuild'
But actually, I do not understand why it's not simply taking the piwheels wheel for that? My pyproject.toml is actually quite simple and fits what is available on piwheels.
ping @waveform80 and @bennuttall just a gentle reminder to update the pip.conf to include piwheels own binaries as dependencies during builds of new packages.
Sorry for the late response - horribly busy at the moment!
I'm a little reticent about this because the command we use to build wheels includes the --no-deps switch (in other words, build with the dependencies you've got and if they're not sufficient just fail). In the case of wheels that have unsatisfied dependencies (stuff outside that which we install in the deployment), we don't want the build-slave modifying its state in such a way that it affects the next build it performs. We can't actually stop people from doing things like calling pip from their setup.py (the only thing we can do about that is periodically reset the builders, which I do on occasion), but it's not something I'm keen to encourage.
Anyway, that's why I'm not convinced that adding piwheels back into /etc/pip.conf is a great idea. Having said that, we should include scikit-build in the set of deployed dependencies as I've noticed it's becoming increasingly important as a build-dep.
@bennuttall any chance you can get that installed on the build-slaves at some point? It'll need to be via pip instead of apt (I don't think it's packaged in any version of raspbian) so it'll need to go next to kervi et al in the deployment script. I think the package is named scikit-build on pypi (rather than skbuild which is the module it installs).
I am not sure I follow the "build with the dependencies you've got" step - the dependencies I need are listed in pyproject.toml (build-time) and requirements.txt (run-time) only. Building CMake currently fails, which is listed in my pyproject.toml.
Yes, adding scikit-build would solve my specific problem as well since it is caused by the missing/failing CMake dependency which needs this, but compiling it again instead of using the readily available wheel from piwheels looks a bit expensive to me.
I do not fully understand why this affects subsequent builds but this seams like an isolation problem in the builders to me. At least with pyproject.toml dependencies are, as far as I can see, gone after install of the main project. Would a new, fresh virtual environment for each build potentially isolate them more? (Could be removed after each build.)
On January 19, 2020 6:26:04 AM PST, Ben Nuttall ***@***.***> wrote:
Been a while since we updated this issue but now `scikit-build` is
installed on builders, the package is successfully building on Buster.
--
You are receiving this because you authored the thread.
Reply to this email directly or view it on GitHub:
#23 (comment)
Oh, sorry. I just looked and saw that the wheels were there and thought the issue was resolved. Should have read more of the comments! I have installed libadios-dev on all the builders. I'll have a go at building it now and see what happens.
Yep, that's it. The compile-time dependency libadios-dev is static and should not show up to users anymore (besides transitive dependencies it could potentially carry).
Thanks a lot!
Activity
bennuttall commentedon Jun 15, 2019
FYI the latest release (0.8.0a0) hasn't been attempted yet because we're not currently building.
0.7.1a failed on both Jessie and Stretch. Jessie due to requiring Python 3.5, Stretch due to requiring cmake 3.11. Here's the output from that build attempt: http://paste.debian.net/1087972/
Debian Stretch has cmake 3.7.2, but Buster has 3.13.4. Stretch-backports this version too. See https://packages.debian.org/buster/cmake
Don't think we should update cmake on the Stretch builders, but we could build it off-system in Stretch with a newer cmake and import the wheel if that works.
I've successfully built it on Buster - does this look ok to you? https://bennuttall.com/files/openPMD_api-0.8.0a0-cp37-cp37m-linux_armv7l.whl
piwheels works by automating building wheels from packages with essentially
pip wheel <package>, so apart from adding build dependencies we don't generally do custom build options or manually build from github. Looks like it's ok in Buster, which will soon become the supported distro. Might be able to get it working for Stretch.[-]Broken package: openPMD-api[/-][+]Missing package: openPMD-api[/+]ax3l commentedon Jun 16, 2019
Thank you for the information, that's super helpful!
Regarding CMake, we can just use the piwheels cmake versions. I probably have to
"search harder" for its install withadd asetup.pysince the installed cmake wheel is usually not in the user's pathpyproject.toml. will address that on my side for the next release :)regarding dependencies (especially HDF5 and ADIOS1), it looked to me that you seam to prefer shared dependencies that the user has then to install on top of the wheel?
https://blog.piwheels.org/how-to-work-out-the-missing-dependencies-for-a-python-package/
On PyPI/manylinux2010, I plan to upload HDF5 & ADIOS1 as static deps which can be more recent and avoid additional deps to be installed after the wheel (also, I am afraid to loose some that are unable to google the "shared lib not found" problems).
Either way, how can we specify such additional build dependencies? By default, my scripts search for "take everything you can find and continue without if not found" which potentially means it has no HDF5/ADIOS1 support at all. What is the apt package list that is installed when we build the wheels? E.g. the linked buster wheel looks like it has not found HDF5 during build.
Thanks a lot for your help! :)
bennuttall commentedon Jun 16, 2019
How do I build a manylinux2010 wheel?
One of the new features of piwheels is that we're now able to calculate dependencies and list them on the project page, e.g. https://www.piwheels.org/project/tensorflow/ so once we're building again, your latest version will be built and dependencies will be calculated and shown there.
There's a suggestion (#117) to try to make import errors more helpful.
If installing extra apt packages on the builders will help, you can request them (in this issue).
ax3l commentedon Jun 16, 2019
manylinux2010(PEP-571) is a portability subset of allowed symbols and external dependencies. It's not super relevant for piwheels since you build for one distro anyway, but the static build scripts that I use (Dockerfile, instructions) would be the same logic to avoid manually installing apt-packages alongside a wheel. It also helps me to use newer dependency versions than shipped with in a distro.That's super cool, that would totally work for me as well (as long as the buster deps are new enough, which they should be).
Perfect, thanks! I would need the following apt packages for
openPMD-api:libadios-devis likely only picked up for Buster and newer (shipped version), yet the installer will just skip it for older distributions.bennuttall commentedon Jul 18, 2019
This is successfully building on Python 3.7 but not 3.5 - is that ok, or is 3.5 fixable?
ax3l commentedon Jul 18, 2019
Can you show me the build log? I am not seeing it at https://www.piwheels.org/project/openpmd-api/
The next release will probably fix some build issues you are seeing, since it will ship this fix: openPMD/openPMD-api#527 So yes, Python 3.5 is fixable :)
ax3l commentedon Jul 18, 2019
Also, where can I add the required
sudo apt install libadios-dev libhdf5-devline for this package as well? :)Add libadios-dev packages to build plaves for package 'openPMD-api'
ax3l commentedon Jul 26, 2019
@bennuttall with piwheels/piwheels#190 merged, the latest PyPI release
0.9.0a1should build on Python 3.5-3.7 targets of piwheels. Can you confirm?bennuttall commentedon Aug 7, 2019
Passed on 3.7. Here's the build log for 3.5: https://paste.ubuntu.com/p/mw4zNkkcWc/
ax3l commentedon Aug 8, 2019
Thanks!
Hm, two interesting things here: first of all it tries to download CMake from
pypiinstead ofpiwheelsand second it seams to lack a dependency while installing CMake itself,skbuild, which means it decided to download a source package for CMake:Here is its upstream repo: https://github.com/scikit-build/cmake-python-distributions
But actually, I do not understand why it's not simply taking the
piwheelswheel for that? Mypyproject.tomlis actually quite simple and fits what is available onpiwheels.5 remaining items
ax3l commentedon Aug 27, 2019
ping @waveform80 and @bennuttall just a gentle reminder to update the
pip.confto includepiwheelsown binaries as dependencies during builds of new packages.ax3l commentedon Sep 9, 2019
pingpong @waveform80 and @bennuttall :)
waveform80 commentedon Sep 12, 2019
Sorry for the late response - horribly busy at the moment!
I'm a little reticent about this because the command we use to build wheels includes the
--no-depsswitch (in other words, build with the dependencies you've got and if they're not sufficient just fail). In the case of wheels that have unsatisfied dependencies (stuff outside that which we install in the deployment), we don't want the build-slave modifying its state in such a way that it affects the next build it performs. We can't actually stop people from doing things like calling pip from theirsetup.py(the only thing we can do about that is periodically reset the builders, which I do on occasion), but it's not something I'm keen to encourage.Anyway, that's why I'm not convinced that adding piwheels back into /etc/pip.conf is a great idea. Having said that, we should include scikit-build in the set of deployed dependencies as I've noticed it's becoming increasingly important as a build-dep.
@bennuttall any chance you can get that installed on the build-slaves at some point? It'll need to be via pip instead of apt (I don't think it's packaged in any version of raspbian) so it'll need to go next to kervi et al in the deployment script. I think the package is named scikit-build on pypi (rather than skbuild which is the module it installs).
ax3l commentedon Sep 12, 2019
Thanks for the details!
I am not sure I follow the "build with the dependencies you've got" step - the dependencies I need are listed in
pyproject.toml(build-time) andrequirements.txt(run-time) only. BuildingCMakecurrently fails, which is listed in mypyproject.toml.Yes, adding
scikit-buildwould solve my specific problem as well since it is caused by the missing/failing CMake dependency which needs this, but compiling it again instead of using the readily available wheel from piwheels looks a bit expensive to me.I do not fully understand why this affects subsequent builds but this seams like an isolation problem in the builders to me. At least with
pyproject.tomldependencies are, as far as I can see, gone after install of the main project. Would a new, fresh virtual environment for each build potentially isolate them more? (Could be removed after each build.)bennuttall commentedon Jan 19, 2020
Been a while since we updated this issue but now
scikit-buildis installed on builders, the package is successfully building on Buster.ax3l commentedon Jan 19, 2020
bennuttall commentedon Jan 19, 2020
Oh, sorry. I just looked and saw that the wheels were there and thought the issue was resolved. Should have read more of the comments! I have installed
libadios-devon all the builders. I'll have a go at building it now and see what happens.ax3l commentedon Jan 20, 2020
bennuttall commentedon Jan 20, 2020
Ok so it's succeeded for cp37m with these instructions:
Do these instructions work, or is there more to do to get it to work?
ax3l commentedon Jan 21, 2020
Yep, that's it. The compile-time dependency
libadios-devis static and should not show up to users anymore (besides transitive dependencies it could potentially carry).Thanks a lot!
bennuttall commentedon Jan 21, 2020
Excellent. Sorry for the delay - glad we got it sorted in the end.
ax3l commentedon Jan 22, 2020
Thanks a lot for your splendid support :)