Unverified Commit 5831972d authored by Martin Weinelt's avatar Martin Weinelt
Browse files

frigate: pin to python3.11, support mpl 3.9.0

and backport a patch that prevents crashes if /run/secrets exists, but
is unaccessible to frigate.

Closes: #325228
parent 51784107
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
{ lib
, callPackage
, python3
, python311
, fetchFromGitHub
, fetchurl
, fetchpatch2
@@ -23,7 +23,7 @@ let
    inherit version src;
  };

  python = python3.override {
  python = python311.override {
    packageOverrides = self: super: {
      pydantic = super.pydantic_1;

@@ -71,6 +71,14 @@ python.pkgs.buildPythonApplication rec {
      url = "https://github.com/blakeblackshear/frigate/commit/b65656fa8733c1c2f3d944f716d2e9493ae7c99f.patch";
      hash = "sha256-taPWFV4PldBGUKAwFMKag4W/3TLMSGdKLYG8bj1Y5mU=";
    })
    (fetchpatch2 {
      # https://github.com/blakeblackshear/frigate/pull/10097
      name = "frigate-secrets-permissionerror.patch";
      url = "https://github.com/blakeblackshear/frigate/commit/a1424bad6c0163e790129ade7a9784514d0bf89d.patch";
      hash = "sha256-/kIy4aW9o5AKHJQfCDVY46si+DKaUb+CsZsCGIbXvUQ=";
    })
    # https://github.com/blakeblackshear/frigate/pull/12324
    ./mpl-3.9.0.patch
  ];

  postPatch = ''
+42 −0
Original line number Diff line number Diff line
From fba8cff13186bd80ceaa06806392957598139deb Mon Sep 17 00:00:00 2001
From: Martin Weinelt <hexa@darmstadt.ccc.de>
Date: Sun, 7 Jul 2024 14:23:29 +0200
Subject: [PATCH] Fix colormap usage with matplotlib 3.9.0

The mpl.cm toplevel registration has been removed.

https://matplotlib.org/stable/api/prev_api_changes/api_changes_3.9.0.html#top-level-cmap-registration-and-access-functions-in-mpl-cm
---
 frigate/config.py                    | 2 +-
 frigate/detectors/detector_config.py | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/frigate/config.py b/frigate/config.py
index 2e8b2570..af4f3263 100644
--- a/frigate/config.py
+++ b/frigate/config.py
@@ -807,7 +807,7 @@ class CameraConfig(FrigateBaseModel):
     def __init__(self, **config):
         # Set zone colors
         if "zones" in config:
-            colors = plt.cm.get_cmap("tab10", len(config["zones"]))
+            colors = plt.colormaps["tab10"].resampled(len(config["zones"]))
             config["zones"] = {
                 name: {**z, "color": tuple(round(255 * c) for c in colors(idx)[:3])}
                 for idx, (name, z) in enumerate(config["zones"].items())
diff --git a/frigate/detectors/detector_config.py b/frigate/detectors/detector_config.py
index 7fc958a3..b65631eb 100644
--- a/frigate/detectors/detector_config.py
+++ b/frigate/detectors/detector_config.py
@@ -125,7 +125,7 @@ class ModelConfig(BaseModel):
 
     def create_colormap(self, enabled_labels: set[str]) -> None:
         """Get a list of colors for enabled labels."""
-        cmap = plt.cm.get_cmap("tab10", len(enabled_labels))
+        cmap = plt.colormaps["tab10"].resampled(len(enabled_labels))
 
         for key, val in enumerate(enabled_labels):
             self._colormap[val] = tuple(int(round(255 * c)) for c in cmap(key)[:3])
-- 
2.45.1