diff --git a/pkgs/games/anki/Cargo.lock b/pkgs/games/anki/Cargo.lock index 9219317f2cea..17fb6f4a894c 100644 --- a/pkgs/games/anki/Cargo.lock +++ b/pkgs/games/anki/Cargo.lock @@ -5581,9 +5581,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.34" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", @@ -5602,9 +5602,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ "num-conv", "time-core", diff --git a/pkgs/games/anki/default.nix b/pkgs/games/anki/default.nix index 88e4bfa8f470..6abe8ea7c9e1 100644 --- a/pkgs/games/anki/default.nix +++ b/pkgs/games/anki/default.nix @@ -1,41 +1,42 @@ -{ lib -, stdenv +{ + lib, + stdenv, -, buildEnv -, cargo -, fetchFromGitHub -, fetchYarnDeps -, installShellFiles -, lame -, mpv-unwrapped -, ninja -, nixosTests -, nodejs -, nodejs-slim -, fixup-yarn-lock -, protobuf -, python3 -, qt6 -, rsync -, rustPlatform -, writeShellScriptBin -, yarn + buildEnv, + cargo, + fetchFromGitHub, + fetchYarnDeps, + installShellFiles, + lame, + mpv-unwrapped, + ninja, + nixosTests, + nodejs, + nodejs-slim, + fixup-yarn-lock, + protobuf, + python3, + qt6, + rsync, + rustPlatform, + writeShellScriptBin, + yarn, -, AVKit -, CoreAudio -, swift + AVKit, + CoreAudio, + swift, }: let pname = "anki"; - version = "24.06.2"; - rev = "33a923797afc9655c3b4f79847e1705a1f998d03"; + version = "24.06.3"; + rev = "d678e39350a2d243242a69f4e22f5192b04398f2"; src = fetchFromGitHub { owner = "ankitects"; repo = "anki"; rev = version; - hash = "sha256-jn8MxyDPVk36neHyiuvwOQQ+x7x4JPOR8BnNutTRmnY="; + hash = "sha256-ap8WFDDSGonk5kgXXIsADwAwd7o6Nsy6Wxsa7r1iUIM="; fetchSubmodules = true; }; @@ -50,12 +51,10 @@ let yarnOfflineCache = fetchYarnDeps { yarnLock = "${src}/yarn.lock"; - hash = "sha256-wyrVoaDdCkSe5z6C7EAw04G87s6tQ1cfc2d6ygGU0DM="; + hash = "sha256-Dbd7RtE0td7li7oqPPfBmAsbXPM8ed9NTAhM5gytpG8="; }; - anki-build-python = python3.withPackages (ps: with ps; [ - mypy-protobuf - ]); + anki-build-python = python3.withPackages (ps: with ps; [ mypy-protobuf ]); # anki shells out to git to check its revision, and also to update submodules # We don't actually need the submodules, so we stub that out @@ -122,7 +121,11 @@ in python3.pkgs.buildPythonApplication { inherit pname version; - outputs = [ "out" "doc" "man" ]; + outputs = [ + "out" + "doc" + "man" + ]; inherit src; @@ -130,6 +133,8 @@ python3.pkgs.buildPythonApplication { ./patches/disable-auto-update.patch ./patches/remove-the-gl-library-workaround.patch ./patches/skip-formatting-python-code.patch + # Also remove from anki/sync-server.nix on next update + ./patches/Cargo.lock-update-time-for-rust-1.80.patch ]; inherit cargoDeps yarnOfflineCache; @@ -152,68 +157,82 @@ python3.pkgs.buildPythonApplication { qt6.qtsvg ] ++ lib.optional stdenv.isLinux qt6.qtwayland; - propagatedBuildInputs = with python3.pkgs; [ - # This rather long list came from running: - # grep --no-filename -oE "^[^ =]*" python/{requirements.base.txt,requirements.bundle.txt,requirements.qt6_lin.txt} | \ - # sort | uniq | grep -v "^#$" - # in their repo at the git tag for this version - # There's probably a more elegant way, but the above extracted all the - # names, without version numbers, of their python dependencies. The hope is - # that nixpkgs versions are "close enough" - # I then removed the ones the check phase failed on (pythonCatchConflictsPhase) - attrs - beautifulsoup4 - blinker - build - certifi - charset-normalizer - click - colorama - decorator - flask - flask-cors - google-api-python-client - idna - importlib-metadata - itsdangerous - jinja2 - jsonschema - markdown - markupsafe - orjson - packaging - pip - pip-system-certs - pip-tools - protobuf - pyproject-hooks - pyqt6 - pyqt6-sip - pyqt6-webengine - pyrsistent - pysocks - requests - send2trash - setuptools - soupsieve - tomli - urllib3 - waitress - werkzeug - wheel - wrapt - zipp - ] ++ lib.optionals stdenv.isDarwin [ - AVKit - CoreAudio - ]; + propagatedBuildInputs = + with python3.pkgs; + [ + # This rather long list came from running: + # grep --no-filename -oE "^[^ =]*" python/{requirements.base.txt,requirements.bundle.txt,requirements.qt6_lin.txt} | \ + # sort | uniq | grep -v "^#$" + # in their repo at the git tag for this version + # There's probably a more elegant way, but the above extracted all the + # names, without version numbers, of their python dependencies. The hope is + # that nixpkgs versions are "close enough" + # I then removed the ones the check phase failed on (pythonCatchConflictsPhase) + attrs + beautifulsoup4 + blinker + build + certifi + charset-normalizer + click + colorama + decorator + flask + flask-cors + google-api-python-client + idna + importlib-metadata + itsdangerous + jinja2 + jsonschema + markdown + markupsafe + orjson + packaging + pip + pip-system-certs + pip-tools + protobuf + pyproject-hooks + pyqt6 + pyqt6-sip + pyqt6-webengine + pyrsistent + pysocks + requests + send2trash + setuptools + soupsieve + tomli + urllib3 + waitress + werkzeug + wheel + wrapt + zipp + ] + ++ lib.optionals stdenv.isDarwin [ + AVKit + CoreAudio + ]; - nativeCheckInputs = with python3.pkgs; [ pytest mock astroid ]; + nativeCheckInputs = with python3.pkgs; [ + pytest + mock + astroid + ]; # tests fail with to many open files # TODO: verify if this is still true (I can't, no mac) doCheck = !stdenv.isDarwin; + checkFlags = [ + # these two tests are flaky, see https://github.com/ankitects/anki/issues/3353 + # Also removed from anki-sync-server when removing this. + "--skip=media::check::test::unicode_normalization" + "--skip=scheduler::answering::test::state_application" + ]; + dontUseNinjaInstall = false; dontWrapQtApps = true; @@ -250,25 +269,29 @@ python3.pkgs.buildPythonApplication { ''; # mimic https://github.com/ankitects/anki/blob/76d8807315fcc2675e7fa44d9ddf3d4608efc487/build/ninja_gen/src/python.rs#L232-L250 - checkPhase = let - disabledTestsString = lib.pipe [ - # assumes / is not writeable, somehow fails on nix-portable brwap - "test_create_open" - ] [ - (lib.map (test: "not ${test}")) - (lib.concatStringsSep " and ") - lib.escapeShellArg - ]; - - in '' - runHook preCheck - 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 \ - pytest -p no:cacheprovider qt/tests -k ${disabledTestsString} - runHook postCheck - ''; + checkPhase = + let + disabledTestsString = + lib.pipe + [ + # assumes / is not writeable, somehow fails on nix-portable brwap + "test_create_open" + ] + [ + (lib.map (test: "not ${test}")) + (lib.concatStringsSep " and ") + lib.escapeShellArg + ]; + in + '' + runHook preCheck + 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 \ + pytest -p no:cacheprovider qt/tests -k ${disabledTestsString} + runHook postCheck + ''; preInstall = '' mkdir dist @@ -314,7 +337,10 @@ python3.pkgs.buildPythonApplication { homepage = "https://apps.ankiweb.net"; license = licenses.agpl3Plus; platforms = platforms.mesaPlatforms; - maintainers = with maintainers; [ euank oxij ]; + maintainers = with maintainers; [ + euank + oxij + ]; # Reported to crash at launch on darwin (as of 2.1.65) broken = stdenv.isDarwin; }; diff --git a/pkgs/games/anki/patches/Cargo.lock-update-time-for-rust-1.80.patch b/pkgs/games/anki/patches/Cargo.lock-update-time-for-rust-1.80.patch new file mode 100644 index 000000000000..58b6fc6f8d63 --- /dev/null +++ b/pkgs/games/anki/patches/Cargo.lock-update-time-for-rust-1.80.patch @@ -0,0 +1,40 @@ +From 66d9c405bfe7cb431cc52a7aec038068b364f034 Mon Sep 17 00:00:00 2001 +From: Dominique Martinet +Date: Sat, 10 Aug 2024 13:05:26 +0900 +Subject: [PATCH] Cargo.lock: update time for rust 1.80 + +--- + Cargo.lock | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/Cargo.lock b/Cargo.lock +index 9219317f2cea..17fb6f4a894c 100644 +--- a/Cargo.lock ++++ b/Cargo.lock +@@ -5581,9 +5581,9 @@ dependencies = [ + + [[package]] + name = "time" +-version = "0.3.34" ++version = "0.3.36" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" ++checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" + dependencies = [ + "deranged", + "itoa", +@@ -5602,9 +5602,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" + + [[package]] + name = "time-macros" +-version = "0.2.17" ++version = "0.2.18" + source = "registry+https://github.com/rust-lang/crates.io-index" +-checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" ++checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" + dependencies = [ + "num-conv", + "time-core", +-- +2.45.2 + diff --git a/pkgs/games/anki/sync-server.nix b/pkgs/games/anki/sync-server.nix index 248d3f34a06a..8dc73e405afd 100644 --- a/pkgs/games/anki/sync-server.nix +++ b/pkgs/games/anki/sync-server.nix @@ -13,12 +13,23 @@ rustPlatform.buildRustPackage { pname = "anki-sync-server"; inherit (anki) version src cargoLock; + patches = [ + ./patches/Cargo.lock-update-time-for-rust-1.80.patch + ]; + # only build sync server cargoBuildFlags = [ "--bin" "anki-sync-server" ]; + checkFlags = [ + # these two tests are flaky, see https://github.com/ankitects/anki/issues/3353 + # Also removed from anki when removing this. + "--skip=media::check::test::unicode_normalization" + "--skip=scheduler::answering::test::state_application" + ]; + nativeBuildInputs = [ protobuf pkg-config ]; buildInputs = [