forked from pool/pgadmin4
- Add a vendor.tar.xz source package with node modules that have to be downloaded in the developer workstation since otherwise they won't be able to get downloaded in the build service. - Add an update-vendor.sh script that updates (actually, recreates) the vendor.tar.xz package. This should be run manually with each package update. - Remove obsoleted file pgadmin4.qt.conf.in which hasn't been used at all for some time. - Add patch to set the environment variable EVENTLET_NO_GREENDNS which fixes pgadmin4 to build successfully with eventlet 0.33.3, httpcore 0.17.1 and httpx 0.24.0: * fix-eventlet-select_epoll.patch - Merged pgadmin4-web subpackage into the main pgadmin4 package which now installs the pgAdmin4 server. - Create new pgadmin4-desktop subpackage that includes a very small python script I wrote that starts the pgadmin4 server in runtime mode (as a regular user) and provides a system tray icon so users can open new windows and quit the server with a UI since the alternative (using the official pgAdmin4 runtime application would require providing a full node.js modules tree and using NW.js for the ui). - Fix .desktop file which was now moved to the pgadmin4-desktop subpackage. The "Encoding" key is deprecated so it has been removed, only one main category is now used in the Categories key and the path to the icon was fixed. - Update to 7.8 * Supported Database Servers - PostgreSQL: 12, 13, 14, 15, and 16 - EDB Advanced Server: 12, 13, 14 and 15 OBS-URL: https://build.opensuse.org/request/show/1120781 OBS-URL: https://build.opensuse.org/package/show/server:database:postgresql/pgadmin4?expand=0&rev=57
82 lines
4.9 KiB
Diff
82 lines
4.9 KiB
Diff
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.
|