anki: refactor
This commit is contained in:
parent
818441a0cf
commit
aa2f2dd7df
@ -1,10 +1,11 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
|
||||
, buildEnv
|
||||
, cargo
|
||||
, fetchFromGitHub
|
||||
, fetchYarnDeps
|
||||
, fixup_yarn_lock
|
||||
, cargo
|
||||
, installShellFiles
|
||||
, lame
|
||||
, mpv-unwrapped
|
||||
@ -18,9 +19,10 @@
|
||||
, rustPlatform
|
||||
, writeShellScriptBin
|
||||
, yarn
|
||||
, swift
|
||||
|
||||
, AVKit
|
||||
, CoreAudio
|
||||
, swift
|
||||
}:
|
||||
|
||||
let
|
||||
@ -36,7 +38,6 @@ let
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
||||
cargoDeps = rustPlatform.importCargoLock {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
@ -46,6 +47,11 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
yarnOfflineCache = fetchYarnDeps {
|
||||
yarnLock = "${src}/yarn.lock";
|
||||
hash = "sha256-66mYsHojQQBfLTHd12+/HEf7FKF5Y2RZRFeYRS2yZco=";
|
||||
};
|
||||
|
||||
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 = ''
|
||||
@ -118,35 +120,37 @@ let
|
||||
};
|
||||
in
|
||||
python3.pkgs.buildPythonApplication {
|
||||
inherit pname version src;
|
||||
inherit pname version;
|
||||
|
||||
outputs = [ "out" "doc" "man" ];
|
||||
outputs = [ "doc" "man" "out" ];
|
||||
|
||||
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 +178,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 +198,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 +239,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 +260,6 @@ python3.pkgs.buildPythonApplication {
|
||||
installManPage qt/bundle/lin/anki.1
|
||||
'';
|
||||
|
||||
dontWrapQtApps = true;
|
||||
preFixup = ''
|
||||
makeWrapperArgs+=(
|
||||
"''${qtWrapperArgs[@]}"
|
||||
@ -261,7 +268,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 +281,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;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user