diff --git a/pkgs/applications/audio/morituri/default.nix b/pkgs/applications/audio/morituri/default.nix new file mode 100644 index 000000000000..6af08cf0221a --- /dev/null +++ b/pkgs/applications/audio/morituri/default.nix @@ -0,0 +1,58 @@ +{ stdenv, fetchurl, python, pythonPackages, cdparanoia, cdrdao +, pygobject, gst_python, gst_plugins_base, gst_plugins_good +, setuptools, utillinux, makeWrapper }: + +stdenv.mkDerivation rec { + name = "morituri-${version}"; + version = "0.2.3"; + + src = fetchurl { + url = "http://thomas.apestaart.org/download/morituri/${name}.tar.bz2"; + sha256 = "1b30bs1y8azl04izsrl01gw9ys0lhzkn5afxi4p8qbiri2h4v210"; + }; + + pythonPath = [ + pygobject gst_python pythonPackages.musicbrainzngs + pythonPackages.pycdio pythonPackages.pyxdg setuptools + ]; + + buildInputs = [ + python cdparanoia cdrdao utillinux makeWrapper + gst_plugins_base gst_plugins_good + ] ++ pythonPath; + + patches = [ ./paths.patch ]; + + postPatch = '' + substituteInPlace morituri/extern/python-command/scripts/help2man \ + --replace /usr/bin/python ${python}/bin/python + + substituteInPlace morituri/common/program.py \ + --replace umount ${utillinux}/bin/umount \ + --replace \'eject \'${utillinux}/bin/eject + + substituteInPlace morituri/program/cdparanoia.py \ + --replace '"cdparanoia"' '"${cdparanoia}/bin/cdparanoia"' + + substituteInPlace morituri/program/cdrdao.py \ + --replace "['cdrdao', ]" "['${cdrdao}/bin/cdrdao', ]" \ + --replace '"cdrdao"' '"${cdrdao}/bin/cdrdao"' + ''; + + # This package contains no binaries to patch or strip. + dontPatchELF = true; + dontStrip = true; + + postInstall = '' + wrapProgram "$out/bin/rip" \ + --prefix PYTHONPATH : "$PYTHONPATH" \ + --prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH" + ''; + + meta = with stdenv.lib; { + homepage = http://thomas.apestaart.org/morituri/trac/; + description = "A CD ripper aiming for accuracy over speed"; + maintainers = [ maintainers.rycee ]; + license = licenses.gpl3Plus; + }; +} diff --git a/pkgs/applications/audio/morituri/paths.patch b/pkgs/applications/audio/morituri/paths.patch new file mode 100644 index 000000000000..12f1d5b761c8 --- /dev/null +++ b/pkgs/applications/audio/morituri/paths.patch @@ -0,0 +1,12 @@ +diff -Nurp morituri-0.2.3-orig/doc/Makefile.in morituri-0.2.3/doc/Makefile.in +--- morituri-0.2.3-orig/doc/Makefile.in 2014-11-01 00:13:01.231364181 +0100 ++++ morituri-0.2.3/doc/Makefile.in 2014-11-01 00:13:56.691812229 +0100 +@@ -486,7 +486,7 @@ morituri.ics: $(top_srcdir)/morituri.doa + -moap doap -f $(top_srcdir)/morituri.doap ical > morituri.ics + + rip.1: $(top_srcdir)/morituri/extern/python-command/scripts/help2man $(top_srcdir)/morituri +- PYTHONPATH=$(top_srcdir) $(PYTHON) $(top_srcdir)/morituri/extern/python-command/scripts/help2man morituri.rip.main.Rip rip > rip.1 ++ PYTHONPATH=$(top_srcdir):$(PYTHONPATH) $(PYTHON) $(top_srcdir)/morituri/extern/python-command/scripts/help2man morituri.rip.main.Rip rip > rip.1 + + clean-local: + @rm -rf reference diff --git a/pkgs/development/python-modules/pycdio/add-cdtext-toc.patch b/pkgs/development/python-modules/pycdio/add-cdtext-toc.patch new file mode 100644 index 000000000000..4e36612d80d0 --- /dev/null +++ b/pkgs/development/python-modules/pycdio/add-cdtext-toc.patch @@ -0,0 +1,52 @@ +diff -Nurp pycdio-0.20-orig/test/cdtext.toc pycdio-0.20/test/cdtext.toc +--- pycdio-0.20-orig/test/cdtext.toc 1970-01-01 01:00:00.000000000 +0100 ++++ pycdio-0.20/test/cdtext.toc 2014-11-06 23:36:12.520708320 +0100 +@@ -0,0 +1,48 @@ ++CD_DA ++ ++// global CD-TEXT data ++ ++CD_TEXT { ++ ++ // Mapping from language number (0..7) used in 'LANGUAGE' statements ++ // to language code. ++/// LANGUAGE_MAP { ++/// 0 : EN // 9 is the code for ENGLISH, ++/// // I don't know any other language code, yet ++/// } ++ ++ // Language number should always start with 0 ++ LANGUAGE 0 { ++ // Required fields - at least all CD-TEXT CDs I've seen so far have them. ++ TITLE "CD Title" ++ PERFORMER "Performer" ++ DISC_ID "XY12345" ++ UPC_EAN "" // usually empty ++ ++ // Further possible items, all of them are optional ++ ARRANGER "" ++ SONGWRITER "" ++ MESSAGE "" ++ GENRE "" // I'm not sure if this should be really ascii data ++ } ++} ++ ++ ++TRACK AUDIO ++// track specific CD-TEXT data ++CD_TEXT { ++ LANGUAGE 0 { ++ // if an item is defined for one track it should be defined for all tracks ++ TITLE "Track Title" ++ ++ PERFORMER "Performer" ++ ISRC "US-XX1-98-01234" ++ ++ ARRANGER "" ++ SONGWRITER "" ++ MESSAGE "" ++ } ++} ++ ++SILENCE 1:0:0 ++ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d596346e1819..5ede0976d307 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1554,6 +1554,8 @@ let mmv = callPackage ../tools/misc/mmv { }; + morituri = callPackage ../applications/audio/morituri { }; + most = callPackage ../tools/misc/most { }; multitail = callPackage ../tools/misc/multitail { }; diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index d6dfbd7cb939..bab7bcddc38d 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -6690,6 +6690,38 @@ let }; + pycdio = buildPythonPackage rec { + name = "pycdio-0.20"; + disabled = !isPy27; + + src = pkgs.fetchurl { + url = "https://pypi.python.org/packages/source/p/pycdio/${name}.tar.gz"; + sha256 = "1mrh233pj584gf7la64d4xlmvdnfl4jwpxs95lnd3i4zd5drid14"; + }; + + buildInputs = [ + self.setuptools self.nose pkgs.pkgconfig pkgs.swig pkgs.libcdio + ]; + + patches = [ ../development/python-modules/pycdio/add-cdtext-toc.patch ]; + + # Run tests using nosetests but first need to install the binaries + # to the root source directory where they can be found. + checkPhase = '' + ./setup.py install_lib -d . + nosetests + ''; + + meta = with stdenv.lib; { + homepage = http://www.gnu.org/software/libcdio/; + description = "Wrapper around libcdio (CD Input and Control library)"; + maintainers = with maintainers; [ rycee ]; + license = licenses.gpl3Plus; + }; + + }; + + pycryptopp = buildPythonPackage (rec { name = "pycryptopp-0.6.0.1206569328141510525648634803928199668821045408958"; disabled = isPy3k || isPyPy; # see https://bitbucket.org/pypy/pypy/issue/1190/