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.
This commit is contained in:
+44
-22
@@ -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 <<EOF
|
||||
#!${python}/bin/python
|
||||
import aqt
|
||||
aqt.run()
|
||||
EOF
|
||||
chmod 755 $out/bin/anki
|
||||
|
||||
cp -v anki.desktop $out/share/applications/
|
||||
cp -v README* LICENSE* $out/share/doc/anki/
|
||||
cp -v anki.1 $out/share/man/man1/
|
||||
cp -v anki.xml $out/share/mime/packages/
|
||||
cp -v anki.{png,xpm} $out/share/pixmaps/
|
||||
cp -rv locale $out/share/
|
||||
cp -rv anki aqt thirdparty/send2trash $pp/
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p "$out/lib/${python.libPrefix}/site-packages"
|
||||
ln -s "$out/share/anki/"* $out/lib/${python.libPrefix}/site-packages/
|
||||
export PYTHONPATH="$out/lib/${python.libPrefix}/site-packages:$PYTHONPATH"
|
||||
wrapPythonPrograms
|
||||
'';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user