albertz / music-player-core

Music player core Python module
BSD 2-Clause "Simplified" License
74 stars 22 forks source link

Please provide a wheel #13

Closed TheLastProject closed 4 years ago

TheLastProject commented 6 years ago

Hello,

I'm interested in using this module in Pext, specifically for the radiobrowser module.

Pext allows modules to define their requirements in requirements.txt to pip install on the end-users' system when they install a module to make sure it has its dependencies. Unfortunately, your package is only provided as source, meaning that Pext will try to compile it on the system of an end-user, which means they'll need all dependencies of compiling it.

Would you consider providing a wheel for easy distribution of your package to end-users?

(As a disclaimer, I have not yet tested how well your package works with web streams, but I feel it wouldn't be productive to start writing my code if there is no interest in providing a wheel at all)

albertz commented 6 years ago

Yes, that definitely would be nice. Contributions are welcome. Currently I am kind of limited in time. I also have not looked into how to do that. Maybe Travis can automatically build that for me? What architectures would you need? Also, should the dependencies be statically linked into it? That could become quite large.

Another thing which needs some work is Python 3 support (or fixes). This shouldn't be too difficult but also needs some time and work. This is probably the next thing I will work at when I get some time.

Yet another thing is support for web streams. Yet again, this needs some more work, esp. there are some assumptions (I don't exactly remember) that the song is finite, but this shouldn't be too hard.

TheLastProject commented 6 years ago

To build wheels, you pretty much simply want to run python setup.py bdist_wheel on each platform. It should be possible to automate that with Travis for Linux and macOS, and probably AppVeyor for Windows. You could upload these builds to a temp host like transfer.sh for download so you could manually upload it to PyPI, or you could even let CI do that for you.

I don't really have stats on what platform Pext users use, but I think I can safely assume it'll be mostly normal 64 bit. It would at least be the sanest platform to start providing wheels for.

For testing web streams, http://www.radio-browser.info/gui/#/ is probably the most useful resource to find a long list of streams in common formats to test with.

If there is any way I could help, please tell me. I'm rather busy most of the time too but I will try to help if I can. Maybe I could take a look into setting up Travis and AppVeyor and see how well automatic building will work?