LudovicRousseau / pyscard

pyscard smartcard library for python
http://pyscard.sourceforge.net/
GNU Lesser General Public License v2.1
377 stars 108 forks source link

Wheels for macOS (all Python versions) #150

Closed bittner closed 1 year ago

bittner commented 1 year ago

I noticed that the latest version of pyscard (2.0.5) on PyPI provides wheels for Windows (Python 3.7 through 3.10) and macOS, but for macOS only for Python 3.10.

IIUC, this translates to that macOS users have to install the prerequisites (swig, etc.) for building the source distribution for all versions except Python 3.7.

Shouldn't we provide wheels for all supported Python versions also on macOS?

LudovicRousseau commented 1 year ago

The Python version provided by Apple with macOS Monterey is 3.9.6. I guess Python 3.7 was provided with macOS Big Sur I used before.

If you use another Python version on macOS then I guess you installed it using brew (or similar) and you are also able to install swig, etc. to rebuild pyscard yourself.

On Windows it is different since just installing a C compiler is already a nightmare (at least for me). I do not plan to provide an installer for every Python versions times every possible systems.

bittner commented 1 year ago

Hmm, I understand. :thinking:

I believe, you shouldn't worry about getting the build tool chain running (for the combination of all supported OSes and Python versions) on your own hardware. That should be coded in and and handled by the CI infrastructure. GHA makes it easy to cover (at least) Ubuntu Linux, macOS and Windows – you know that. Also, what happens with the project when your hardware goes in tilt?

Please, reconsider your wontfix badge.

LudovicRousseau commented 1 year ago

I have not closed the ticket. Feel free to submit a pull request to fix this issue.

LudovicRousseau commented 1 year ago

Hello Any progress on a PR to built for all Python versions on macOS?

bittner commented 1 year ago

I figured out I've never done building wheels against various Python versions, and it's actually not straight-forward.

The PyPA runs the cibuildwheel project to address the topic.

Would you dare to describe how you built and uploaded the various wheel versions for Windows on PyPI? – Was this in a single step, or several uploads?

LudovicRousseau commented 1 year ago

For Windows I use https://github.com/LudovicRousseau/pyscard/blob/master/.github/workflows/windows.yml The different wheels are then in the artifact.zip file.

Maybe something similar can be used for macOS. I guess there is more than one way to do it.

bittner commented 1 year ago

The different wheels are then in the artifact.zip file.

And how do you upload the wheels to PyPI then? Through PyPI's web interface, one each time?

LudovicRousseau commented 1 year ago

python3 -m twine upload dist/*, same as for the PyPI source upload used in https://github.com/LudovicRousseau/pyscard/blob/master/Makefile#L10

LudovicRousseau commented 1 year ago

@bittner any progress? Do you plan to submit a PR?

bittner commented 1 year ago

Despite the fact that I still think building wheels for all supported Python versions is a good idea I have no plans to implement this now. The team I developed a CLI tool for that would have benefited from this is happy with as it is. And I, myself, am not a macOS user. – Sorry about that!

LudovicRousseau commented 1 year ago

OK. Closing then.