summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorSandro <sandro.jaeckel@gmail.com>2021-07-22 03:08:43 +0200
committerGitHub <noreply@github.com>2021-07-22 03:08:43 +0200
commit927edc89c6ccd49754edd298105137cea4521ffe (patch)
tree7f78662032664cdb48e0a9adc3e6a0dd1c916fd1 /pkgs
parent4a72b21ece14aa8cbf52a3cfe28d78e83305cefa (diff)
parentacf6abcafcf0282cbc2ea85e10ce759e5203d445 (diff)
downloadnixpkgs-927edc89c6ccd49754edd298105137cea4521ffe.tar
nixpkgs-927edc89c6ccd49754edd298105137cea4521ffe.tar.gz
nixpkgs-927edc89c6ccd49754edd298105137cea4521ffe.tar.bz2
nixpkgs-927edc89c6ccd49754edd298105137cea4521ffe.tar.lz
nixpkgs-927edc89c6ccd49754edd298105137cea4521ffe.tar.xz
nixpkgs-927edc89c6ccd49754edd298105137cea4521ffe.tar.zst
nixpkgs-927edc89c6ccd49754edd298105137cea4521ffe.zip
Merge pull request #130887 from aanderse/kodi-pythonpath
kodi: set proper PYTHONPATH for addons
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/video/kodi-packages/certifi/default.nix7
-rw-r--r--pkgs/applications/video/kodi-packages/chardet/default.nix7
-rw-r--r--pkgs/applications/video/kodi-packages/dateutil/default.nix7
-rw-r--r--pkgs/applications/video/kodi-packages/idna/default.nix7
-rw-r--r--pkgs/applications/video/kodi-packages/inputstreamhelper/default.nix7
-rw-r--r--pkgs/applications/video/kodi-packages/kodi-six/default.nix7
-rw-r--r--pkgs/applications/video/kodi-packages/myconnpy/default.nix7
-rw-r--r--pkgs/applications/video/kodi-packages/pdfreader/default.nix2
-rw-r--r--pkgs/applications/video/kodi-packages/requests/default.nix7
-rw-r--r--pkgs/applications/video/kodi-packages/signals/default.nix7
-rw-r--r--pkgs/applications/video/kodi-packages/urllib3/default.nix7
-rw-r--r--pkgs/applications/video/kodi-packages/websocket/default.nix7
-rw-r--r--pkgs/applications/video/kodi-packages/youtube/default.nix7
-rw-r--r--pkgs/applications/video/kodi/wrapper.nix17
14 files changed, 76 insertions, 27 deletions
diff --git a/pkgs/applications/video/kodi-packages/certifi/default.nix b/pkgs/applications/video/kodi-packages/certifi/default.nix
index b99a64f3eec..1088f560adf 100644
--- a/pkgs/applications/video/kodi-packages/certifi/default.nix
+++ b/pkgs/applications/video/kodi-packages/certifi/default.nix
@@ -9,8 +9,11 @@ buildKodiAddon rec {
     sha256 = "1z49b8va7wdyr714c8ixb2sldi0igffcjj3xpbmga58ph0z985vy";
   };
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.certifi";
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.certifi";
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi-packages/chardet/default.nix b/pkgs/applications/video/kodi-packages/chardet/default.nix
index cfe3d501cbd..fe482447cfa 100644
--- a/pkgs/applications/video/kodi-packages/chardet/default.nix
+++ b/pkgs/applications/video/kodi-packages/chardet/default.nix
@@ -9,8 +9,11 @@ buildKodiAddon rec {
     sha256 = "1jsd165mb1b8jdan2jbjd3y3xa0xam2cxcccmwazkybpa0r6a7dj";
   };
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.chardet";
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.chardet";
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi-packages/dateutil/default.nix b/pkgs/applications/video/kodi-packages/dateutil/default.nix
index 665858d3d57..54a22cedf90 100644
--- a/pkgs/applications/video/kodi-packages/dateutil/default.nix
+++ b/pkgs/applications/video/kodi-packages/dateutil/default.nix
@@ -14,8 +14,11 @@ buildKodiAddon rec {
     six
   ];
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.dateutil";
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.dateutil";
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi-packages/idna/default.nix b/pkgs/applications/video/kodi-packages/idna/default.nix
index c90f52ffdc9..01f16696fae 100644
--- a/pkgs/applications/video/kodi-packages/idna/default.nix
+++ b/pkgs/applications/video/kodi-packages/idna/default.nix
@@ -9,8 +9,11 @@ buildKodiAddon rec {
     sha256 = "0pm86m8kh2p0brps3xzxcmmabvb4izkglzkj8dsn33br3vlc7cm7";
   };
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.idna";
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.idna";
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi-packages/inputstreamhelper/default.nix b/pkgs/applications/video/kodi-packages/inputstreamhelper/default.nix
index 4ca45f8b7b9..fcf53e7a169 100644
--- a/pkgs/applications/video/kodi-packages/inputstreamhelper/default.nix
+++ b/pkgs/applications/video/kodi-packages/inputstreamhelper/default.nix
@@ -9,8 +9,11 @@ buildKodiAddon rec {
     sha256 = "0y4xn3ygwv1kb7gya7iwdga0g9sa89snpnram0wwqzqn8wn2lyb4";
   };
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.inputstreamhelper";
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.inputstreamhelper";
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi-packages/kodi-six/default.nix b/pkgs/applications/video/kodi-packages/kodi-six/default.nix
index b4f1169b36d..24404ef349e 100644
--- a/pkgs/applications/video/kodi-packages/kodi-six/default.nix
+++ b/pkgs/applications/video/kodi-packages/kodi-six/default.nix
@@ -10,8 +10,11 @@ buildKodiAddon rec {
     sha256 = "14m232p9hx925pbk8knsg994m1nbpa5278zmcrnfblh4z84gjv4x";
   };
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.kodi-six";
+  passthru = {
+    pythonPath = "libs";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.kodi-six";
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi-packages/myconnpy/default.nix b/pkgs/applications/video/kodi-packages/myconnpy/default.nix
index bd0c98137a5..e39625545f6 100644
--- a/pkgs/applications/video/kodi-packages/myconnpy/default.nix
+++ b/pkgs/applications/video/kodi-packages/myconnpy/default.nix
@@ -9,8 +9,11 @@ buildKodiAddon rec {
     sha256 = "1cx3qdzw9lkkmbyvyrmc2i193is20fihn2sfl7kmv43f708vam0k";
   };
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.myconnpy";
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.myconnpy";
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi-packages/pdfreader/default.nix b/pkgs/applications/video/kodi-packages/pdfreader/default.nix
index 8896a94c9c3..62a5853c796 100644
--- a/pkgs/applications/video/kodi-packages/pdfreader/default.nix
+++ b/pkgs/applications/video/kodi-packages/pdfreader/default.nix
@@ -11,6 +11,8 @@ buildKodiAddon rec {
     sha256 = "0nkqhlm1gyagq6xpdgqvd5qxyr2ngpml9smdmzfabc8b972mwjml";
   };
 
+  passthru.pythonPath = "lib/api";
+
   meta = with lib; {
     homepage = "https://forum.kodi.tv/showthread.php?tid=187421";
     description = "A comic book reader";
diff --git a/pkgs/applications/video/kodi-packages/requests/default.nix b/pkgs/applications/video/kodi-packages/requests/default.nix
index 0f2d5044f04..c5759fcc325 100644
--- a/pkgs/applications/video/kodi-packages/requests/default.nix
+++ b/pkgs/applications/video/kodi-packages/requests/default.nix
@@ -16,8 +16,11 @@ buildKodiAddon rec {
     urllib3
   ];
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.requests";
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.requests";
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi-packages/signals/default.nix b/pkgs/applications/video/kodi-packages/signals/default.nix
index bba7b112e9f..b66b1e99a8b 100644
--- a/pkgs/applications/video/kodi-packages/signals/default.nix
+++ b/pkgs/applications/video/kodi-packages/signals/default.nix
@@ -9,8 +9,11 @@ buildKodiAddon rec {
     sha256 = "1qcjbakch8hvx02wc01zv014nmzgn6ahc4n2bj5mzr114ppd3hjs";
   };
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.signals";
+  passthru= {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.signals";
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi-packages/urllib3/default.nix b/pkgs/applications/video/kodi-packages/urllib3/default.nix
index 12d8e60d67b..de0fbb99765 100644
--- a/pkgs/applications/video/kodi-packages/urllib3/default.nix
+++ b/pkgs/applications/video/kodi-packages/urllib3/default.nix
@@ -9,8 +9,11 @@ buildKodiAddon rec {
     sha256 = "1d2k6gbsnhdadcl1xc7igz4m71z2fcnpln5ppfjv455cmkk110vf";
   };
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.urllib3";
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.urllib3";
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi-packages/websocket/default.nix b/pkgs/applications/video/kodi-packages/websocket/default.nix
index 3c83e1f9b00..423dfa73f34 100644
--- a/pkgs/applications/video/kodi-packages/websocket/default.nix
+++ b/pkgs/applications/video/kodi-packages/websocket/default.nix
@@ -14,8 +14,11 @@ buildKodiAddon rec {
     six
   ];
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.websocket";
+  passthru = {
+    pythonPath = "lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.websocket";
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi-packages/youtube/default.nix b/pkgs/applications/video/kodi-packages/youtube/default.nix
index 65613658e0f..8e57adbfb1a 100644
--- a/pkgs/applications/video/kodi-packages/youtube/default.nix
+++ b/pkgs/applications/video/kodi-packages/youtube/default.nix
@@ -16,8 +16,11 @@ buildKodiAddon rec {
     inputstreamhelper
   ];
 
-  passthru.updateScript = addonUpdateScript {
-    attrPath = "kodi.packages.youtube";
+  passthru = {
+    pythonPath = "resources/lib";
+    updateScript = addonUpdateScript {
+      attrPath = "kodi.packages.youtube";
+    };
   };
 
   meta = with lib; {
diff --git a/pkgs/applications/video/kodi/wrapper.nix b/pkgs/applications/video/kodi/wrapper.nix
index 86164682138..7377e638676 100644
--- a/pkgs/applications/video/kodi/wrapper.nix
+++ b/pkgs/applications/video/kodi/wrapper.nix
@@ -1,8 +1,19 @@
-{ lib, makeWrapper, buildEnv, kodi, addons }:
+{ lib, makeWrapper, buildEnv, kodi, addons, callPackage }:
 
 let
+  kodiPackages = callPackage ../../../top-level/kodi-packages.nix { inherit kodi; };
+
   # linux distros are supposed to provide pillow and pycryptodome
-  requiredPythonPackages = with kodi.pythonPackages; [ pillow pycryptodome] ++ addons;
+  requiredPythonPath = with kodi.pythonPackages; makePythonPath ([ pillow pycryptodome ]);
+
+  # each kodi addon can potentially export a python module which should be included in PYTHONPATH
+  # see any addon which supplies `passthru.pythonPath` and the corresponding entry in the addons `addon.xml`
+  # eg. `<extension point="xbmc.python.module" library="lib" />` -> pythonPath = "lib";
+  additionalPythonPath =
+    let
+      addonsWithPythonPath = lib.filter (addon: addon ? pythonPath) addons;
+    in
+      lib.concatMapStringsSep ":" (addon: "${addon}${kodiPackages.addonDir}/${addon.namespace}/${addon.pythonPath}") addonsWithPythonPath;
 in
 
 buildEnv {
@@ -18,7 +29,7 @@ buildEnv {
     for exe in kodi{,-standalone}
     do
       makeWrapper ${kodi}/bin/$exe $out/bin/$exe \
-        --prefix PYTHONPATH : ${kodi.pythonPackages.makePythonPath requiredPythonPackages} \
+        --prefix PYTHONPATH : ${requiredPythonPath}:${additionalPythonPath} \
         --prefix KODI_HOME : $out/share/kodi \
         --prefix LD_LIBRARY_PATH ":" "${lib.makeLibraryPath
           (lib.concatMap