bjoern
bjoern copied to clipboard
Wheel support?
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!
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?
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).
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.
(Docker is fine as well)
@jonashaag The manylinux wheel creation is done with Docker.
I see; I'll have a look
Looks good but seems to be a bit of work. Feel free to contribute a working PR :)
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.
Before doing so, I would like to finish #122/#123 first.
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.
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.
I have binary wheels built for several Debian and Ubuntu releases here https://github.com/dgilman/bjoern/releases
Does the wheel embed libev or do you still need to install libev4 ? does manylinux requires plateforme to ship libev ?
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.
Actually, releasing one plateform at a time may help make a step further.
Just a note, we should ship a variant with statd enabled. I thinks of another wheel named bjoern-statd
.
@jonashaag what is the release process as of now ? Do you push manually artefacts to PyPI ?
Ok, I found make upload
. https://github.com/jonashaag/bjoern/blob/master/Makefile#L116-L117 Is it relevant ?
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 ;)
Any update on wheels ? I would like to not have to install libev using apt for pip installing bjoern. Thanks.
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.
#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.