Skip to content
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

Wheel support? #121

Open
Varbin opened this issue Jan 24, 2018 · 22 comments
Open

Wheel support? #121

Varbin opened this issue Jan 24, 2018 · 22 comments

Comments

@Varbin
Copy link
Contributor

Varbin commented Jan 24, 2018

Having wheels on PyPi could make installation a lot faster and may also solve the "library headers are required for installation"-problem.

By the way, nice work!

@jonashaag
Copy link
Owner

Good idea. Not sure what this means for release management though? Is there some wheel-as-a-service thing so I don't need to have Windows Mac and Linux?

@Varbin
Copy link
Contributor Author

Varbin commented Jan 25, 2018

Some CI services could be used. On Travis OS X containers can be used (but I have no experience with them) and AppVeyor (See https://packaging.python.org/guides/supporting-windows-using-appveyor/) makes it possible to build on Windows - still this all has to be set up.

For Linux an "manylinux" wheel would be great, it is possible to also use them on travis (example project: https://github.com/pypa/python-manylinux-demo).

@jonashaag
Copy link
Owner

Ok, I'm happy to incorporate this into the release process as long as it means I don't have to install Linux or Windows. Even better if this could be done completely on CI or some trustworthy third party service.

@jonashaag
Copy link
Owner

(Docker is fine as well)

@Varbin
Copy link
Contributor Author

Varbin commented Jan 25, 2018

@jonashaag The manylinux wheel creation is done with Docker.

@jonashaag
Copy link
Owner

I see; I'll have a look

@jonashaag
Copy link
Owner

Looks good but seems to be a bit of work. Feel free to contribute a working PR :)

@Varbin
Copy link
Contributor Author

Varbin commented Jan 29, 2018

As Continuous Integration could also run a test suite, would you mind if I convert some of the present tests into some independently running automated tests? So before building wheels, it will be tested if nothing broke.

@Varbin
Copy link
Contributor Author

Varbin commented Jan 29, 2018

Before doing so, I would like to finish #122/#123 first.

@jonashaag
Copy link
Owner

As Continuous Integration could also run a test suite, would you mind if I convert some of the present tests into some independently running automated tests? So before building wheels, it will be tested if nothing broke.

That would be absolutely awesome. See also #52. I never got around to doing it.

@Jitsusama
Copy link

Jitsusama commented Feb 5, 2018

I would like to say that I find this PR quite interesting. Based upon corporate constraints, I have to develop on a Windows machine, even though I deploy to Linux. It would be nice to be able to have bjoern run on my development environment.

@dgilman
Copy link

dgilman commented Jan 8, 2019

I have binary wheels built for several Debian and Ubuntu releases here https://github.com/dgilman/bjoern/releases

@bersace
Copy link
Contributor

bersace commented Mar 29, 2019

Does the wheel embed libev or do you still need to install libev4 ? does manylinux requires plateforme to ship libev ?

@hoefling
Copy link

hoefling commented Jul 27, 2019

Here's my humble suggestion: a Travis job configuration that builds fat Linux/MacOS wheels with libev included, installs them and runs unit tests, with additional releasing on tag push. Examples:

This is how the release would look like (a fake 3.0.3 in this example):

Linux wheels are being built in the pypa/manylinux1 containers, so nothing special here to report. Regarding MacOS wheels: not sure what versions/platforms are relevant - @jonashaag do you have any ideas? For now, I only included the cp27/36/37 for the macosx_10_9_x86_64 platform; 3.4 is unsupported and IIRC 3.5 has issues with the OpenSSL version linked against on MacOS (AFAIK it's still the 0.9.8), so not sure whether someone still uses 3.5 on MacOS.

No fat wheels for Windows since I couldn't get past compiling http_parser with MSVC (e.g. build on Appveyor), so dropped it for now.

I also started to port the scripts from the tests/ directory to unit tests (sample tests already executed in jobs), will drop some thoughts in #52. In preparation for that, I configured collecting code coverage and uploading it to codecov: here's what it can look like in the end.

@bersace
Copy link
Contributor

bersace commented Aug 27, 2019

Actually, releasing one plateform at a time may help make a step further.

@bersace
Copy link
Contributor

bersace commented Jan 13, 2020

Just a note, we should ship a variant with statd enabled. I thinks of another wheel named bjoern-statd.

@bersace
Copy link
Contributor

bersace commented Jan 13, 2020

@jonashaag what is the release process as of now ? Do you push manually artefacts to PyPI ?

@bersace
Copy link
Contributor

bersace commented Jan 13, 2020

Ok, I found make upload. https://github.com/jonashaag/bjoern/blob/master/Makefile#L116-L117 Is it relevant ?

@jonashaag
Copy link
Owner

Yes that's what I'm using. And that's the entire release process for now.

I'm happy to change to any other release process ;)

@pythonmobile
Copy link

Any update on wheels ? I would like to not have to install libev using apt for pip installing bjoern. Thanks.

@danielsamuels
Copy link

For what it's worth, I wanted to build Bjoern wheels for an internal use-case so I wrote a Dockerfile to do it:

FROM quay.io/pypa/manylinux2014_x86_64
RUN yum install -y gcc libev-devel \
    && /opt/python/cp38-cp38/bin/pip3.8 wheel bjoern==3.1.0 \
    && auditwheel repair /bjoern-3.1.0-cp38-cp38-linux_x86_64.whl

This generates /wheelhouse/bjoern-3.1.0-cp38-cp38-manylinux2014_x86_64.whl which can then be installed on a system which does not have libev installed.

@bersace
Copy link
Contributor

bersace commented Dec 10, 2021

#178 added plumbing for wheels on Linux. But @jonashaag didn't published wheels yet on PyPI. Today, I also had a look at https://cibuildwheel.readthedocs.io/en/stable/setup/#github-actions which may improve the situation.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants