File fix-eventlet-select_epoll.patch of Package pgadmin4

pgAdmin4 fails to build with eventlet 0.33.3, httpcore 0.17.1 and httpx 0.24.0
with the error:

[   12s] + python3 ../pkg/pip/setup_pip.py bdist_wheel
[   13s] Traceback (most recent call last):
[   13s]   File "/home/abuild/rpmbuild/BUILD/pgadmin4-7.6/pip-build/../pkg/pip/setup_pip.py", line 56, in <module>
[   13s]     import config
[   13s]   File "/home/abuild/rpmbuild/BUILD/pgadmin4-7.6/pip-build/../web/config.py", line 32, in <module>
[   13s]     from pgadmin.utils import env, IS_WIN, fs_short_path
[   13s]   File "/home/abuild/rpmbuild/BUILD/pgadmin4-7.6/web/pgadmin/__init__.py", line 25, in <module>
[   13s]     from flask_socketio import SocketIO
[   13s]   File "/usr/lib/python3.11/site-packages/flask_socketio/__init__.py", line 9, in <module>
[   13s]     from socketio import socketio_manage  # noqa: F401
[   13s]     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[   13s]   File "/usr/lib/python3.11/site-packages/socketio/__init__.py", line 9, in <module>
[   13s]     from .zmq_manager import ZmqManager
[   13s]   File "/usr/lib/python3.11/site-packages/socketio/zmq_manager.py", line 5, in <module>
[   13s]     import eventlet.green.zmq as zmq
[   13s]   File "/usr/lib/python3.11/site-packages/eventlet/__init__.py", line 17, in <module>
[   13s]     from eventlet import convenience
[   13s]   File "/usr/lib/python3.11/site-packages/eventlet/convenience.py", line 7, in <module>
[   13s]     from eventlet.green import socket
[   13s]   File "/usr/lib/python3.11/site-packages/eventlet/green/socket.py", line 21, in <module>
[   13s]     from eventlet.support import greendns
[   13s]   File "/usr/lib/python3.11/site-packages/eventlet/support/greendns.py", line 79, in <module>
[   13s]     setattr(dns, pkg, import_patched('dns.' + pkg))
[   13s]                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[   13s]   File "/usr/lib/python3.11/site-packages/eventlet/support/greendns.py", line 61, in import_patched
[   13s]     return patcher.import_patched(module_name, **modules)
[   13s]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[   13s]   File "/usr/lib/python3.11/site-packages/eventlet/patcher.py", line 132, in import_patched
[   13s]     return inject(
[   13s]            ^^^^^^^
[   13s]   File "/usr/lib/python3.11/site-packages/eventlet/patcher.py", line 109, in inject
[   13s]     module = __import__(module_name, {}, {}, module_name.split('.')[:-1])
[   13s]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[   13s]   File "/usr/lib/python3.11/site-packages/dns/asyncquery.py", line 38, in <module>
[   13s]     from dns.query import (
[   13s]   File "/usr/lib/python3.11/site-packages/dns/query.py", line 63, in <module>
[   13s]     import httpcore
[   13s]   File "/usr/lib/python3.11/site-packages/httpcore/__init__.py", line 1, in <module>
[   13s]     from ._api import request, stream
[   13s]   File "/usr/lib/python3.11/site-packages/httpcore/_api.py", line 5, in <module>
[   13s]     from ._sync.connection_pool import ConnectionPool
[   13s]   File "/usr/lib/python3.11/site-packages/httpcore/_sync/__init__.py", line 1, in <module>
[   13s]     from .connection import HTTPConnection
[   13s]   File "/usr/lib/python3.11/site-packages/httpcore/_sync/connection.py", line 12, in <module>
[   13s]     from .._synchronization import Lock
[   13s]   File "/usr/lib/python3.11/site-packages/httpcore/_synchronization.py", line 13, in <module>
[   13s]     import trio
[   13s]   File "/usr/lib/python3.11/site-packages/trio/__init__.py", line 18, in <module>
[   13s]     from ._core import (
[   13s]   File "/usr/lib/python3.11/site-packages/trio/_core/__init__.py", line 27, in <module>
[   13s]     from ._run import (
[   13s]   File "/usr/lib/python3.11/site-packages/trio/_core/_run.py", line 2452, in <module>
[   13s]     from ._io_epoll import EpollIOManager as TheIOManager
[   13s]   File "/usr/lib/python3.11/site-packages/trio/_core/_io_epoll.py", line 188, in <module>
[   13s]     class EpollIOManager:
[   13s]   File "/usr/lib/python3.11/site-packages/trio/_core/_io_epoll.py", line 189, in EpollIOManager
[   13s]     _epoll = attr.ib(factory=select.epoll)
[   13s]                              ^^^^^^^^^^^^
[   13s] AttributeError: module 'eventlet.green.select' has no attribute 'epoll'
[   13s] error: Bad exit status from /var/tmp/rpm-tmp.ElnKCg (%build)

Setting the environment variable EVENTLET_NO_GREENDNS works around
this while the upstream issue is fixed:

https://github.com/eventlet/eventlet/issues/805

Index: pgadmin4-7.8/web/pgAdmin4.py
===================================================================
--- pgadmin4-7.8.orig/web/pgAdmin4.py
+++ pgadmin4-7.8/web/pgAdmin4.py
@@ -20,6 +20,7 @@ if sys.version_info < (3, 4):
                        'or later.')
 import builtins
 import os
+os.environ['EVENTLET_NO_GREENDNS'] = 'yes'
 
 # We need to include the root directory in sys.path to ensure that we can
 # find everything we need when running in the standalone runtime.
openSUSE Build Service is sponsored by