diff options
author | Charles Strahan <charles.c.strahan@gmail.com> | 2015-01-20 20:21:03 -0500 |
---|---|---|
committer | Charles Strahan <charles.c.strahan@gmail.com> | 2015-01-20 20:21:03 -0500 |
commit | dfc225d143142764daf2c1e933e7303a82f7b0cd (patch) | |
tree | 351925e835e82d7f7d20a7eb8567b5a2aaa658c7 /pkgs/tools/audio | |
parent | bd5374664663bbf1c2675c100eee8cfe14c6d148 (diff) | |
parent | c55b5eb245198cf3fa58e477a301c90f754f6682 (diff) | |
download | nixlib-dfc225d143142764daf2c1e933e7303a82f7b0cd.tar nixlib-dfc225d143142764daf2c1e933e7303a82f7b0cd.tar.gz nixlib-dfc225d143142764daf2c1e933e7303a82f7b0cd.tar.bz2 nixlib-dfc225d143142764daf2c1e933e7303a82f7b0cd.tar.lz nixlib-dfc225d143142764daf2c1e933e7303a82f7b0cd.tar.xz nixlib-dfc225d143142764daf2c1e933e7303a82f7b0cd.tar.zst nixlib-dfc225d143142764daf2c1e933e7303a82f7b0cd.zip |
Merge branch 'master' of github.com:nixos/nixpkgs into pleasant-ruby
Conflicts: pkgs/applications/version-management/git-and-tools/default.nix pkgs/applications/version-management/git-and-tools/hub/default.nix pkgs/tools/audio/mpdcron/default.nix
Diffstat (limited to 'pkgs/tools/audio')
-rw-r--r-- | pkgs/tools/audio/beets/default.nix | 178 | ||||
-rw-r--r-- | pkgs/tools/audio/beets/mediafile-codec-fix.patch | 25 | ||||
-rw-r--r-- | pkgs/tools/audio/beets/replaygain-default-audiotools.patch | 17 | ||||
-rw-r--r-- | pkgs/tools/audio/beets/test-bucket-fix-year.patch | 23 | ||||
-rw-r--r-- | pkgs/tools/audio/mpdcron/default.nix | 2 | ||||
-rw-r--r-- | pkgs/tools/audio/qastools/default.nix | 29 |
6 files changed, 273 insertions, 1 deletions
diff --git a/pkgs/tools/audio/beets/default.nix b/pkgs/tools/audio/beets/default.nix new file mode 100644 index 000000000000..7148ca620273 --- /dev/null +++ b/pkgs/tools/audio/beets/default.nix @@ -0,0 +1,178 @@ +{ stdenv, fetchFromGitHub, writeScript +, buildPythonPackage, pythonPackages, python + +, enableAcoustid ? true +, enableBeatport ? true +, enableDiscogs ? true +, enableEchonest ? true +, enableFetchart ? true +, enableLastfm ? true +, enableMpd ? true +, enableReplaygain ? true +, enableWeb ? true + +, bashInteractive, bashCompletion +}: + +assert enableAcoustid -> pythonPackages.pyacoustid != null; +assert enableBeatport -> pythonPackages.responses != null; +assert enableDiscogs -> pythonPackages.discogs_client != null; +assert enableEchonest -> pythonPackages.pyechonest != null; +assert enableFetchart -> pythonPackages.responses != null; +assert enableLastfm -> pythonPackages.pylast != null; +assert enableMpd -> pythonPackages.mpd != null; +assert enableReplaygain -> pythonPackages.audiotools != null; +assert enableWeb -> pythonPackages.flask != null; + +with stdenv.lib; + +let + optionalPlugins = { + beatport = enableBeatport; + chroma = enableAcoustid; + discogs = enableDiscogs; + echonest = enableEchonest; + echonest_tempo = enableEchonest; + fetchart = enableFetchart; + lastgenre = enableLastfm; + lastimport = enableLastfm; + mpdstats = enableMpd; + mpdupdate = enableMpd; + replaygain = enableReplaygain; + web = enableWeb; + }; + + pluginsWithoutDeps = [ + "bench" "bpd" "bpm" "bucket" "convert" "duplicates" "embedart" "freedesktop" + "fromfilename" "ftintitle" "fuzzy" "ihate" "importadded" "importfeeds" + "info" "inline" "keyfinder" "lyrics" "mbcollection" "mbsync" "missing" + "play" "random" "rewrite" "scrub" "smartplaylist" "spotify" "the" "types" + "zero" + ]; + + enabledOptionalPlugins = attrNames (filterAttrs (_: id) optionalPlugins); + + allPlugins = pluginsWithoutDeps ++ attrNames optionalPlugins; + allEnabledPlugins = pluginsWithoutDeps ++ enabledOptionalPlugins; + + # Discogs plugin wants to have an API token, so skip install checks. + allTestablePlugins = remove "discogs" allEnabledPlugins; + + testShell = "${bashInteractive}/bin/bash --norc"; + completion = "${bashCompletion}/share/bash-completion/bash_completion"; + +in buildPythonPackage rec { + name = "beets-${version}"; + version = "1.3.9"; + namePrefix = ""; + + src = fetchFromGitHub { + owner = "sampsyo"; + repo = "beets"; + rev = "v${version}"; + sha256 = "1srhkiyjqx6i3gn20ihf087l5pa77yh5b81ivc52lj491fda7xqk"; + }; + + propagatedBuildInputs = [ + pythonPackages.enum34 + pythonPackages.munkres + pythonPackages.musicbrainzngs + pythonPackages.mutagen + pythonPackages.pyyaml + pythonPackages.unidecode + python.modules.sqlite3 + python.modules.readline + ] ++ optional enableAcoustid pythonPackages.pyacoustid + ++ optional (enableBeatport || enableFetchart) pythonPackages.requests2 + ++ optional enableDiscogs pythonPackages.discogs_client + ++ optional enableEchonest pythonPackages.pyechonest + ++ optional enableLastfm pythonPackages.pylast + ++ optional enableMpd pythonPackages.mpd + ++ optional enableReplaygain pythonPackages.audiotools + ++ optional enableWeb pythonPackages.flask; + + buildInputs = with pythonPackages; [ + beautifulsoup4 + flask + mock + nose + pyechonest + pylast + rarfile + requests2 + responses + ]; + + patches = [ + ./mediafile-codec-fix.patch + ./replaygain-default-audiotools.patch + ./test-bucket-fix-year.patch + ]; + + postPatch = '' + sed -i -e '/assertIn.*item.*path/d' test/test_info.py + echo echo completion tests passed > test/test_completion.sh + + sed -i -e '/^BASH_COMPLETION_PATHS *=/,/^])$/ { + /^])$/i u"${completion}" + }' beets/ui/commands.py + ''; + + doCheck = true; + + preCheck = '' + (${concatMapStrings (s: "echo \"${s}\";") allPlugins}) \ + | sort -u > plugins_defined + find beetsplug -mindepth 1 \ + \! -path 'beetsplug/__init__.py' -a \ + \( -name '*.py' -o -path 'beetsplug/*/__init__.py' \) -print \ + | sed -n -re 's|^beetsplug/([^/.]+).*|\1|p' \ + | sort -u > plugins_available + + if ! mismatches="$(diff -y plugins_defined plugins_available)"; then + echo "The the list of defined plugins (left side) doesn't match" \ + "the list of available plugins (right side):" >&2 + echo "$mismatches" >&2 + exit 1 + fi + ''; + + checkPhase = '' + runHook preCheck + + BEETS_TEST_SHELL="${testShell}" \ + BASH_COMPLETION_SCRIPT="${completion}" \ + HOME="$(mktemp -d)" \ + nosetests -v + + runHook postCheck + ''; + + doInstallCheck = true; + + installCheckPhase = '' + runHook preInstallCheck + + tmphome="$(mktemp -d)" + + EDITOR="${writeScript "beetconfig.sh" '' + #!${stdenv.shell} + cat > "$1" <<CFG + plugins: ${concatStringsSep " " allTestablePlugins} + musicbrainz: + user: dummy + pass: dummy + CFG + ''}" HOME="$tmphome" "$out/bin/beet" config -e + EDITOR=true HOME="$tmphome" "$out/bin/beet" config -e + + runHook postInstallCheck + ''; + + meta = { + homepage = http://beets.radbox.org; + description = "Music tagger and library organizer"; + license = stdenv.lib.licenses.mit; + maintainers = with stdenv.lib.maintainers; [ iElectric aszlig ]; + }; +} diff --git a/pkgs/tools/audio/beets/mediafile-codec-fix.patch b/pkgs/tools/audio/beets/mediafile-codec-fix.patch new file mode 100644 index 000000000000..7eaa5e19590e --- /dev/null +++ b/pkgs/tools/audio/beets/mediafile-codec-fix.patch @@ -0,0 +1,25 @@ +From 903e88a228d6bd93bd1884c59dd23dd9f04a1199 Mon Sep 17 00:00:00 2001 +From: Adrian Sampson <adrian@radbox.org> +Date: Wed, 26 Nov 2014 19:04:40 -0800 +Subject: [PATCH] Fix codec reference in MediaFile (fix #1117) + +--- + beets/mediafile.py | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/beets/mediafile.py b/beets/mediafile.py +index ce42621..a459e09 100644 +--- a/beets/mediafile.py ++++ b/beets/mediafile.py +@@ -1340,8 +1340,9 @@ def __init__(self, path, id3v23=False): + raise FileTypeError(path) + elif (type(self.mgfile).__name__ == 'M4A' or + type(self.mgfile).__name__ == 'MP4'): +- if hasattr(self.mgfile.info, 'codec'): +- if self.mgfile.codec and self.mgfile.codec.startswith('alac'): ++ info = self.mgfile.info ++ if hasattr(info, 'codec'): ++ if info.codec and info.codec.startswith('alac'): + self.type = 'alac' + else: + self.type = 'aac' diff --git a/pkgs/tools/audio/beets/replaygain-default-audiotools.patch b/pkgs/tools/audio/beets/replaygain-default-audiotools.patch new file mode 100644 index 000000000000..d852ea6fecaa --- /dev/null +++ b/pkgs/tools/audio/beets/replaygain-default-audiotools.patch @@ -0,0 +1,17 @@ +diff --git a/beetsplug/replaygain.py b/beetsplug/replaygain.py +index 40b3a3a..9b54a5a 100644 +--- a/beetsplug/replaygain.py ++++ b/beetsplug/replaygain.py +@@ -627,11 +627,10 @@ class ReplayGainPlugin(BeetsPlugin): + super(ReplayGainPlugin, self).__init__() + self.import_stages = [self.imported] + +- # default backend is 'command' for backward-compatibility. + self.config.add({ + 'overwrite': False, + 'auto': True, +- 'backend': u'command', ++ 'backend': u'audiotools', + 'targetlevel': 89, + }) + diff --git a/pkgs/tools/audio/beets/test-bucket-fix-year.patch b/pkgs/tools/audio/beets/test-bucket-fix-year.patch new file mode 100644 index 000000000000..967476006a8e --- /dev/null +++ b/pkgs/tools/audio/beets/test-bucket-fix-year.patch @@ -0,0 +1,23 @@ +From 80038e2a3fe6f5ac174a30f6fd01ebf8dd63e414 Mon Sep 17 00:00:00 2001 +From: Fabrice Laporte <kraymer@gmail.com> +Date: Sat, 3 Jan 2015 23:03:29 +0100 +Subject: [PATCH] test_bucket: update test_year_single_year + +2015 was used as an example of date outside of [1970-current year] intervall which is not true anymore +--- + test/test_bucket.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/test/test_bucket.py b/test/test_bucket.py +index 4610ec7..060c360 100644 +--- a/test/test_bucket.py ++++ b/test/test_bucket.py +@@ -51,7 +51,7 @@ def test_year_single_year_last_folder(self): + year.""" + self._setup_config(bucket_year=['1950', '1970']) + self.assertEqual(self.plugin._tmpl_bucket('2014'), '1970') +- self.assertEqual(self.plugin._tmpl_bucket('2015'), '2015') ++ self.assertEqual(self.plugin._tmpl_bucket('2025'), '2025') + + def test_year_two_years(self): + """Buckets can be named with the 'from-to' syntax.""" diff --git a/pkgs/tools/audio/mpdcron/default.nix b/pkgs/tools/audio/mpdcron/default.nix index a6fe1151b77d..535ac5378fca 100644 --- a/pkgs/tools/audio/mpdcron/default.nix +++ b/pkgs/tools/audio/mpdcron/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchgit, autoconf, automake, libtool, pkgconfig, glib, libdaemon, buildRubyGem -, mpd_clientlib, curl, sqlite, ruby, rubyPackages, libnotify, haskellPackages }: +, mpd_clientlib, curl, sqlite, ruby, rubyPackages, libnotify, pandoc }: stdenv.mkDerivation rec { version = "20130809"; diff --git a/pkgs/tools/audio/qastools/default.nix b/pkgs/tools/audio/qastools/default.nix new file mode 100644 index 000000000000..920f6913d090 --- /dev/null +++ b/pkgs/tools/audio/qastools/default.nix @@ -0,0 +1,29 @@ +{ stdenv, fetchurl, cmake, alsaLib, udev, qt }: + +let + version = "0.18.1"; +in + +stdenv.mkDerivation { + name = "qastools-${version}"; + + src = fetchurl { + url = "mirror://sourceforge/qastools/qastools_${version}.tar.bz2"; + sha256 = "1sac6a0j1881wgpv4491b2f4jnhqkab6xyldmcg1wfqb5qkdgzvg"; + }; + + buildInputs = [ + cmake alsaLib udev qt + ]; + + cmakeFlags = [ + "-DCMAKE_INSALL_PREFIX=$out" + "-DALSA_INCLUDE=${alsaLib}/include/alsa/version.h" + ]; + + meta = with stdenv.lib; { + description = "Collection of desktop applications for ALSA configuration"; + license = licenses.gpl3; + platforms = platforms.linux; + }; +} |