anki: move python libraries into 'lib' output

Fixes #438598

Anki's packaging got reworked in
https://github.com/NixOS/nixpkgs/pull/425219, and one of the changes was
to effectively 'pip install' the anki wheel into $out directly.

This resulted in an output structure of '$out/bin' and '$out/lib', with
python files in 'lib'.

Per #438598, this can cause conflicts.

Let's split anki into `anki.out` and `anki.lib`, requiring a user to
specifically include `anki.lib` in their environment in order to hit the
python conflicts described there.

This seems like the easiest solution, though I'm of course open to any
better alternatives.

Euan Kemp f955f2ce d7600c77

Changed files
+10 -5
pkgs
games
+10 -5
pkgs/games/anki/default.nix
···
"out"
"doc"
"man"
+
"lib"
];
inherit src;
···
# And finally build
patchShebangs ./ninja
-
export PYTHONPATH=$PYTHONPATH:$PWD/out/pyenv/lib/python${python3.pythonVersion}/site-packages
+
export PYTHONPATH=$PYTHONPATH:$PWD/out/pyenv/${python3.sitePackages}
# Necessary for yarn to not complain about 'corepack'
jq 'del(.packageManager)' package.json > package.json.tmp && mv package.json.tmp package.json
YARN_BINARY="${lib.getExe noInstallYarn}" PIP_USER=1 \
···
in
''
runHook preCheck
-
export PYTHONPATH=$PYTHONPATH:$PWD/out/pyenv/lib/python${python3.pythonVersion}/site-packages
+
export PYTHONPATH=$PYTHONPATH:$PWD/out/pyenv/${python3.sitePackages}
HOME=$TMP ANKI_TEST_MODE=1 PYTHONPATH=$PYTHONPATH:$PWD/out/pylib \
pytest -p no:cacheprovider pylib/tests -k ${disabledTestsString}
HOME=$TMP ANKI_TEST_MODE=1 PYTHONPATH=$PYTHONPATH:$PWD/out/pylib:$PWD/pylib:$PWD/out/qt \
···
installPhase = ''
runHook preInstall
-
mkdir -p $out
-
uv pip install out/wheels/*.whl --prefix $out
+
mkdir -p $lib $out
+
uv pip install out/wheels/*.whl --prefix $lib
# remove non-anki bins from dependencies
-
find $out/bin -type f ! -name "anki*" -delete
+
find $lib/bin -type f ! -name "anki*" -delete
+
# and put bin into $out so people can access it. Leave $lib separate to avoid collisions, see
+
# https://github.com/NixOS/nixpkgs/issues/438598
+
mv $lib/bin $out/bin
install -D -t $out/share/applications qt/launcher/lin/anki.desktop
install -D -t $doc/share/doc/anki README* LICENSE*
···
makeWrapperArgs+=(
"''${qtWrapperArgs[@]}"
--prefix PATH ':' "${lame}/bin:${mpv-unwrapped}/bin"
+
--prefix PYTHONPATH ':' "$lib/${python3.sitePackages}"
)
'';