kodi: set proper PYTHONPATH for addons

This commit is contained in:
Aaron Andersen 2021-07-20 19:58:09 -04:00
parent 20117e607d
commit acf6abcafc
14 changed files with 76 additions and 27 deletions

View file

@ -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; {

View file

@ -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; {

View file

@ -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; {

View file

@ -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; {

View file

@ -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; {

View file

@ -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; {

View file

@ -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; {

View file

@ -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";

View file

@ -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; {

View file

@ -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; {

View file

@ -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; {

View file

@ -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; {

View file

@ -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; {

View file

@ -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