-
Notifications
You must be signed in to change notification settings - Fork 706
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
realizing added Rust dependency as pre-build wheel #14320
Comments
@easybuilders/easybuild-easyconfigs-maintainers Thoughts on this? I think using a pre-built wheel for Additional context: pyca/cryptography#5771 |
In out 2021b generation Python we have Otherwise we hit the lack of POWER support, but there are issues with >= 2021a anyway that may make that an irrelevance. |
One possible alternative can also be to break out some extensions from Python, in particular to reduce the number of dependencies from Python. This could also save us from having to make a -bare python variant. There is probably also some stuff we can do to improve the Rust build, perhaps an external LLVM, or make it build it's LLVM in parallel, or patch it in some way so that it doesn't do downloads during the build (based on comments from other maintainers, I haven't actually looked into this myself). |
Regarding the time it takes to build # avoid build dependency on Ninja, which requires Python,
# since Rust is a build dependency for cryptography that is included with Python
configopts += "--set=llvm.ninja=false " That does speed up the I do think that we should at least try to build (for reference, the build step of |
alternatively, as discussed during the last conf call, we could create our own pre-built wheels for |
It is possible to install Rust without network access, a workflow is in https://github.com/dtolnay/bootstrap Big note of caution there though:
|
Just as a note: I've described two approaches I tried to (manually) install Rust on an offline system here. While the https://github.com/dtolnay/bootstrap proved difficult, I could in the end use the 'normal' installation procedure when passing the appropriate flags, predownloading some tarballs and putting them in the right cachedir. The thing left todo is to automate it in an EasyBlock... |
cryptography is broken out from the base Python package going forward, though, one will still eventually need the Rust compiler for a bunch of other extensions, and the list of Rust based software and Python packages will only grow, so avoiding it using pre-built wheels seems like an uphill battle. In fact, you probably end up needing to installing multiple Rust compiler versions due to how rapidly it updates) I made Cargo, CargoPythonPackage, CargoPythonBundle easyblocks which at least allows this to be fully offline. |
Hi,
As half-way discussed in the slack channel, I would like to bring to attention the following thoughts:
As of 2021b when installing Python a build-dependency for Rust in introduced to satisfy the
cryptography
module. This is a considerable overhead as building the Rust module (a one-time need for those only installing Python with it) takes about 1.5 h (on our machine). Also, it is only possible on head nodes and not in a job context for those sites where internet access on compute nodes is disabled.Perhaps this is a non-issue, when we envision more and more software written in Rust to be rolled out in the future. Bio-Rust for instance might gain impact on the field.
IF the build overhead of Rust to support Python is a considerable overhead, one could consider deviating from eb policies and replacing the extension with a pre-build wheel.
Cheers,
Christian
The text was updated successfully, but these errors were encountered: