diff options
author | tobim <tobim@fastmail.fm> | 2019-11-13 16:38:46 +0100 |
---|---|---|
committer | Franz Pletz <fpletz@fnordicwalking.de> | 2019-11-13 15:38:46 +0000 |
commit | 4a9d5493b7a9026af1b38de673b7351453b6c4db (patch) | |
tree | 676f8acb6dbbf5e8744419c5b147871b9c867268 /pkgs/servers/mpd | |
parent | a95e0ac8e4d303854e2aa69c2866e4f742637c63 (diff) | |
download | nixpkgs-4a9d5493b7a9026af1b38de673b7351453b6c4db.tar nixpkgs-4a9d5493b7a9026af1b38de673b7351453b6c4db.tar.gz nixpkgs-4a9d5493b7a9026af1b38de673b7351453b6c4db.tar.bz2 nixpkgs-4a9d5493b7a9026af1b38de673b7351453b6c4db.tar.lz nixpkgs-4a9d5493b7a9026af1b38de673b7351453b6c4db.tar.xz nixpkgs-4a9d5493b7a9026af1b38de673b7351453b6c4db.tar.zst nixpkgs-4a9d5493b7a9026af1b38de673b7351453b6c4db.zip |
mpd: 0.20.13 -> 0.21.16 (#57608)
* Refactor mpd * mpd: 0.20.13 -> 0.21.5 Switch to meson based build, following upstream. * Fix mpd on darwin * mpd: 0.21.5 -> 0.21.6 * mpd-small: init add 0.21.6 * Update to 0.21.8 & fix ouput path Also use pname instead of name. * Update to 0.21.9 * Integrate review suggestions - Expose run function as mpdWithFeatures. - Throw on invalid feature requests. - Drop major/minor version variables. - Cosmetic improvements. * Update to 0.21.10 * mpd: 0.21.10 -> 0.21.11 * mpd: 0.21.11 -> 0.21.12 * mpd: log to journal * mpd: 0.21.12 -> 0.21.14 * mpd: add tobim to maintainers * mpd: reenable syslog support * mpd: 0.21.14 -> 0.21.15 * mpd: 0.21.15 -> 0.21.16
Diffstat (limited to 'pkgs/servers/mpd')
-rw-r--r-- | pkgs/servers/mpd/default.nix | 282 |
1 files changed, 148 insertions, 134 deletions
diff --git a/pkgs/servers/mpd/default.nix b/pkgs/servers/mpd/default.nix index 7fcb5f94579..c16a1f6659e 100644 --- a/pkgs/servers/mpd/default.nix +++ b/pkgs/servers/mpd/default.nix @@ -1,148 +1,162 @@ -{ stdenv, fetchFromGitHub, autoreconfHook, pkgconfig, glib, systemd, boost, darwin -, alsaSupport ? true, alsaLib -, avahiSupport ? true, avahi, dbus -, flacSupport ? true, flac -, vorbisSupport ? true, libvorbis -, madSupport ? true, libmad -, id3tagSupport ? true, libid3tag -, mikmodSupport ? true, libmikmod -, shoutSupport ? true, libshout -, sqliteSupport ? true, sqlite -, curlSupport ? true, curl -, audiofileSupport ? true, audiofile -, bzip2Support ? true, bzip2 -, ffmpegSupport ? true, ffmpeg -, fluidsynthSupport ? true, fluidsynth -, zipSupport ? true, zziplib -, samplerateSupport ? true, libsamplerate -, mmsSupport ? true, libmms -, mpg123Support ? true, mpg123 -, aacSupport ? true, faad2 -, lameSupport ? true, lame -, pulseaudioSupport ? true, libpulseaudio -, jackSupport ? true, libjack2 -, gmeSupport ? true, game-music-emu -, icuSupport ? true, icu -, clientSupport ? true, mpd_clientlib -, opusSupport ? true, libopus -, soundcloudSupport ? true, yajl -, nfsSupport ? true, libnfs -, smbSupport ? true, samba +{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, glib, systemd, boost, darwin +# Inputs +, curl, libmms, libnfs, samba +# Archive support +, bzip2, zziplib +# Codecs +, audiofile, faad2, ffmpeg, flac, fluidsynth, game-music-emu +, libmad, libmikmod, mpg123, libopus, libvorbis, lame +# Filters +, libsamplerate +# Outputs +, alsaLib, libjack2, libpulseaudio, libshout +# Misc +, icu, sqlite, avahi, dbus, pcre, libgcrypt, expat +# Services +, yajl +# Client support +, mpd_clientlib +# Tag support +, libid3tag }: -assert avahiSupport -> avahi != null && dbus != null; - let - opt = stdenv.lib.optional; - mkFlag = c: f: if c then "--enable-${f}" else "--disable-${f}"; - major = "0.20"; - minor = "23"; - -in stdenv.mkDerivation rec { - pname = "mpd"; - version = "${major}${if minor == "" then "" else "." + minor}"; + lib = stdenv.lib; - src = fetchFromGitHub { - owner = "MusicPlayerDaemon"; - repo = "MPD"; - rev = "v${version}"; - sha256 = "1z1pdgiddimnmck0ardrpxkvgk1wn9zxri5wfv5ppasbb7kfm350"; + featureDependencies = { + # Storage plugins + udisks = [ dbus ]; + webdav = [ curl expat ]; + # Input plugins + curl = [ curl ]; + mms = [ libmms ]; + nfs = [ libnfs ]; + smbclient = [ samba ]; + # Archive support + bzip2 = [ bzip2 ]; + zzip = [ zziplib ]; + # Decoder plugins + audiofile = [ audiofile ]; + faad = [ faad2 ]; + ffmpeg = [ ffmpeg ]; + flac = [ flac ]; + fluidsynth = [ fluidsynth ]; + gme = [ game-music-emu ]; + mad = [ libmad ]; + mikmod = [ libmikmod ]; + mpg123 = [ mpg123 ]; + opus = [ libopus ]; + vorbis = [ libvorbis ]; + # Encoder plugins + vorbisenc = [ libvorbis ]; + lame = [ lame ]; + # Filter plugins + libsamplerate = [ libsamplerate ]; + # Output plugins + alsa = [ alsaLib ]; + jack = [ libjack2 ]; + pulse = [ libpulseaudio ]; + shout = [ libshout ]; + # Commercial services + qobuz = [ curl libgcrypt yajl ]; + soundcloud = [ curl yajl ]; + tidal = [ curl yajl ]; + # Client support + libmpdclient = [ mpd_clientlib ]; + # Tag support + id3tag = [ libid3tag ]; + # Misc + dbus = [ dbus ]; + expat = [ expat ]; + icu = [ icu ]; + pcre = [ pcre ]; + sqlite = [ sqlite ]; + syslog = [ ]; + systemd = [ systemd ]; + yajl = [ yajl ]; + zeroconf = [ avahi dbus ]; }; - patches = [ ./x86.patch ]; + run = { features ? null }: + let + # Disable platform specific features if needed + # using libmad to decode mp3 files on darwin is causing a segfault -- there + # is probably a solution, but I'm disabling it for now + platformMask = lib.optionals stdenv.isDarwin [ "mad" "pulse" "jack" "nfs" "smb" ] + ++ lib.optionals (!stdenv.isLinux) [ "alsa" "systemd" "syslog" ]; - buildInputs = [ glib boost ] - ++ opt stdenv.isDarwin darwin.apple_sdk.frameworks.CoreAudioKit - ++ opt stdenv.isLinux systemd - ++ opt (stdenv.isLinux && alsaSupport) alsaLib - ++ opt avahiSupport avahi - ++ opt avahiSupport dbus - ++ opt flacSupport flac - ++ opt vorbisSupport libvorbis - # using libmad to decode mp3 files on darwin is causing a segfault -- there - # is probably a solution, but I'm disabling it for now - ++ opt (!stdenv.isDarwin && madSupport) libmad - ++ opt id3tagSupport libid3tag - ++ opt mikmodSupport libmikmod - ++ opt shoutSupport libshout - ++ opt sqliteSupport sqlite - ++ opt curlSupport curl - ++ opt bzip2Support bzip2 - ++ opt audiofileSupport audiofile - ++ opt ffmpegSupport ffmpeg - ++ opt fluidsynthSupport fluidsynth - ++ opt samplerateSupport libsamplerate - ++ opt mmsSupport libmms - ++ opt mpg123Support mpg123 - ++ opt aacSupport faad2 - ++ opt lameSupport lame - ++ opt zipSupport zziplib - ++ opt (!stdenv.isDarwin && pulseaudioSupport) libpulseaudio - ++ opt (!stdenv.isDarwin && jackSupport) libjack2 - ++ opt gmeSupport game-music-emu - ++ opt icuSupport icu - ++ opt clientSupport mpd_clientlib - ++ opt opusSupport libopus - ++ opt soundcloudSupport yajl - ++ opt (!stdenv.isDarwin && nfsSupport) libnfs - ++ opt (!stdenv.isDarwin && smbSupport) samba; + knownFeatures = builtins.attrNames featureDependencies; + platformFeatures = lib.subtractLists platformMask knownFeatures; - nativeBuildInputs = [ autoreconfHook pkgconfig ]; + features_ = if (features == null ) + then platformFeatures + else + let unknown = lib.subtractLists knownFeatures features; in + if (unknown != []) + then throw "Unknown feature(s): ${lib.concatStringsSep " " unknown}" + else + let unsupported = lib.subtractLists platformFeatures features; in + if (unsupported != []) + then throw "Feature(s) ${lib.concatStringsSep " " unsupported} are not supported on ${stdenv.hostPlatform.system}" + else features; - enableParallelBuilding = true; + in stdenv.mkDerivation rec { + pname = "mpd"; + version = "0.21.16"; - configureFlags = - [ (mkFlag (!stdenv.isDarwin && alsaSupport) "alsa") - (mkFlag flacSupport "flac") - (mkFlag vorbisSupport "vorbis") - (mkFlag vorbisSupport "vorbis-encoder") - (mkFlag (!stdenv.isDarwin && madSupport) "mad") - (mkFlag mikmodSupport "mikmod") - (mkFlag id3tagSupport "id3") - (mkFlag shoutSupport "shout") - (mkFlag sqliteSupport "sqlite") - (mkFlag curlSupport "curl") - (mkFlag audiofileSupport "audiofile") - (mkFlag bzip2Support "bzip2") - (mkFlag ffmpegSupport "ffmpeg") - (mkFlag fluidsynthSupport "fluidsynth") - (mkFlag zipSupport "zzip") - (mkFlag samplerateSupport "lsr") - (mkFlag mmsSupport "mms") - (mkFlag mpg123Support "mpg123") - (mkFlag aacSupport "aac") - (mkFlag lameSupport "lame-encoder") - (mkFlag (!stdenv.isDarwin && pulseaudioSupport) "pulse") - (mkFlag (!stdenv.isDarwin && jackSupport) "jack") - (mkFlag stdenv.isDarwin "osx") - (mkFlag icuSupport "icu") - (mkFlag gmeSupport "gme") - (mkFlag clientSupport "libmpdclient") - (mkFlag opusSupport "opus") - (mkFlag soundcloudSupport "soundcloud") - (mkFlag (!stdenv.isDarwin && nfsSupport) "libnfs") - (mkFlag (!stdenv.isDarwin && smbSupport) "smbclient") - "--enable-debug" - "--with-zeroconf=avahi" - ] - ++ opt stdenv.isLinux - "--with-systemdsystemunitdir=$(out)/etc/systemd/system"; + src = fetchFromGitHub { + owner = "MusicPlayerDaemon"; + repo = "MPD"; + rev = "v${version}"; + sha256 = "0yfzn1hcyww8z5pp70n7iinycz097vjc6q9fzmfrc6ikvz3db8f4"; + }; - NIX_LDFLAGS = '' - ${if shoutSupport then "-lshout" else ""} - ''; + buildInputs = [ glib boost ] + ++ (lib.concatLists (lib.attrVals features_ featureDependencies)) + ++ lib.optional stdenv.isDarwin darwin.apple_sdk.frameworks.AudioToolbox; - meta = with stdenv.lib; { - description = "A flexible, powerful daemon for playing music"; - homepage = http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki; - license = licenses.gpl2; - maintainers = with maintainers; [ astsmtl fuuzetsu ehmry fpletz ]; - platforms = platforms.unix; + nativeBuildInputs = [ meson ninja pkgconfig ]; - longDescription = '' - Music Player Daemon (MPD) is a flexible, powerful daemon for playing - music. Through plugins and libraries it can play a variety of sound - files while being controlled by its network protocol. - ''; - }; + enableParallelBuilding = true; + + mesonAutoFeatures = "disabled"; + mesonFlags = + map (x: "-D${x}=enabled") features_ + ++ map (x: "-D${x}=disabled") (lib.subtractLists features_ knownFeatures) + ++ lib.optional (builtins.elem "zeroconf" features_) + "-Dzeroconf=avahi" + ++ lib.optional (builtins.elem "systemd" features_) + "-Dsystemd_system_unit_dir=etc/systemd/system"; + + meta = with stdenv.lib; { + description = "A flexible, powerful daemon for playing music"; + homepage = http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki; + license = licenses.gpl2; + maintainers = with maintainers; [ astsmtl fuuzetsu ehmry fpletz tobim ]; + platforms = platforms.unix; + + longDescription = '' + Music Player Daemon (MPD) is a flexible, powerful daemon for playing + music. Through plugins and libraries it can play a variety of sound + files while being controlled by its network protocol. + ''; + }; + }; +in +{ + mpd = run { }; + mpd-small = run { features = [ + "webdav" "curl" "mms" "bzip2" "zzip" + "audiofile" "faad" "flac" "gme" "mad" + "mpg123" "opus" "vorbis" "vorbisenc" + "lame" "libsamplerate" "shout" + "libmpdclient" "id3tag" "expat" "pcre" + "yajl" "sqlite" + "soundcloud" "qobuz" "tidal" + ] ++ lib.optionals stdenv.isLinux [ + "alsa" "systemd" "syslog" + ] ++ lib.optionals (!stdenv.isDarwin) [ + "mad" "jack" "nfs" + ]; }; + mpdWithFeatures = run; } |