From 98aa7e8973b989a4b984c19e2e66187dc1810054 Mon Sep 17 00:00:00 2001 From: Theodore Ni <3806110+tjni@users.noreply.github.com> Date: Sat, 5 Aug 2023 12:20:01 -0700 Subject: [PATCH] dt-schema, python3.pkgs.dtschema: handle jsonschema incompatibility 1. dt-schema is an application, so it can pin jsonschema to 4.17 2. mark python3.pkgs.dtschema broken with jsonschema > 4.17 3. mark python3.pkgs.dtschema broken on darwin --- .../python-modules/dtschema/default.nix | 11 ++++++- pkgs/development/tools/dt-schema/default.nix | 30 +++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 +- 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 pkgs/development/tools/dt-schema/default.nix diff --git a/pkgs/development/python-modules/dtschema/default.nix b/pkgs/development/python-modules/dtschema/default.nix index 5944a7760841..1e890aba3309 100644 --- a/pkgs/development/python-modules/dtschema/default.nix +++ b/pkgs/development/python-modules/dtschema/default.nix @@ -1,4 +1,5 @@ -{ lib +{ stdenv +, lib , buildPythonPackage , fetchFromGitHub , jsonschema @@ -54,6 +55,14 @@ buildPythonPackage rec { changelog = "https://github.com/devicetree-org/dt-schema/releases/tag/v${version}"; license = with licenses; [ bsd2 /* or */ gpl2Only ]; maintainers = with maintainers; [ sorki ]; + + broken = ( + # Library not loaded: @rpath/libfdt.1.dylib + stdenv.isDarwin || + + # see https://github.com/devicetree-org/dt-schema/issues/108 + versionAtLeast jsonschema.version "4.18" + ); }; } diff --git a/pkgs/development/tools/dt-schema/default.nix b/pkgs/development/tools/dt-schema/default.nix new file mode 100644 index 000000000000..5736d301b32d --- /dev/null +++ b/pkgs/development/tools/dt-schema/default.nix @@ -0,0 +1,30 @@ +{ lib +, python3 +}: + +let python = python3.override { + packageOverrides = self: super: { + # see https://github.com/devicetree-org/dt-schema/issues/108 + jsonschema = super.jsonschema.overridePythonAttrs (old: rec { + version = "4.17.3"; + disabled = self.pythonOlder "3.7"; + + src = old.src.override { + inherit version; + hash = "sha256-D4ZEN6uLYHa6ZwdFPvj5imoNUSqA6T+KvbZ29zfstg0="; + }; + + propagatedBuildInputs = with self; ([ + attrs + pyrsistent + ] ++ lib.optionals (pythonOlder "3.8") [ + importlib-metadata + typing-extensions + ] ++ lib.optionals (pythonOlder "3.9") [ + importlib-resources + pkgutil-resolve-name + ]); + }); + }; +}; in python.pkgs.toPythonApplication python.pkgs.dtschema + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 0b8602a5b0cb..b1ad530278d1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7396,7 +7396,7 @@ with pkgs; dtc = callPackage ../development/compilers/dtc { }; - dt-schema = with python3Packages; toPythonApplication dtschema; + dt-schema = callPackage ../development/tools/dt-schema { }; dub = callPackage ../development/tools/build-managers/dub { };