about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/pipewire
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2021-06-23 08:16:49 +0000
committerAlyssa Ross <hi@alyssa.is>2021-06-23 08:16:49 +0000
commit4dc730a187d41f9f2dce4fe2680c32dcecb79b93 (patch)
tree67673deb1649dc0a40962e70e6da302d7b6c4bf0 /nixpkgs/pkgs/development/libraries/pipewire
parent633cab0ecb07627706c6b523e219490f019eaab5 (diff)
parent7e567a3d092b7de69cdf5deaeb8d9526de230916 (diff)
downloadnixlib-4dc730a187d41f9f2dce4fe2680c32dcecb79b93.tar
nixlib-4dc730a187d41f9f2dce4fe2680c32dcecb79b93.tar.gz
nixlib-4dc730a187d41f9f2dce4fe2680c32dcecb79b93.tar.bz2
nixlib-4dc730a187d41f9f2dce4fe2680c32dcecb79b93.tar.lz
nixlib-4dc730a187d41f9f2dce4fe2680c32dcecb79b93.tar.xz
nixlib-4dc730a187d41f9f2dce4fe2680c32dcecb79b93.tar.zst
nixlib-4dc730a187d41f9f2dce4fe2680c32dcecb79b93.zip
Merge commit '7e567a3d092b7de69cdf5deaeb8d9526de230916'
# Conflicts:
#	nixpkgs/pkgs/top-level/all-packages.nix
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/pipewire')
-rw-r--r--nixpkgs/pkgs/development/libraries/pipewire/0080-pipewire-config-dir.patch24
-rw-r--r--nixpkgs/pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch28
-rw-r--r--nixpkgs/pkgs/development/libraries/pipewire/default.nix44
3 files changed, 74 insertions, 22 deletions
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/0080-pipewire-config-dir.patch b/nixpkgs/pkgs/development/libraries/pipewire/0080-pipewire-config-dir.patch
index b92e2818ea07..b8d8fcb0f905 100644
--- a/nixpkgs/pkgs/development/libraries/pipewire/0080-pipewire-config-dir.patch
+++ b/nixpkgs/pkgs/development/libraries/pipewire/0080-pipewire-config-dir.patch
@@ -1,30 +1,30 @@
 diff --git a/meson.build b/meson.build
-index a27569bd..fcf18344 100644
+index b6b4553b..f21c29d8 100644
 --- a/meson.build
 +++ b/meson.build
-@@ -36,7 +36,10 @@ pipewire_libexecdir = prefix / get_option('libexecdir')
- pipewire_localedir = prefix / get_option('localedir')
+@@ -37,7 +37,10 @@ pipewire_localedir = prefix / get_option('localedir')
  pipewire_sysconfdir = prefix / get_option('sysconfdir')
  
--pipewire_configdir = pipewire_sysconfdir / 'pipewire'
-+pipewire_configdir = get_option('pipewire_config_dir')
-+if pipewire_configdir == ''
-+  pipewire_configdir = pipewire_sysconfdir / 'pipewire'
+ pipewire_configdir = pipewire_sysconfdir / 'pipewire'
+-pipewire_confdatadir = pipewire_datadir / 'pipewire'
++pipewire_confdatadir = get_option('pipewire_confdata_dir')
++if pipewire_confdatadir == ''
++  pipewire_confdatadir = pipewire_datadir / 'pipewire'
 +endif
  modules_install_dir = pipewire_libdir / pipewire_name
  
  if host_machine.system() == 'linux'
 diff --git a/meson_options.txt b/meson_options.txt
-index 85beb86a..372e8faa 100644
+index 9bc33fcd..e4bd2dc1 100644
 --- a/meson_options.txt
 +++ b/meson_options.txt
-@@ -67,6 +67,9 @@ option('jack-devel',
+@@ -61,6 +61,9 @@ option('jack-devel',
  option('libjack-path',
         description: 'Where to install the libjack.so library',
         type: 'string')
-+option('pipewire_config_dir',
-+       type : 'string',
-+       description : 'Directory for pipewire configuration (defaults to /etc/pipewire)')
++option('pipewire_confdata_dir',
++       type: 'string',
++       description: 'Directory for pipewire default configuration (defaults to /usr/share/pipewire)')
  option('spa-plugins',
         description: 'Enable spa plugins integration',
         type: 'feature',
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch b/nixpkgs/pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch
new file mode 100644
index 000000000000..966cb9579777
--- /dev/null
+++ b/nixpkgs/pkgs/development/libraries/pipewire/0090-pipewire-config-template-paths.patch
@@ -0,0 +1,28 @@
+diff --git a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in
+index bbafa134..227d3e06 100644
+--- a/src/daemon/pipewire.conf.in
++++ b/src/daemon/pipewire.conf.in
+@@ -116,7 +116,7 @@ context.modules = [
+             # access.allowed to list an array of paths of allowed
+             # apps.
+             #access.allowed = [
+-            #    @media_session_path@
++            #    <media_session_path>
+             #]
+ 
+             # An array of rejected paths.
+@@ -220,12 +220,12 @@ context.exec = [
+     # but it is better to start it as a systemd service.
+     # Run the session manager with -h for options.
+     #
+-    @comment@{ path = "@media_session_path@"  args = "" }
++    @comment@{ path = "<media_session_path>"  args = "" }
+     #
+     # You can optionally start the pulseaudio-server here as well
+     # but it is better to start it as a systemd service.
+     # It can be interesting to start another daemon here that listens
+     # on another address with the -a option (eg. -a tcp:4713).
+     #
+-    @comment@{ path = "@pipewire_path@" args = "-c pipewire-pulse.conf" }
++    @comment@{ path = "<pipewire_path>" args = "-c pipewire-pulse.conf" }
+ ]
diff --git a/nixpkgs/pkgs/development/libraries/pipewire/default.nix b/nixpkgs/pkgs/development/libraries/pipewire/default.nix
index 40f4e328c317..8504d2669849 100644
--- a/nixpkgs/pkgs/development/libraries/pipewire/default.nix
+++ b/nixpkgs/pkgs/development/libraries/pipewire/default.nix
@@ -2,6 +2,7 @@
 , lib
 , fetchFromGitLab
 , removeReferencesTo
+, python3
 , meson
 , ninja
 , systemd
@@ -19,6 +20,7 @@
 , SDL2
 , vulkan-headers
 , vulkan-loader
+, webrtc-audio-processing
 , ncurses
 , makeFontsConf
 , callPackage
@@ -31,6 +33,8 @@
 , nativeHfpSupport ? true
 , ofonoSupport ? true
 , hsphfpdSupport ? true
+, pulseTunnelSupport ? true, libpulseaudio ? null
+, zeroconfSupport ? true, avahi ? null
 }:
 
 let
@@ -42,7 +46,7 @@ let
 
   self = stdenv.mkDerivation rec {
     pname = "pipewire";
-    version = "0.3.27";
+    version = "0.3.30";
 
     outputs = [
       "out"
@@ -60,7 +64,7 @@ let
       owner = "pipewire";
       repo = "pipewire";
       rev = version;
-      sha256 = "sha256-GfcMODQWtcahBvXnZ98/PKIm4pkqLaz09oOy7zQR4IA=";
+      sha256 = "sha256-DnaPvZoDaegjtJNKBmCJEAZe5FQBnSER79FPnxiWQUE=";
     };
 
     patches = [
@@ -72,8 +76,10 @@ let
       ./0055-pipewire-media-session-path.patch
       # Move installed tests into their own output.
       ./0070-installed-tests-path.patch
-      # Add flag to specify configuration directory (different from the installation directory).
+      # Add option for changing the config install directory
       ./0080-pipewire-config-dir.patch
+      # Remove output paths from the comments in the config templates to break dependency cycles
+      ./0090-pipewire-config-template-paths.patch
     ];
 
     nativeBuildInputs = [
@@ -82,6 +88,7 @@ let
       meson
       ninja
       pkg-config
+      python3
     ];
 
     buildInputs = [
@@ -94,12 +101,15 @@ let
       udev
       vulkan-headers
       vulkan-loader
+      webrtc-audio-processing
       valgrind
       SDL2
       systemd
     ] ++ lib.optionals gstreamerSupport [ gst_all_1.gst-plugins-base gst_all_1.gstreamer ]
     ++ lib.optional ffmpegSupport ffmpeg
-    ++ lib.optionals bluezSupport [ bluez libopenaptx ldacbt sbc fdk_aac ];
+    ++ lib.optionals bluezSupport [ bluez libopenaptx ldacbt sbc fdk_aac ]
+    ++ lib.optional pulseTunnelSupport libpulseaudio
+    ++ lib.optional zeroconfSupport avahi;
 
     mesonFlags = [
       "-Ddocs=enabled"
@@ -112,6 +122,8 @@ let
       "-Dmedia-session-prefix=${placeholder "mediaSession"}"
       "-Dlibjack-path=${placeholder "jack"}/lib"
       "-Dlibcamera=disabled"
+      "-Dlibpulse=${mesonEnable pulseTunnelSupport}"
+      "-Davahi=${mesonEnable zeroconfSupport}"
       "-Dgstreamer=${mesonEnable gstreamerSupport}"
       "-Dffmpeg=${mesonEnable ffmpegSupport}"
       "-Dbluez5=${mesonEnable bluezSupport}"
@@ -119,24 +131,35 @@ let
       "-Dbluez5-backend-hfp-native=${mesonEnable nativeHfpSupport}"
       "-Dbluez5-backend-ofono=${mesonEnable ofonoSupport}"
       "-Dbluez5-backend-hsphfpd=${mesonEnable hsphfpdSupport}"
-      "-Dpipewire_config_dir=/etc/pipewire"
+      "-Dsysconfdir=/etc"
+      "-Dpipewire_confdata_dir=${placeholder "lib"}/share/pipewire"
     ];
 
     FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file
 
     doCheck = true;
 
+    postUnpack = ''
+      patchShebangs source/doc/strip-static.sh
+      patchShebangs source/spa/tests/gen-cpp-test.py
+    '';
+
     postInstall = ''
-      pushd .
-      cd $out
+      pushd $lib/share
       mkdir -p $out/nix-support/etc/pipewire
-      for f in etc/pipewire/*.conf; do bin/spa-json-dump "$f" > "$out/nix-support/$f.json"; done
+      for f in pipewire/*.conf; do
+        echo "Generating JSON from $f"
+        $out/bin/spa-json-dump "$f" > "$out/nix-support/etc/$f.json"
+      done
 
       mkdir -p $mediaSession/nix-support/etc/pipewire/media-session.d
-      for f in etc/pipewire/media-session.d/*.conf; do bin/spa-json-dump "$f" > "$mediaSession/nix-support/$f.json"; done
+      for f in pipewire/media-session.d/*.conf; do
+        echo "Generating JSON from $f"
+        $out/bin/spa-json-dump "$f" > "$mediaSession/nix-support/etc/$f.json"
+      done
       popd
 
-      moveToOutput "etc/pipewire/media-session.d/*.conf" "$mediaSession"
+      moveToOutput "share/pipewire/media-session.d/*.conf" "$mediaSession"
       moveToOutput "share/systemd/user/pipewire-media-session.*" "$mediaSession"
       moveToOutput "lib/systemd/user/pipewire-media-session.*" "$mediaSession"
       moveToOutput "bin/pipewire-media-session" "$mediaSession"
@@ -155,6 +178,7 @@ let
         test-paths = callPackage ./test-paths.nix {
           paths-out = [
             "share/alsa/alsa.conf.d/50-pipewire.conf"
+            "nix-support/etc/pipewire/client-rt.conf.json"
             "nix-support/etc/pipewire/client.conf.json"
             "nix-support/etc/pipewire/jack.conf.json"
             "nix-support/etc/pipewire/pipewire.conf.json"