pulseaudio: Revert to regular style

Also, the NixOS module uses pulseaudioLight in order to prevent
excessive dependency bloat.
wip/yesman
Eelco Dolstra 9 years ago
parent f08c8bc752
commit f1d465f429
  1. 8
      nixos/modules/config/pulseaudio.nix
  2. 212
      pkgs/servers/pulseaudio/default.nix
  3. 38
      pkgs/top-level/all-packages.nix

@ -89,12 +89,12 @@ in {
package = mkOption {
type = types.package;
default = pulseaudioFull;
default = pulseaudioLight;
example = literalExample "pkgs.pulseaudioFull";
description = ''
The PulseAudio derivation to use. This can be used to disable
features (such as JACK support, Bluetooth) that are enabled in the
pulseaudioFull package in Nixpkgs.
The PulseAudio derivation to use. This can be used to enable
features (such as JACK support, Bluetooth) via the
<literal>pulseaudioFull</literal> package.
'';
};

@ -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

@ -8816,37 +8816,21 @@ let
pshs = callPackage ../servers/http/pshs { };
libpulseaudio = pulseaudioFull.override {
prefix = "lib";
};
libpulseaudio = callPackage ../servers/pulseaudio { libOnly = true; };
# Name is changed to prevent use in packages
# please use libpulseaudio instead
pulseaudioLight = pulseaudioFull.override {
# The following are disabled in the default build, because if this
# functionality is desired, they are only needed in the PulseAudio
# server.
xlibs = null;
coreaudio = null;
esound = null;
libjack2 = null;
avahi = null;
lirc = null;
bluez5 = null;
tdb = null;
gdbm = null;
gtk3 = null;
webrtc-audio-processing = null;
gconf = null;
libasyncns = null;
};
# Name is changed to prevent use in packages;
# please use libpulseaudio instead.
pulseaudioLight = callPackage ../servers/pulseaudio { };
pulseaudioFull = callPackage ../servers/pulseaudio {
gconf = gnome3.gconf;
fftw = fftwFloat;
# Disabled unless debugging
valgrind = null;
x11Support = true;
jackaudioSupport = true;
airtunesSupport = true;
gconfSupport = true;
bluetoothSupport = true;
remoteControlSupport = true;
zeroconfSupport = true;
};
tomcat_connectors = callPackage ../servers/http/apache-modules/tomcat-connectors { };

Loading…
Cancel
Save