cmus: rewrite expression, add more options, fixes #11483

authored by Jan Malakhovski and committed by Rok Garbas 74724837 3ef66919

+147 -4
+99 -3
pkgs/applications/audio/cmus/default.nix
··· 1 - { stdenv, fetchFromGitHub, ncurses, pkgconfig, alsaLib, flac, libmad, ffmpeg, libvorbis, libmpc, mp4v2, libcue, libpulseaudio}: 1 + { stdenv, fetchFromGitHub, ncurses, pkgconfig 2 + 3 + , alsaSupport ? stdenv.isLinux, alsaLib ? null 4 + # simple fallback for everyone else 5 + , aoSupport ? !stdenv.isLinux, libao ? null 6 + , jackSupport ? false, libjack ? null 7 + , samplerateSupport ? jackSupport, libsamplerate ? null 8 + , ossSupport ? false, alsaOss ? null 9 + , pulseaudioSupport ? false, libpulseaudio ? null 10 + 11 + # TODO: add these 12 + #, artsSupport 13 + #, roarSupport 14 + #, sndioSupport 15 + #, sunSupport 16 + #, waveoutSupport 17 + 18 + , cddbSupport ? true, libcddb ? null 19 + , cdioSupport ? true, libcdio ? null 20 + , cueSupport ? true, libcue ? null 21 + , discidSupport ? true, libdiscid ? null 22 + , ffmpegSupport ? true, ffmpeg ? null 23 + , flacSupport ? true, flac ? null 24 + , madSupport ? true, libmad ? null 25 + , mikmodSupport ? true, libmikmod ? null 26 + , modplugSupport ? true, libmodplug ? null 27 + , mpcSupport ? true, libmpcdec ? null 28 + , tremorSupport ? false, tremor ? null 29 + , vorbisSupport ? true, libvorbis ? null 30 + , wavpackSupport ? true, wavpack ? null 31 + 32 + # can't make these work, something is broken 33 + #, aacSupport ? true, faac ? null 34 + #, mp4Support ? true, mp4v2 ? null 35 + #, opusSupport ? true, opusfile ? null 36 + 37 + # not in nixpkgs 38 + #, vtxSupport ? true, libayemu ? null 39 + }: 40 + 41 + with stdenv.lib; 42 + 43 + assert samplerateSupport -> jackSupport; 44 + 45 + # vorbis and tremor are mutually exclusive 46 + assert vorbisSupport -> !tremorSupport; 47 + assert tremorSupport -> !vorbisSupport; 48 + 49 + let 50 + 51 + mkFlag = b: f: dep: if b 52 + then { flags = [ f ]; deps = [ dep ]; } 53 + else { flags = []; deps = []; }; 54 + 55 + opts = [ 56 + # Audio output 57 + (mkFlag alsaSupport "CONFIG_ALSA=y" alsaLib) 58 + (mkFlag aoSupport "CONFIG_AO=y" libao) 59 + (mkFlag jackSupport "CONFIG_JACK=y" libjack) 60 + (mkFlag samplerateSupport "CONFIG_SAMPLERATE=y" libsamplerate) 61 + (mkFlag ossSupport "CONFIG_OSS=y" alsaOss) 62 + (mkFlag pulseaudioSupport "CONFIG_PULSE=y" libpulseaudio) 63 + 64 + #(mkFlag artsSupport "CONFIG_ARTS=y") 65 + #(mkFlag roarSupport "CONFIG_ROAR=y") 66 + #(mkFlag sndioSupport "CONFIG_SNDIO=y") 67 + #(mkFlag sunSupport "CONFIG_SUN=y") 68 + #(mkFlag waveoutSupport "CONFIG_WAVEOUT=y") 69 + 70 + # Input file formats 71 + (mkFlag cddbSupport "CONFIG_CDDB=y" libcddb) 72 + (mkFlag cdioSupport "CONFIG_CDIO=y" libcdio) 73 + (mkFlag cueSupport "CONFIG_CUE=y" libcue) 74 + (mkFlag discidSupport "CONFIG_DISCID=y" libdiscid) 75 + (mkFlag ffmpegSupport "CONFIG_FFMPEG=y" ffmpeg) 76 + (mkFlag flacSupport "CONFIG_FLAC=y" flac) 77 + (mkFlag madSupport "CONFIG_MAD=y" libmad) 78 + (mkFlag mikmodSupport "CONFIG_MIKMOD=y" libmikmod) 79 + (mkFlag modplugSupport "CONFIG_MODPLUG=y" libmodplug) 80 + (mkFlag mpcSupport "CONFIG_MPC=y" libmpcdec) 81 + (mkFlag tremorSupport "CONFIG_TREMOR=y" tremor) 82 + (mkFlag vorbisSupport "CONFIG_VORBIS=y" libvorbis) 83 + (mkFlag wavpackSupport "CONFIG_WAVPACK=y" wavpack) 84 + 85 + #(mkFlag opusSupport "CONFIG_OPUS=y" opusfile) 86 + #(mkFlag mp4Support "CONFIG_MP4=y" mp4v2) 87 + #(mkFlag aacSupport "CONFIG_AAC=y" faac) 88 + 89 + #(mkFlag vtxSupport "CONFIG_VTX=y" libayemu) 90 + ]; 91 + 92 + in 2 93 3 94 stdenv.mkDerivation rec { 4 95 name = "cmus-${version}"; ··· 11 102 sha256 = "18w9mznb843nzkrcqvshfha51mlpdl92zlvb5wfc5dpgrbf37728"; 12 103 }; 13 104 14 - configurePhase = "./configure prefix=$out"; 105 + patches = [ ./option-debugging.patch ]; 106 + 107 + configurePhase = "./configure " + concatStringsSep " " ([ 108 + "prefix=$out" 109 + "CONFIG_WAV=y" 110 + ] ++ concatMap (a: a.flags) opts); 15 111 16 - buildInputs = [ ncurses pkgconfig alsaLib flac libmad ffmpeg libvorbis libmpc mp4v2 libcue libpulseaudio ]; 112 + buildInputs = [ ncurses pkgconfig ] ++ concatMap (a: a.deps) opts; 17 113 18 114 meta = { 19 115 description = "Small, fast and powerful console music player for Linux and *BSD";
+42
pkgs/applications/audio/cmus/option-debugging.patch
··· 1 + Shows build and link errors in configure for ease of debugging which 2 + options require what. 3 + diff --git a/scripts/checks.sh b/scripts/checks.sh 4 + index 64cbbf3..fab4d9b 100644 5 + --- a/scripts/checks.sh 6 + +++ b/scripts/checks.sh 7 + @@ -425,7 +425,7 @@ try_compile() 8 + echo "$1" > $__src || exit 1 9 + shift 10 + __cmd="$CC -c $CFLAGS $@ $__src -o $__obj" 11 + - $CC -c $CFLAGS "$@" $__src -o $__obj 2>/dev/null 12 + + $CC -c $CFLAGS "$@" $__src -o $__obj 13 + ;; 14 + cxx) 15 + __src=`tmp_file prog.cc` 16 + @@ -433,7 +433,7 @@ try_compile() 17 + echo "$1" > $__src || exit 1 18 + shift 19 + __cmd="$CXX -c $CXXFLAGS $@ $__src -o $__obj" 20 + - $CXX -c $CXXFLAGS "$@" $__src -o $__obj 2>/dev/null 21 + + $CXX -c $CXXFLAGS "$@" $__src -o $__obj 22 + ;; 23 + esac 24 + return $? 25 + @@ -451,7 +451,7 @@ try_compile_link() 26 + echo "$1" > $__src || exit 1 27 + shift 28 + __cmd="$CC $__src -o $__exe $CFLAGS $LDFLAGS $@" 29 + - $CC $__src -o $__exe $CFLAGS $LDFLAGS "$@" 2>/dev/null 30 + + $CC $__src -o $__exe $CFLAGS $LDFLAGS "$@" 31 + ;; 32 + cxx) 33 + __src=`tmp_file prog.cc` 34 + @@ -459,7 +459,7 @@ try_compile_link() 35 + echo "$1" > $__src || exit 1 36 + shift 37 + __cmd="$CXX $__src -o $__exe $CXXFLAGS $CXXLDFLAGS $@" 38 + - $CXX $__src -o $__exe $CXXFLAGS $CXXLDFLAGS "$@" 2>/dev/null 39 + + $CXX $__src -o $__exe $CXXFLAGS $CXXLDFLAGS "$@" 40 + ;; 41 + esac 42 + return $?
+6 -1
pkgs/top-level/all-packages.nix
··· 11234 11234 pulseSupport = config.pulseaudio or true; 11235 11235 }; 11236 11236 11237 - cmus = callPackage ../applications/audio/cmus { }; 11237 + cmus = callPackage ../applications/audio/cmus { 11238 + libjack = libjack2; 11239 + libcdio = libcdio082; 11240 + 11241 + pulseaudioSupport = config.pulseaudio or false; 11242 + }; 11238 11243 11239 11244 CompBus = callPackage ../applications/audio/CompBus { }; 11240 11245