aboutsummaryrefslogtreecommitdiff
path: root/pkgs/servers/pulseaudio
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2015-06-04 12:57:12 +0200
committerEelco Dolstra <eelco.dolstra@logicblox.com>2015-06-04 14:54:54 +0200
commitf1d465f429252d7c58a920ad9d7ee93e34e7fad9 (patch)
tree6ba37adf4b205f0d204aae8739f9e34557d28c97 /pkgs/servers/pulseaudio
parentf08c8bc752825ddacb12bcaeea1b2744a45aafd7 (diff)
pulseaudio: Revert to regular style
Also, the NixOS module uses pulseaudioLight in order to prevent excessive dependency bloat.
Diffstat (limited to 'pkgs/servers/pulseaudio')
-rw-r--r--pkgs/servers/pulseaudio/default.nix212
1 files changed, 72 insertions, 140 deletions
diff --git a/pkgs/servers/pulseaudio/default.nix b/pkgs/servers/pulseaudio/default.nix
index 8196caa08d9d..5de447da0dd8 100644
--- a/pkgs/servers/pulseaudio/default.nix
+++ b/pkgs/servers/pulseaudio/default.nix
@@ -1,73 +1,39 @@
-{ stdenv, fetchurl, pkgconfig, intltool, automake, autoconf, libtool
-, json_c, libsndfile, gettext, check
-
-# Optional Dependencies
-, xlibs ? null, libcap ? null, valgrind ? null, oss ? null, coreaudio ? null
-, alsaLib ? null, esound ? null, glib ? null, gtk3 ? null, gconf ? null
-, avahi ? null, libjack2 ? null, libasyncns ? null, lirc ? null, dbus ? null
-, sbc ? null, bluez5 ? null, udev ? null, openssl ? null, fftw ? null
-, speexdsp ? null, systemd ? null, webrtc-audio-processing ? null
+{ lib, stdenv, fetchurl, pkgconfig, intltool, autoreconfHook
+, json_c, libsndfile
+, xlibs, libcap, alsaLib, glib
+, avahi, libjack2, libasyncns, lirc, dbus
+, sbc, bluez5, udev, openssl, fftwFloat
+, speexdsp, systemd, webrtc-audio-processing, gconf ? null
# Database selection
, tdb ? null, gdbm ? null
-# Extra options
-, prefix ? ""
+, x11Support ? false
+
+, useSystemd ? true
+
+, # Whether to support the JACK sound system as a backend.
+ jackaudioSupport ? false
+
+, # Whether to build the OSS wrapper ("padsp").
+ ossWrapper ? true
+
+, airtunesSupport ? false
+
+, gconfSupport ? false
+
+, bluetoothSupport ? false
+
+, remoteControlSupport ? false
+
+, zeroconfSupport ? false
+
+, # Whether to build only the library.
+ libOnly ? false
}:
-let
- mkFlag = trueStr: falseStr: cond: name: val:
- if cond == null then null else
- "--${if cond != false then trueStr else falseStr}${name}${if val != null && cond != false then "=${val}" else ""}";
- mkEnable = mkFlag "enable-" "disable-";
- mkWith = mkFlag "with-" "without-";
- mkOther = mkFlag "" "" true;
-
- shouldUsePkg = pkg: if pkg != null && stdenv.lib.any (x: x == stdenv.system) pkg.meta.platforms then pkg else null;
-
- libOnly = prefix == "lib";
-
- hasXlibs = xlibs != null;
-
- optLibcap = shouldUsePkg libcap;
- hasCaps = optLibcap != null || stdenv.isFreeBSD; # Built-in on FreeBSD
-
- optOss = if libOnly then null else shouldUsePkg oss;
- hasOss = optOss != null || stdenv.isFreeBSD; # Built-in on FreeBSD
-
- optCoreaudio = if libOnly then null else shouldUsePkg coreaudio;
- optAlsaLib = if libOnly then null else shouldUsePkg alsaLib;
- optEsound = if libOnly then null else shouldUsePkg esound;
- optGlib = shouldUsePkg glib;
- optGtk3 = if libOnly || !hasXlibs then null else shouldUsePkg gtk3;
- optGconf = if libOnly then null else shouldUsePkg gconf;
- optAvahi = if libOnly then null else shouldUsePkg avahi;
- optLibjack2 = if libOnly then null else shouldUsePkg libjack2;
- optLibasyncns = shouldUsePkg libasyncns;
- optLirc = if libOnly then null else shouldUsePkg lirc;
- optDbus = shouldUsePkg dbus;
- optSbc = if libOnly then null else shouldUsePkg sbc;
- optBluez5 = if optDbus == null || optSbc == null then null
- else shouldUsePkg bluez5;
- optUdev = if libOnly then null else shouldUsePkg udev;
- optOpenssl = if libOnly then null else shouldUsePkg openssl;
- optFftw = shouldUsePkg fftw;
- optSpeexdsp = shouldUsePkg speexdsp;
- optSystemd = shouldUsePkg systemd;
- optWebrtc-audio-processing = if libOnly then null else shouldUsePkg webrtc-audio-processing;
- hasWebrtc = if libOnly then null else optWebrtc-audio-processing != null;
-
- # Pick a database to use
- databaseName = if tdb != null then "tdb" else
- if gdbm != null then "gdbm" else "simple";
- database = {
- tdb = tdb;
- gdbm = gdbm;
- simple = null;
- }.${databaseName};
-in
stdenv.mkDerivation rec {
- name = "${prefix}pulseaudio-${version}";
+ name = "${if libOnly then "lib" else ""}pulseaudio-${version}";
version = "6.0";
src = fetchurl {
@@ -77,16 +43,23 @@ stdenv.mkDerivation rec {
patches = [ ./caps-fix.patch ];
- nativeBuildInputs = [ pkgconfig intltool automake autoconf libtool ];
- buildInputs = [
- json_c libsndfile gettext check database
-
- optLibcap valgrind optOss optCoreaudio optAlsaLib optEsound optGlib
- optGtk3 optGconf optAvahi optLibjack2 optLibasyncns optLirc optDbus optUdev
- optOpenssl optFftw optSpeexdsp optSystemd optWebrtc-audio-processing
- ] ++ stdenv.lib.optionals hasXlibs (with xlibs; [
- libX11 libxcb libICE libSM libXtst xextproto libXi
- ]) ++ stdenv.lib.optionals (optBluez5 != null) [ optBluez5 optSbc ];
+ nativeBuildInputs = [ pkgconfig intltool autoreconfHook ];
+
+ buildInputs =
+ [ json_c libsndfile speexdsp fftwFloat ]
+ ++ lib.optionals stdenv.isLinux [ libcap glib dbus.libs ]
+ ++ lib.optionals (!libOnly) (
+ [ libasyncns webrtc-audio-processing ]
+ ++ lib.optional jackaudioSupport libjack2
+ ++ lib.optionals x11Support [ xlibs.xlibs xlibs.libXtst xlibs.libXi ]
+ ++ lib.optional useSystemd systemd
+ ++ lib.optionals stdenv.isLinux [ alsaLib udev ]
+ ++ lib.optional airtunesSupport openssl
+ ++ lib.optional gconfSupport gconf
+ ++ lib.optionals bluetoothSupport [ bluez5 sbc ]
+ ++ lib.optional remoteControlSupport lirc
+ ++ lib.optional zeroconfSupport avahi
+ );
preConfigure = ''
# Performs and autoreconf
@@ -98,62 +71,24 @@ stdenv.mkDerivation rec {
sed -i "src/Makefile.in" \
-e "s|udevrulesdir[[:blank:]]*=.*$|udevrulesdir = $out/lib/udev/rules.d|g"
- # don't install proximity-helper as root and setuid
- sed -i "src/Makefile.in" \
- -e "s|chown root|true |" \
- -e "s|chmod r+s |true |"
+ # don't install proximity-helper as root and setuid
+ sed -i "src/Makefile.in" \
+ -e "s|chown root|true |" \
+ -e "s|chmod r+s |true |"
'';
- configureFlags = [
- (mkOther "localstatedir" "/var")
- (mkOther "sysconfdir" "/etc")
- (mkEnable false "atomic-arm-memory-barrier" null) # TODO: Enable on armv8
- (mkEnable false "neon-opt" null) # TODO: Enable on armv8
- (mkEnable hasXlibs "x11" null)
- (mkWith hasCaps "caps" optLibcap)
- (mkEnable true "tests" null)
- (mkEnable false "samplerate" null) # Deprecated
- (mkWith true "database" databaseName)
- (mkEnable hasOss "oss-output" null)
- (mkEnable true "oss-wrapper" null) # Does not use OSS
- (mkEnable (optCoreaudio != null) "coreaudio-output" null)
- (mkEnable (optAlsaLib != null) "alsa" null)
- (mkEnable (optEsound != null) "esound" null)
- (mkEnable false "solaris" null)
- (mkEnable false "waveout" null) # Windows Only
- (mkEnable (optGlib != null) "glib2" null)
- (mkEnable (optGtk3 != null) "gtk3" null)
- (mkEnable (optGconf != null) "gconf" null)
- (mkEnable (optAvahi != null) "avahi" null)
- (mkEnable (optLibjack2 != null) "jack" null)
- (mkEnable (optLibasyncns != null) "asyncns" null)
- (mkEnable false "tcpwrap" null)
- (mkEnable (optLirc != null) "lirc" null)
- (mkEnable (optDbus != null) "dbus" null)
- (mkEnable false "bluez4" null)
- (mkEnable (optBluez5 != null) "bluez5" null)
- (mkEnable (optBluez5 != null) "bluez5-ofono-headset" null)
- (mkEnable (optBluez5 != null) "bluez5-native-headset" null)
- (mkEnable (optUdev != null) "udev" null)
- (mkEnable false "hal-compat" null)
- (mkEnable true "ipv6" null)
- (mkEnable (optOpenssl != null) "openssl" null)
- (mkWith (optFftw != null) "fftw" null)
- (mkWith (optSpeexdsp != null) "speex" null)
- (mkEnable false "xen" null)
- (mkEnable false "gcov" null)
- (mkEnable (optSystemd != null) "systemd-daemon" null)
- (mkEnable (optSystemd != null) "systemd-login" null)
- (mkEnable (optSystemd != null) "systemd-journal" null)
- (mkEnable true "manpages" null)
- (mkEnable hasWebrtc "webrtc-aec" null)
- (mkEnable true "adrian-aec" null)
- (mkWith true "system-user" "pulse")
- (mkWith true "system-group" "pulse")
- (mkWith true "access-group" "audio")
- (mkWith true "systemduserunitdir" "\${out}/lib/systemd/user")
- (mkWith stdenv.isDarwin "mac-sysroot" "/")
- ];
+ configureFlags =
+ [ "--disable-solaris"
+ "--disable-jack"
+ "--disable-oss-output"
+ ] ++ lib.optional (!ossWrapper) "--disable-oss-wrapper" ++
+ [ "--localstatedir=/var"
+ "--sysconfdir=/etc"
+ "--with-access-group=audio"
+ ]
+ ++ lib.optional (jackaudioSupport && !libOnly) "--enable-jack"
+ ++ lib.optional stdenv.isDarwin "--with-mac-sysroot=/"
+ ++ lib.optional (stdenv.isLinux && useSystemd) "--with-systemduserunitdir=\${out}/lib/systemd/user";
enableParallelBuilding = true;
@@ -162,26 +97,23 @@ stdenv.mkDerivation rec {
# the alternative is to copy the files from /usr/include to src, but there are
# probably a large number of files that would need to be copied (I stopped
# after the seventh)
- NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.isDarwin
- "-I/usr/include";
+ NIX_CFLAGS_COMPILE = lib.optionalString stdenv.isDarwin "-I/usr/include";
- installFlags = [
- "sysconfdir=$(out)/etc"
- "pulseconfdir=$(out)/etc/pulse"
- ];
+ installFlags =
+ [ "sysconfdir=$(out)/etc"
+ "pulseconfdir=$(out)/etc/pulse"
+ ];
- postInstall = stdenv.lib.optionalString libOnly ''
+ postInstall = lib.optionalString libOnly ''
rm -rf $out/{bin,share,etc,lib/{pulse-*,systemd}}
'';
- meta = with stdenv.lib; {
+ meta = {
description = "Sound server for POSIX and Win32 systems";
homepage = http://www.pulseaudio.org/;
- # Note: Practically, the server is under the GPL due to the
- # dependency on `libsamplerate'. See `LICENSE' for details.
- licenses = licenses.lgpl2Plus;
- maintainers = with maintainers; [ lovek323 wkennington ];
- platforms = platforms.unix;
+ licenses = lib.licenses.lgpl2Plus;
+ maintainers = with lib.maintainers; [ lovek323 wkennington ];
+ platforms = lib.platforms.unix;
longDescription = ''
PulseAudio is a sound server for POSIX and Win32 systems. A