From 5558dc828c1b1b28ed87bf749e90f9caa5e01430 Mon Sep 17 00:00:00 2001 From: Robert Helgesson Date: Sun, 27 Dec 2015 15:01:04 +0100 Subject: [PATCH] anki: major refactor This refactoring changes a number of things: - use system copies of Python libraries BeautifulSoup, and HTTPLIB2, - custom install to avoid installation of unnecessary files and poor directory structure, and - add patch for sorting out file paths, in particular this fixes localization. --- pkgs/games/anki/default.nix | 66 ++++++++++++++-------- pkgs/games/anki/fix-paths.patch | 98 +++++++++++++++++++++++++++++++++ 2 files changed, 142 insertions(+), 22 deletions(-) create mode 100644 pkgs/games/anki/fix-paths.patch diff --git a/pkgs/games/anki/default.nix b/pkgs/games/anki/default.nix index f99a8ddb4a83..ca18ca194da1 100644 --- a/pkgs/games/anki/default.nix +++ b/pkgs/games/anki/default.nix @@ -1,5 +1,5 @@ -{ stdenv, lib, fetchurl, lame, mplayer, libpulseaudio, portaudio -, python, pyqt4, pythonPackages +{ stdenv, lib, fetchurl, substituteAll, lame, mplayer +, libpulseaudio, python, pyqt4, qt4, pythonPackages # This little flag adds a huge number of dependencies, but we assume that # everyone wants Anki to draw plots with statistics by default. , plotsSupport ? true }: @@ -18,37 +18,59 @@ stdenv.mkDerivation rec { sha256 = "1d5rf5gcw98m38wam6wh3hyh7qd78ws7zipm67xg744flqsjrzmr"; }; - pythonPath = [ pyqt4 py.pysqlite py.sqlalchemy9 py.pyaudio ] + pythonPath = [ pyqt4 py.pysqlite py.sqlalchemy9 py.pyaudio py.beautifulsoup py.httplib2 ] ++ lib.optional plotsSupport py.matplotlib; buildInputs = [ python py.wrapPython lame mplayer libpulseaudio ]; - patchPhase = '' - substituteInPlace anki/sound.py --replace '["mplayer"]' '["${mplayer}/bin/mplayer"]' + phases = [ "unpackPhase" "patchPhase" "installPhase" ]; + + patches = [ + (substituteAll { + src = ./fix-paths.patch; + inherit lame mplayer qt4; + qt4name = qt4.name; + }) + ]; + + postPatch = '' + substituteInPlace oldanki/lang.py --subst-var-by anki $out + substituteInPlace anki/lang.py --subst-var-by anki $out + + # Remove unused starter. We'll create our own, minimalistic, + # starter. + rm anki/anki + + # Remove QT translation files. We'll use the standard QT ones. + rm "locale/"*.qm ''; - preConfigure = '' - substituteInPlace anki/anki \ - --replace /usr/share/ $out/share/ + installPhase = '' + pp=$out/lib/${python.libPrefix}/site-packages - substituteInPlace Makefile \ - --replace PREFIX=/usr PREFIX=$out \ - --replace /local/bin/ /bin/ - - sed -i '/xdg-mime/ d' Makefile - ''; - - preInstall = '' mkdir -p $out/bin - mkdir -p $out/share/pixmaps mkdir -p $out/share/applications + mkdir -p $out/share/doc/anki mkdir -p $out/share/man/man1 - ''; + mkdir -p $out/share/mime/packages + mkdir -p $out/share/pixmaps + mkdir -p $pp + + cat > $out/bin/anki <