pythongssapi / python-gssapi

A Python interface to RFC 2743/2744 (plus common extensions)
ISC License
103 stars 45 forks source link

RFE: provide manylinux binary wheel package #343

Open ktdreyer opened 4 months ago

ktdreyer commented 4 months ago

(This is an RFE, not a bug report.)

pip install requests-gssapi pulls in gssapi, and gssapi depends on several development libraries being available. On Fedora and RHEL, it requires gcc, krb5-devel, and the relevant python3-devel package (eg. python3.11-devel if using the python3.11 stack).

In CI containers, we try to keep the installed libraries to a minimum.

Looks like you already ship precompiled wheel files for Mac and Windows. Would you consider doing the same for Linux? (https://pypi.org/project/pysequoia/#files is a good example of doing this.)

jborean93 commented 4 months ago

Unfortunately this is not really possible for Linux. See https://github.com/pythongssapi/python-gssapi/issues/200 for a more detailed explanation as to why we don't do it for Linux. The reason why we do this for Windows and macOS is because:

ktdreyer commented 4 months ago

Thank you for explaining this. The link to #200 helps me understand the history and the bulleted points explain how the Linux situation is different than Windows or macOS. I didn't know that Windows wheels don't have to pass auditwheel.

When Python links to multiple libgssapi_krb5.so libraries (via python-ldap, as explained in #200), what are the problems you would expect to see?

simo5 commented 4 months ago

If you are lucky, random crashes, if not undebuggable behaviors.

jborean93 commented 4 months ago

As for your CI problem you have have multiple stages where you build the artifact or your own wheel using one container and share the binaries with the final one. That allows you to avoid having the development headers and build tools present in the final image but still have the compiled module code.

ktdreyer commented 3 months ago

Sure, I think we'll look into that approach for CI.

We also hit this problem regularly on developer workstations. It's difficult for newer developers to get started with Python scripts or apps that use gssapi-enabled web services.