summary refs log tree commit diff
path: root/pkgs/tools/admin/pgadmin/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/tools/admin/pgadmin/default.nix')
-rw-r--r--pkgs/tools/admin/pgadmin/default.nix65
1 files changed, 60 insertions, 5 deletions
diff --git a/pkgs/tools/admin/pgadmin/default.nix b/pkgs/tools/admin/pgadmin/default.nix
index 3040258c0ca..117f02a593b 100644
--- a/pkgs/tools/admin/pgadmin/default.nix
+++ b/pkgs/tools/admin/pgadmin/default.nix
@@ -9,28 +9,83 @@
 , yarn
 , fixup_yarn_lock
 , nodejs
+, fetchpatch
 , server-mode ? true
 }:
 
 let
   pname = "pgadmin";
-  version = "7.5";
-  yarnSha256 = "sha256-rEKMUZksmR2jPwtXy6drNwAJktK/3Dee6EZVFHPngWs=";
+  version = "7.7";
+  yarnHash = "sha256-8EbbyZHodrYz4a2IYuIWYGutqvrjauSv34o9KFvR/6c=";
 
   src = fetchFromGitHub {
     owner = "pgadmin-org";
     repo = "pgadmin4";
     rev = "REL-${lib.versions.major version}_${lib.versions.minor version}";
-    hash = "sha256-o8jPqp4jLF/lZ0frCzPDCSxCy51Nt0mbdeNB44ZwNHI=";
+    hash = "sha256-+KD05hzghNFpuw2xW3NUVyKwspCUO9fyJgMPzYk1Xt8=";
   };
 
   # keep the scope, as it is used throughout the derivation and tests
   # this also makes potential future overrides easier
-  pythonPackages = python3.pkgs.overrideScope (final: prev: rec { });
+  pythonPackages = python3.pkgs.overrideScope (final: prev: rec {
+    # pgadmin 7.8 is incompatible with Flask >= 2.3
+    flask = prev.flask.overridePythonAttrs (oldAttrs: rec {
+      version = "2.2.5";
+      src = oldAttrs.src.override {
+        pname = "Flask";
+        inherit version;
+        hash = "sha256-7e6bCn/yZiG9WowQ/0hK4oc3okENmbC7mmhQx/uXeqA=";
+      };
+      format = "setuptools";
+    });
+    # downgrade needed for older Flask
+    httpbin = prev.httpbin.overridePythonAttrs (oldAttrs: rec {
+      version = "0.7.0";
+      src = oldAttrs.src.override {
+        inherit version;
+        hash = "sha256-y7N3kMkVdfTxV1f0KtQdn3KesifV7b6J5OwXVIbbjfo=";
+      };
+      format = "setuptools";
+      patches = [
+        (fetchpatch {
+          # Replaces BaseResponse class with Response class for Werkezug 2.1.0 compatibility
+          # https://github.com/postmanlabs/httpbin/pull/674
+          url = "https://github.com/postmanlabs/httpbin/commit/5cc81ce87a3c447a127e4a1a707faf9f3b1c9b6b.patch";
+          hash = "sha256-SbEWjiqayMFYrbgAPZtSsXqSyCDUz3z127XgcKOcrkE=";
+        })
+      ];
+      pytestFlagsArray = [
+        "test_httpbin.py"
+      ];
+      propagatedBuildInputs = oldAttrs.propagatedBuildInputs ++ [ final.pythonPackages.brotlipy ];
+    });
+    # downgrade needed for older httpbin
+    werkzeug = prev.werkzeug.overridePythonAttrs (oldAttrs: rec {
+      version = "2.2.3";
+      format = "setuptools";
+      src = oldAttrs.src.override {
+        pname = "Werkzeug";
+        inherit version;
+        hash = "sha256-LhzMlBfU2jWLnebxdOOsCUOR6h1PvvLWZ4ZdgZ39Cv4=";
+      };
+    });
+    # Downgrade needed for older Flask
+    flask-security-too = prev.flask-security-too.overridePythonAttrs (oldAttrs: rec {
+      version = "5.1.2";
+      src = oldAttrs.src.override {
+        inherit version;
+        hash = "sha256-lZzm43m30y+2qjxNddFEeg9HDlQP9afq5VtuR25zaLc=";
+      };
+      postPatch = ''
+        # This should be removed after updating to version 5.3.0.
+        sed -i '/filterwarnings =/a ignore:pkg_resources is deprecated:DeprecationWarning' pytest.ini
+      '';
+    });
+  });
 
   offlineCache = fetchYarnDeps {
     yarnLock = ./yarn.lock;
-    hash = yarnSha256;
+    hash = yarnHash;
   };
 
 in