mpd: fix build on darwin

* disable systemd
* disable alsaLib
* disable ffado
* compile with gccApple
* disable libmad
This commit is contained in:
Jason \"Don\" O'Conal 2013-07-04 15:07:37 +10:00 committed by Rok Garbas
parent 481be8185f
commit 5c8a44fd18
2 changed files with 49 additions and 39 deletions

View File

@ -18,8 +18,7 @@
, samplerateSupport ? true, libsamplerate , samplerateSupport ? true, libsamplerate
, mmsSupport ? true, libmms , mmsSupport ? true, libmms
, mpg123Support ? true, mpg123 , mpg123Support ? true, mpg123
, aacSupport ? true, faad2 , aacSupport ? true, faad2 }:
}:
let let
@ -28,17 +27,20 @@ let
mkFlag = c: f: if c then "--enable-${f}" else "--disable-${f}"; mkFlag = c: f: if c then "--enable-${f}" else "--disable-${f}";
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "mpd-0.17.3"; name = "mpd-0.17.4";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/musicpd/${name}.tar.bz2"; url = "http://www.musicpd.org/download/mpd/stable/${name}.tar.gz";
sha256 = "1iilimlyhw22lpbqiab4qprznxg9c4d68fkrr9jww765b4c7x1ip"; sha256 = "06diyprg65xx0c0bgxdwlgrc5bhwy6cf39rabwnv9ikhimh94ir3";
}; };
buildInputs = [ pkgconfig glib systemd ] buildInputs = [ pkgconfig glib ]
++ opt alsaSupport alsaLib ++ opt (!stdenv.isDarwin) systemd
++ opt (!stdenv.isDarwin && alsaSupport) alsaLib
++ opt flacSupport flac ++ opt flacSupport flac
++ opt vorbisSupport libvorbis ++ opt vorbisSupport libvorbis
++ opt madSupport libmad # 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 id3tagSupport libid3tag
++ opt mikmodSupport libmikmod ++ opt mikmodSupport libmikmod
++ opt shoutSupport libshout ++ opt shoutSupport libshout
@ -47,7 +49,7 @@ in stdenv.mkDerivation rec {
++ opt soupSupport libsoup ++ opt soupSupport libsoup
++ opt bzip2Support bzip2 ++ opt bzip2Support bzip2
++ opt audiofileSupport audiofile ++ opt audiofileSupport audiofile
++ opt ffadoSupport ffado ++ opt (!stdenv.isDarwin && ffadoSupport) ffado
++ opt ffmpegSupport ffmpeg ++ opt ffmpegSupport ffmpeg
++ opt fluidsynthSupport fluidsynth ++ opt fluidsynthSupport fluidsynth
++ opt samplerateSupport libsamplerate ++ opt samplerateSupport libsamplerate
@ -56,13 +58,12 @@ in stdenv.mkDerivation rec {
++ opt aacSupport faad2 ++ opt aacSupport faad2
++ opt zipSupport zziplib; ++ opt zipSupport zziplib;
configureFlags = [ configureFlags =
"--with-systemdsystemunitdir=$(out)/etc/systemd/system" [ (mkFlag (!stdenv.isDarwin && alsaSupport) "alsa")
(mkFlag alsaSupport "alsa")
(mkFlag flacSupport "flac") (mkFlag flacSupport "flac")
(mkFlag vorbisSupport "vorbis") (mkFlag vorbisSupport "vorbis")
(mkFlag vorbisSupport "vorbis-encoder") (mkFlag vorbisSupport "vorbis-encoder")
(mkFlag madSupport "mad") (mkFlag (!stdenv.isDarwin && madSupport) "mad")
(mkFlag mikmodSupport "mikmod") (mkFlag mikmodSupport "mikmod")
(mkFlag id3tagSupport "id3") (mkFlag id3tagSupport "id3")
(mkFlag shoutSupport "shout") (mkFlag shoutSupport "shout")
@ -71,7 +72,7 @@ in stdenv.mkDerivation rec {
(mkFlag soupSupport "soup") (mkFlag soupSupport "soup")
(mkFlag audiofileSupport "audiofile") (mkFlag audiofileSupport "audiofile")
(mkFlag bzip2Support "bzip2") (mkFlag bzip2Support "bzip2")
(mkFlag ffadoSupport "ffado") (mkFlag (!stdenv.isDarwin && ffadoSupport) "ffado")
(mkFlag ffmpegSupport "ffmpeg") (mkFlag ffmpegSupport "ffmpeg")
(mkFlag fluidsynthSupport "fluidsynth") (mkFlag fluidsynthSupport "fluidsynth")
(mkFlag zipSupport "zzip") (mkFlag zipSupport "zzip")
@ -79,22 +80,25 @@ in stdenv.mkDerivation rec {
(mkFlag mmsSupport "mms") (mkFlag mmsSupport "mms")
(mkFlag mpg123Support "mpg123") (mkFlag mpg123Support "mpg123")
(mkFlag aacSupport "aac") (mkFlag aacSupport "aac")
]; "--enable-debugging" ]
++ opt (!stdenv.isDarwin)
"--with-systemdsystemunitdir=$(out)/etc/systemd/system";
NIX_LDFLAGS = '' NIX_LDFLAGS = ''
${if shoutSupport then "-lshout" else ""} ${if shoutSupport then "-lshout" else ""}
''; '';
meta = { meta = with stdenv.lib; {
description = "A flexible, powerful daemon for playing music"; 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 ];
platforms = platforms.unix;
longDescription = '' longDescription = ''
Music Player Daemon (MPD) is a flexible, powerful daemon for playing Music Player Daemon (MPD) is a flexible, powerful daemon for playing
music. Through plugins and libraries it can play a variety of sound music. Through plugins and libraries it can play a variety of sound
files while being controlled by its network protocol. files while being controlled by its network protocol.
''; '';
homepage = http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki;
license = "GPLv2";
maintainers = with stdenv.lib.maintainers; [ astsmtl ];
platforms = with stdenv.lib.platforms; linux;
}; };
} }

View File

@ -5902,7 +5902,13 @@ let
mod_wsgi = callPackage ../servers/http/apache-modules/mod_wsgi { }; mod_wsgi = callPackage ../servers/http/apache-modules/mod_wsgi { };
mpd = callPackage ../servers/mpd { }; mpd = callPackage ../servers/mpd {
# resolve the "stray '@' in program" errors
stdenv = if stdenv.isDarwin
then overrideGCC stdenv gccApple
else stdenv;
};
mpd_clientlib = callPackage ../servers/mpd/clientlib.nix { }; mpd_clientlib = callPackage ../servers/mpd/clientlib.nix { };
miniHttpd = callPackage ../servers/http/mini-httpd {}; miniHttpd = callPackage ../servers/http/mini-httpd {};