about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNick Cao <nickcao@nichi.co>2023-09-16 08:41:37 -0400
committerGitHub <noreply@github.com>2023-09-16 08:41:37 -0400
commit990398921f677615c0732d704857484b84c6c888 (patch)
tree6207f2b616900b6846089250ec7a52ac76e0cbd3
parentcf726895756bde3d339911cb8635b848f3d6bb69 (diff)
parentc53fc9a1e40b0b75e2a78497851488fc1d3b6aa7 (diff)
Merge pull request #253564 from renesat/submit/calibre-web
calibre-web: fix static environ method in tornado
-rw-r--r--pkgs/servers/calibre-web/default.nix2
-rw-r--r--pkgs/servers/calibre-web/static_environ.patch25
2 files changed, 27 insertions, 0 deletions
diff --git a/pkgs/servers/calibre-web/default.nix b/pkgs/servers/calibre-web/default.nix
index 607ced4606ff4..70f2287c83e70 100644
--- a/pkgs/servers/calibre-web/default.nix
+++ b/pkgs/servers/calibre-web/default.nix
@@ -63,6 +63,8 @@ python.pkgs.buildPythonApplication rec {
     # and exit. This is gonna be used to configure calibre-web declaratively, as most of its configuration parameters
     # are stored in the DB.
     ./db-migrations.patch
+    # environ in tornado.wsgi.WSGIContainer no longer a static method from 6.3 version
+    ./static_environ.patch
   ];
 
   # calibre-web doesn't follow setuptools directory structure. The following is taken from the script
diff --git a/pkgs/servers/calibre-web/static_environ.patch b/pkgs/servers/calibre-web/static_environ.patch
new file mode 100644
index 0000000000000..4f94283a4e664
--- /dev/null
+++ b/pkgs/servers/calibre-web/static_environ.patch
@@ -0,0 +1,25 @@
+diff --git a/cps/tornado_wsgi.py b/cps/tornado_wsgi.py
+index af93219c..cf302042 100644
+--- a/cps/tornado_wsgi.py
++++ b/cps/tornado_wsgi.py
+@@ -53,7 +53,7 @@ class MyWSGIContainer(WSGIContainer):
+             return response.append
+ 
+         app_response = self.wsgi_application(
+-            MyWSGIContainer.environ(request), start_response
++            self.environ(request), start_response
+         )
+         try:
+             response.extend(app_response)
+@@ -86,9 +86,8 @@ class MyWSGIContainer(WSGIContainer):
+         request.connection.finish()
+         self._log(status_code, request)
+ 
+-    @staticmethod
+-    def environ(request: httputil.HTTPServerRequest) -> Dict[Text, Any]:
+-        environ = WSGIContainer.environ(request)
++    def environ(self, request: httputil.HTTPServerRequest) -> Dict[Text, Any]:
++        environ = super().environ(request)
+         environ['RAW_URI'] = request.path
+         return environ
+