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

Eventlet depends on Greenlet which requires compilation #2261

Closed
balloob opened this issue Jun 9, 2016 · 13 comments
Closed

Eventlet depends on Greenlet which requires compilation #2261

balloob opened this issue Jun 9, 2016 · 13 comments

Comments

@balloob
Copy link
Member

balloob commented Jun 9, 2016

Python dependencies that require compilation are a source of problems for our users. With the recent move to WSGI we have chosen Eventlet as the wsgi server. As coroutine engine, Eventlet depends on greenlet. And greenlet requires compilation.

For Windows greenlet includes the compiled version but for other platforms it does not. This is already causing confusion for people. I've seen comments on reddit and the forum about not having an HTTP server.

For some components it is acceptable that it is a bigger hurdle to install but our HTTP server should not be one of them.

So I think that we should try to explore other options.

One of the options that I found is CherryPiWSGIServer. It is a threaded server and is a general purpose WSGI server, it doesn't require us to use CherryPy.

CC @JshWright

@balloob
Copy link
Member Author

balloob commented Jun 9, 2016

So it looks like going to a threaded server will require some hacks to get websockets working, which is also not preferred.

Greenlet should come with manylinux wheel builds in their next version 0.4.10 but there is not currently a timeline when this is being released: python-greenlet/greenlet#101

Manylinux builds work on pretty much all linux builds and will automatically be installed with pip 8.1+

@patchedsoul
Copy link

Im pretty happy with uWSGI. Used it with many different projects successfully.I've not looked into all of the specifics you guys need to address though.

Sent from my iPhone
Please excuse my brevity or any typo's

On Jun 9, 2016, at 1:12 PM, Paulus Schoutsen <notifications@git.luolix.topmailto:notifications@github.com> wrote:

So it looks like going to a threaded server will require some hacks to get websockets working, which is also not preferred.

Greenlet should come with manylinux wheel builds in their next version 0.4.10 but there is not currently a timeline when this is being released: python-greenlet/greenlet#101python-greenlet/greenlet#101

Manylinux builds work on pretty much all linux builds and will automatically be installed with pip 8.1+

You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHubhttps://github.com//issues/2261#issuecomment-224962958, or mute the threadhttps://github.com/notifications/unsubscribe/AJyk-i_zYc6CzhijI-HXwyuf6eeeXvu8ks5qKEmLgaJpZM4IxqAc.

@balloob
Copy link
Member Author

balloob commented Jun 9, 2016

Uwsgi also uses greenlet. It seems greenlet can work fine but the latest
release does not include the correct wheel

On Thu, Jun 9, 2016, 12:38 jbags81 notifications@github.com wrote:

Im pretty happy with uWSGI. Used it with many different projects
successfully.I've not looked into all of the specifics you guys need to
address though.

Sent from my iPhone
Please excuse my brevity or any typo's

On Jun 9, 2016, at 1:12 PM, Paulus Schoutsen <notifications@github.com
mailto:notifications@github.com> wrote:

So it looks like going to a threaded server will require some hacks to get
websockets working, which is also not preferred.

Greenlet should come with manylinux wheel builds in their next version
0.4.10 but there is not currently a timeline when this is being released:
python-greenlet/greenlet#101<
https://github.com/python-greenlet/greenlet/issues/101>

Manylinux builds work on pretty much all linux builds and will
automatically be installed with pip 8.1+

You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub<
https://github.com/home-assistant/home-assistant/issues/2261#issuecomment-224962958>,
or mute the thread<
https://github.com/notifications/unsubscribe/AJyk-i_zYc6CzhijI-HXwyuf6eeeXvu8ks5qKEmLgaJpZM4IxqAc

.


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
#2261 (comment),
or mute the thread
https://github.com/notifications/unsubscribe/ABYJ2rtr6Rm0L0OUtHNR-tBYWcn4wvBhks5qKGu9gaJpZM4IxqAc
.

@kellerza
Copy link
Member

kellerza commented Jun 9, 2016

On a Centos clean virtualenv, pip install homeassistant hass fails with greenlet error, but it is solved with pip install eventlet (as base requirement) or
REQUIREMENTS = ("eventlet==0.19.0", "static3==0.7.0", "Werkzeug==0.11.5", "greenlet==0.4.9") in http.py which installs in deps

Specifically uninstalled python-devel and gcc for these tests

@kellerza
Copy link
Member

kellerza commented Jun 9, 2016

For Centos there seems to be platform libraries for greenlet though according to pypa/pip#3694 that fixed installing via --target (used by HA's REQUIREMENTS)

Maybe just add greenlet or eventlet as a base requirement for a release or two? (will solve Centos at least)

@balloob
Copy link
Member Author

balloob commented Jun 10, 2016

Yeah that seems reasonable. I'll put eventlet as a base requirement while waiting till pip releases a new version with the fix included.

Once pip has been updated, I'll make that the minimum requirement for HA and so by the time we install eventlet as a http dependency we will have the new pip installed.

@balloob
Copy link
Member Author

balloob commented Jun 10, 2016

#2264 will fix one issue. The other fix we need is to get a greenlet build with the manylinux wheels included.

@balloob
Copy link
Member Author

balloob commented Jun 15, 2016

Greenlet pushed out 0.4.10 which included manylinux wheels, we should no longer require compilation on Linux.

Eventlet depends on greenlet >.3 so we should be fine now.

@balloob balloob closed this as completed Jun 15, 2016
@brownad
Copy link

brownad commented Jun 15, 2016

This still doesn't work using that version of greenlet on a synology dsm

@hokus15
Copy link

hokus15 commented Jun 16, 2016

I also have the same problem with raspi 3

@balloob
Copy link
Member Author

balloob commented Jun 16, 2016

We need to see if we can provide ARM builds for greenlet

On Thu, Jun 16, 2016, 10:55 Jordi notifications@github.com wrote:

I also have the same problem with raspi 3


You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
#2261 (comment),
or mute the thread
https://github.com/notifications/unsubscribe/ABYJ2p-79z5tJ15_B_85ljmU5FtSrWzhks5qMY3ygaJpZM4IxqAc
.

@balloob
Copy link
Member Author

balloob commented Jun 18, 2016

Reopening the issue as we currently do not have a proper solution for ARM builds which includes Raspberry Pi. Manylinux builds only target x86 x64.

@balloob balloob reopened this Jun 18, 2016
@balloob
Copy link
Member Author

balloob commented Sep 28, 2016

We are no longer using eventlet.

@balloob balloob closed this as completed Sep 28, 2016
@home-assistant home-assistant locked and limited conversation to collaborators Mar 17, 2017
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants