diff options
Diffstat (limited to 'nixpkgs/pkgs/games/anki/default.nix')
-rw-r--r-- | nixpkgs/pkgs/games/anki/default.nix | 78 |
1 files changed, 42 insertions, 36 deletions
diff --git a/nixpkgs/pkgs/games/anki/default.nix b/nixpkgs/pkgs/games/anki/default.nix index 18ffb1558f5d..b2be643b60ee 100644 --- a/nixpkgs/pkgs/games/anki/default.nix +++ b/nixpkgs/pkgs/games/anki/default.nix @@ -1,10 +1,11 @@ { lib , stdenv + , buildEnv +, cargo , fetchFromGitHub , fetchYarnDeps , fixup_yarn_lock -, cargo , installShellFiles , lame , mpv-unwrapped @@ -18,25 +19,25 @@ , rustPlatform , writeShellScriptBin , yarn -, swift + , AVKit , CoreAudio +, swift }: let pname = "anki"; - version = "2.1.65"; - rev = "aa9a734f695d0b0981aa3c0aaa2745ce86832f08"; + version = "2.1.66"; + rev = "70506aeb99d4afbe73321feaf75a2fabaa011d55"; src = fetchFromGitHub { owner = "ankitects"; repo = "anki"; rev = version; - hash = "sha256-l+RTot8pJFJDDiapmQdKJ9WfwAuwRFiNJMbX+fBETeU="; + hash = "sha256-eE64i/jTMvipakbQXzKu/dN+dyim7E4M+eP3d9GZhII="; fetchSubmodules = true; }; - cargoDeps = rustPlatform.importCargoLock { lockFile = ./Cargo.lock; outputHashes = { @@ -46,6 +47,11 @@ let }; }; + yarnOfflineCache = fetchYarnDeps { + yarnLock = "${src}/yarn.lock"; + hash = "sha256-3DUiwGTg7Nzd+bPJlc8aUW8bYrl7BF+CcjqkF6nW0qc="; + }; + anki-build-python = python3.withPackages (ps: with ps; [ mypy-protobuf ]); @@ -87,20 +93,16 @@ let pathsToLink = [ "/bin" ]; }; - yarnOfflineCache = fetchYarnDeps { - yarnLock = "${src}/yarn.lock"; - hash = "sha256-66mYsHojQQBfLTHd12+/HEf7FKF5Y2RZRFeYRS2yZco="; - }; - # https://discourse.nixos.org/t/mkyarnpackage-lockfile-has-incorrect-entry/21586/3 anki-nodemodules = stdenv.mkDerivation { pname = "anki-nodemodules"; + inherit version src yarnOfflineCache; nativeBuildInputs = [ fixup_yarn_lock - yarn nodejs-slim + yarn ]; configurePhase = '' @@ -109,7 +111,6 @@ let fixup_yarn_lock yarn.lock yarn install --offline --frozen-lockfile --ignore-scripts --no-progress --non-interactive patchShebangs node_modules/ - yarn run postinstall --offline ''; installPhase = '' @@ -118,35 +119,37 @@ let }; in python3.pkgs.buildPythonApplication { - inherit pname version src; + inherit pname version; + + outputs = [ "doc" "man" "out" ]; - outputs = [ "out" "doc" "man" ]; + inherit src; patches = [ ./patches/gl-fixup.patch ./patches/no-update-check.patch - ./patches/0001-Skip-formatting-python-code.patch + ./patches/skip-formatting-python-code.patch ]; - inherit cargoDeps; + inherit cargoDeps yarnOfflineCache; nativeBuildInputs = [ fakeGit fixup_yarn_lock offlineYarn - installShellFiles cargo - rustPlatform.cargoSetupHook + installShellFiles ninja qt6.wrapQtAppsHook rsync + rustPlatform.cargoSetupHook ] ++ lib.optional stdenv.isDarwin swift; - nativeCheckInputs = with python3.pkgs; [ pytest mock astroid ]; buildInputs = [ qt6.qtbase ] ++ 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_4.txt} | \ @@ -174,13 +177,13 @@ python3.pkgs.buildPythonApplication { markupsafe orjson pep517 - python3.pkgs.protobuf pyparsing pyqt6 pyqt6-sip pyqt6-webengine pyrsistent pysocks + python3.pkgs.protobuf requests send2trash six @@ -194,23 +197,30 @@ python3.pkgs.buildPythonApplication { CoreAudio ]; - # Activate optimizations - RELEASE = true; + nativeCheckInputs = with python3.pkgs; [ pytest mock astroid ]; - PROTOC_BINARY = lib.getExe protobuf; - NODE_BINARY = lib.getExe nodejs; - YARN_BINARY = lib.getExe offlineYarn; - PYTHON_BINARY = lib.getExe python3; + # tests fail with to many open files + # TODO: verify if this is still true (I can't, no mac) + doCheck = !stdenv.isDarwin; - inherit yarnOfflineCache; dontUseNinjaInstall = false; + dontWrapQtApps = true; + + env = { + # Activate optimizations + RELEASE = true; + + NODE_BINARY = lib.getExe nodejs; + PROTOC_BINARY = lib.getExe protobuf; + PYTHON_BINARY = lib.getExe python3; + YARN_BINARY = lib.getExe offlineYarn; + }; buildPhase = '' export RUST_BACKTRACE=1 export RUST_LOG=debug - mkdir -p out/pylib/anki \ - .git + mkdir -p out/pylib/anki .git echo ${builtins.substring 0 8 rev} > out/buildhash touch out/env @@ -228,9 +238,6 @@ python3.pkgs.buildPythonApplication { PIP_USER=1 ./ninja build wheels ''; - # tests fail with to many open files - # TODO: verify if this is still true (I can't, no mac) - doCheck = !stdenv.isDarwin; # mimic https://github.com/ankitects/anki/blob/76d8807315fcc2675e7fa44d9ddf3d4608efc487/build/ninja_gen/src/python.rs#L232-L250 checkPhase = '' HOME=$TMP ANKI_TEST_MODE=1 PYTHONPATH=$PYTHONPATH:$PWD/out/pylib \ @@ -252,7 +259,6 @@ python3.pkgs.buildPythonApplication { installManPage qt/bundle/lin/anki.1 ''; - dontWrapQtApps = true; preFixup = '' makeWrapperArgs+=( "''${qtWrapperArgs[@]}" @@ -261,7 +267,6 @@ python3.pkgs.buildPythonApplication { ''; meta = with lib; { - homepage = "https://apps.ankiweb.net/"; description = "Spaced repetition flashcard program"; longDescription = '' Anki is a program which makes remembering things easy. Because it is a lot @@ -275,9 +280,10 @@ python3.pkgs.buildPythonApplication { people's names and faces, brushing up on geography, mastering long poems, or even practicing guitar chords! ''; + homepage = "https://apps.ankiweb.net"; license = licenses.agpl3Plus; platforms = platforms.mesaPlatforms; - maintainers = with maintainers; [ oxij euank ]; + maintainers = with maintainers; [ euank oxij paveloom ]; # Reported to crash at launch on darwin (as of 2.1.65) broken = stdenv.isDarwin; }; |