about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/admin/pgadmin/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/admin/pgadmin/default.nix')
-rw-r--r--nixpkgs/pkgs/tools/admin/pgadmin/default.nix57
1 files changed, 56 insertions, 1 deletions
diff --git a/nixpkgs/pkgs/tools/admin/pgadmin/default.nix b/nixpkgs/pkgs/tools/admin/pgadmin/default.nix
index beecd6412bcf..117f02a593ba 100644
--- a/nixpkgs/pkgs/tools/admin/pgadmin/default.nix
+++ b/nixpkgs/pkgs/tools/admin/pgadmin/default.nix
@@ -9,6 +9,7 @@
 , yarn
 , fixup_yarn_lock
 , nodejs
+, fetchpatch
 , server-mode ? true
 }:
 
@@ -26,7 +27,61 @@ let
 
   # 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;