Hi,
An upgrade to py-CherryPy broke the webserver feature of
games/mnemosyne.
Mnemosyne used the wsgiserver from py-CherryPy which was moved to
py-cheroot. As far as I could tell, that was the only use of py-CherryPy
in Mnemosyne codebase.
The attached patch replace the depency from py-CherryPy to py-cheroot
and update the two uses accordingly.
I was able to use the webserver and sync features with my own database.
NB: I tried to upgrade mnemosyne to the latest version but it uses
QtWebEngine from qt5 which isn't provided. education/anki, suffers from
the same issue. :(
Best,
diff --git games/mnemosyne/Makefile games/mnemosyne/Makefile
index f95d9bcef0b..2229784eb2b 100644
--- games/mnemosyne/Makefile
+++ games/mnemosyne/Makefile
@@ -6,7 +6,7 @@ MODPY_EGG_VERSION = 2.3.6
DISTNAME= Mnemosyne-${MODPY_EGG_VERSION}
PKGNAME= ${DISTNAME:L}
CATEGORIES= games education
-REVISION= 2
+REVISION= 3
HOMEPAGE= http://www.mnemosyne-proj.org/
@@ -23,7 +23,7 @@ RUN_DEPENDS= x11/py-qt4 \
textproc/py-xml \
graphics/py-Pillow \
graphics/py-matplotlib \
- www/py-CherryPy \
+ www/py-cheroot \
www/py-webob>=1.3.1 \
devel/desktop-file-utils
diff --git games/mnemosyne/patches/patch-mnemosyne_web_server_web_server_py games/mnemosyne/patches/patch-mnemosyne_web_server_web_server_py
new file mode 100644
index 00000000000..afca852192d
--- /dev/null
+++ games/mnemosyne/patches/patch-mnemosyne_web_server_web_server_py
@@ -0,0 +1,23 @@
+$OpenBSD$
+
+Index: mnemosyne/web_server/web_server.py
+--- mnemosyne/web_server/web_server.py.orig
++++ mnemosyne/web_server/web_server.py
+@@ -13,7 +13,7 @@ import threading
+ from webob import Request
+ from webob.static import FileApp
+
+-from cherrypy import wsgiserver
++from cheroot import wsgi
+
+ from mnemosyne.libmnemosyne import Mnemosyne
+ from mnemosyne.libmnemosyne.utils import localhost_IP
+@@ -69,7 +69,7 @@ class WebServer(Component):
+ self.is_just_started = True
+ self.is_mnemosyne_loaded = False
+ self.is_shutting_down = False
+- self.wsgi_server = wsgiserver.CherryPyWSGIServer(\
++ self.wsgi_server = wsgi.Server(\
+ ("0.0.0.0", port), self.wsgi_app, server_name="localhost",
+ numthreads=1, timeout=5)
+ # We need to set the timeout relatively low, otherwise it will take
diff --git games/mnemosyne/patches/patch-openSM2sync_server_py games/mnemosyne/patches/patch-openSM2sync_server_py
new file mode 100644
index 00000000000..d18d37e89de
--- /dev/null
+++ games/mnemosyne/patches/patch-openSM2sync_server_py
@@ -0,0 +1,16 @@
+$OpenBSD$
+
+Index: openSM2sync/server.py
+--- openSM2sync/server.py.orig
++++ openSM2sync/server.py
+@@ -105,8 +105,8 @@ class Server(Partner):
+ self.machine_id = machine_id
+ # We only use 1 thread, such that subsequent requests don't run into
+ # SQLite access problems.
+- from cherrypy import wsgiserver
+- self.wsgi_server = wsgiserver.CherryPyWSGIServer\
++ from cheroot import wsgi
++ self.wsgi_server = wsgi.Server\
+ (("0.0.0.0", port), self.wsgi_app, server_name="localhost",
+ numthreads=1, timeout=1000)
+ Partner.__init__(self, ui)
diff --git games/mnemosyne/patches/patch-setup_py games/mnemosyne/patches/patch-setup_py
index 11a099c56eb..dc6fac2e5c7 100644
--- games/mnemosyne/patches/patch-setup_py
+++ games/mnemosyne/patches/patch-setup_py
@@ -1,6 +1,7 @@
$OpenBSD: patch-setup_py,v 1.5 2014/07/09 13:36:24 bcallah Exp $
---- setup.py.orig Mon Jul 7 18:57:46 2014
-+++ setup.py Mon Jul 7 18:58:02 2014
+Index: setup.py
+--- setup.py.orig
++++ setup.py
@@ -125,8 +125,7 @@ elif sys.platform == "darwin": # For py2app.
else:
base_path = os.path.join(sys.exec_prefix, "lib", "python" + sys.version[:3],
@@ -11,3 +12,12 @@ $OpenBSD: patch-setup_py,v 1.5 2014/07/09 13:36:24 bcallah Exp $
# Translations.
if sys.platform == "win32":
for mo in [x for x in glob.glob(os.path.join("mo", "*")) \
+@@ -155,7 +154,7 @@ setup_requires = []
+
+ py2app_options = {
+ "argv_emulation": True,
+-"includes": "sip,numpy,cherrypy,cPickle,md5,logging,shutil,xml.sax",
++"includes": "sip,numpy,cheroot,cPickle,md5,logging,shutil,xml.sax",
+ "iconfile": "pixmaps/mnemosyne.icns",
+ "qt_plugins": ["sqldrivers", "imageformats"],
+ "packages": "mnemosyne, mnemosyne.pyqt_ui, mnemosyne.libmnemosyne, \