diff --git a/pkgs/games/anki/beautifulsoup.nix b/pkgs/games/anki/beautifulsoup.nix deleted file mode 100644 index 35118e5aabd2..000000000000 --- a/pkgs/games/anki/beautifulsoup.nix +++ /dev/null @@ -1,20 +0,0 @@ -{ buildPythonPackage, isPy3k, pkgs }: - -buildPythonPackage rec { - name = "beautifulsoup-3.2.1"; - disabled = isPy3k; - - src = pkgs.fetchurl { - url = "http://www.crummy.com/software/BeautifulSoup/download/3.x/BeautifulSoup-3.2.1.tar.gz"; - sha256 = "1nshbcpdn0jpcj51x0spzjp519pkmqz0n0748j7dgpz70zlqbfpm"; - }; - - # error: invalid command 'test' - doCheck = false; - - meta = { - homepage = http://www.crummy.com/software/BeautifulSoup/; - license = "bsd"; - description = "Undemanding HTML/XML parser"; - }; -} diff --git a/pkgs/games/anki/default.nix b/pkgs/games/anki/default.nix index 8ac70fcd6f3e..fb43640b2b12 100644 --- a/pkgs/games/anki/default.nix +++ b/pkgs/games/anki/default.nix @@ -4,14 +4,16 @@ , lib , python , fetchurl -, substituteAll , lame , mplayer , libpulseaudio -, pyqt4 +, pyqt5 +, decorator +, beautifulsoup4 , sqlalchemy , pyaudio -, httplib2 +, requests +, markdown , matplotlib , pytest , glibcLocales @@ -22,41 +24,35 @@ , plotsSupport ? true }: -let - # Development version of anki has bumped to beautifulsoup4 - beautifulsoup = callPackage ./beautifulsoup.nix { }; - - qt4 = pyqt4.qt; - -in buildPythonApplication rec { - version = "2.0.52"; +buildPythonApplication rec { + version = "2.1.6-beta1"; name = "anki-${version}"; src = fetchurl { urls = [ - "https://apps.ankiweb.net/downloads/current/${name}-source.tgz" + "https://apps.ankiweb.net/downloads/beta/${name}-source.tgz" + # "https://apps.ankiweb.net/downloads/current/${name}-source.tgz" # "http://ankisrs.net/download/mirror/${name}.tgz" # "http://ankisrs.net/download/mirror/archive/${name}.tgz" ]; - sha256 = "0yjyxgpk79rplz9z2r93kmlk09ari6xxfrz1cfm2yl9v8zfw1n6l"; + sha256 = "0yqn8qjx9dyf754jljhyyrk8mahii188nz0yifl1lr3py9sxzbsf"; }; - propagatedBuildInputs = [ pyqt4 sqlalchemy pyaudio beautifulsoup httplib2 send2trash ] + propagatedBuildInputs = [ pyqt5 sqlalchemy + beautifulsoup4 send2trash pyaudio requests decorator markdown ] ++ lib.optional plotsSupport matplotlib; checkInputs = [ pytest glibcLocales nose ]; buildInputs = [ lame mplayer libpulseaudio ]; + makeWrapperArgs = [ + ''--prefix PATH ':' "${lame}/bin:${mplayer}/bin"'' + ]; + patches = [ # Disable updated version check. ./no-version-check.patch - - (substituteAll { - src = ./fix-paths.patch; - inherit lame mplayer qt4; - qt4name = qt4.name; - }) ]; buildPhase = '' @@ -65,12 +61,9 @@ in buildPythonApplication rec { ''; 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 + # rm anki/anki # Remove QT translation files. We'll use the standard QT ones. rm "locale/"*.qm @@ -109,7 +102,7 @@ in buildPythonApplication rec { 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 $pp/ + cp -rv anki aqt web $pp/ wrapPythonPrograms ''; diff --git a/pkgs/games/anki/fix-paths.patch b/pkgs/games/anki/fix-paths.patch deleted file mode 100644 index 9b2fd53783e3..000000000000 --- a/pkgs/games/anki/fix-paths.patch +++ /dev/null @@ -1,99 +0,0 @@ ---- anki-2.0.46/anki/lang.py.orig 2017-08-06 15:30:10.781419237 +0200 -+++ anki-2.0.46/anki/lang.py 2017-08-06 15:31:33.023043036 +0200 -@@ -71,15 +71,7 @@ - return localTranslation().ungettext(single, plural, n) - - def langDir(): -- dir = os.path.join(os.path.dirname( -- os.path.abspath(__file__)), "locale") -- if not os.path.isdir(dir): -- dir = os.path.join(os.path.dirname(sys.argv[0]), "locale") -- if not os.path.isdir(dir): -- dir = "/usr/share/anki/locale" -- if not os.path.isdir(dir): -- dir = "/usr/local/share/anki/bin/locale" -- return dir -+ return "@anki@/share/locale" - - def setLang(lang, local=True): - trans = gettext.translation( -diff -Nurp anki-2.0.33.orig/anki/sound.py anki-2.0.33/anki/sound.py ---- anki-2.0.33.orig/anki/sound.py 2015-12-27 11:23:02.334908723 +0100 -+++ anki-2.0.33/anki/sound.py 2015-12-27 11:34:11.863147265 +0100 -@@ -29,8 +29,9 @@ processingDst = u"rec.mp3" - processingChain = [] - recFiles = [] - -+lameCmd = "@lame@/bin/lame" - processingChain = [ -- ["lame", "rec.wav", processingDst, "--noreplaygain", "--quiet"], -+ [lameCmd, "rec.wav", processingDst, "--noreplaygain", "--quiet"], - ] - - # don't show box on windows -@@ -44,13 +45,6 @@ if isWin: - else: - si = None - --if isMac: -- # make sure lame, which is installed in /usr/local/bin, is in the path -- os.environ['PATH'] += ":" + "/usr/local/bin" -- dir = os.path.dirname(os.path.abspath(__file__)) -- dir = os.path.abspath(dir + "/../../../..") -- os.environ['PATH'] += ":" + dir + "/audio" -- - def retryWait(proc): - # osx throws interrupted system call errors frequently - while 1: -@@ -62,13 +56,7 @@ def retryWait(proc): - # Mplayer settings - ########################################################################## - --if isWin: -- mplayerCmd = ["mplayer.exe", "-ao", "win32"] -- dir = os.path.dirname(os.path.abspath(sys.argv[0])) -- os.environ['PATH'] += ";" + dir -- os.environ['PATH'] += ";" + dir + "\\..\\win\\top" # for testing --else: -- mplayerCmd = ["mplayer"] -+mplayerCmd = ["@mplayer@/bin/mplayer"] - mplayerCmd += ["-really-quiet", "-noautosub"] - - # Mplayer in slave mode -@@ -220,7 +208,7 @@ class _Recorder(object): - self.encode = encode - for c in processingChain: - #print c -- if not self.encode and c[0] == 'lame': -+ if not self.encode and c[0] == lameCmd: - continue - try: - ret = retryWait(subprocess.Popen(c, startupinfo=si)) -diff -Nurp anki-2.0.33.orig/aqt/__init__.py anki-2.0.33/aqt/__init__.py ---- anki-2.0.33.orig/aqt/__init__.py 2015-12-27 11:23:02.338908782 +0100 -+++ anki-2.0.33/aqt/__init__.py 2015-12-27 12:35:03.405565214 +0100 -@@ -107,7 +107,7 @@ def setupLang(pm, app, force=None): - app.setLayoutDirection(Qt.LeftToRight) - # qt - _qtrans = QTranslator() -- if _qtrans.load("qt_" + lang, dir): -+ if _qtrans.load("qt_" + lang, "@qt4@/share/@qt4name@/translations"): - app.installTranslator(_qtrans) - - # App initialisation -diff -Nurp anki-2.0.33.orig/oldanki/lang.py anki-2.0.33/oldanki/lang.py ---- anki-2.0.33.orig/oldanki/lang.py 2015-12-27 11:23:02.390909551 +0100 -+++ anki-2.0.33/oldanki/lang.py 2015-12-27 14:05:51.663920453 +0100 -@@ -32,11 +32,7 @@ def ngettext(single, plural, n): - return localTranslation().ungettext(single, plural, n) - - def setLang(lang, local=True): -- base = os.path.dirname(os.path.abspath(__file__)) -- localeDir = os.path.join(base, "locale") -- if not os.path.exists(localeDir): -- localeDir = os.path.join( -- os.path.dirname(sys.argv[0]), "locale") -+ localeDir = "@anki@/share/locale" - trans = gettext.translation('libanki', localeDir, - languages=[lang], - fallback=True) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index fc9803590ab1..b720e31d0790 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -20133,7 +20133,7 @@ with pkgs; angband = callPackage ../games/angband { }; - anki = python2Packages.callPackage ../games/anki { }; + anki = python3Packages.callPackage ../games/anki { }; armagetronad = callPackage ../games/armagetronad { };