aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/0.2.nix4
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/alsa-profiles-use-libdir.patch13
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/default.nix96
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/installed-tests-path.patch29
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/pipewire-config-dir.patch30
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/pipewire-pulse-path.patch24
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/test-paths.nix23
7 files changed, 195 insertions, 24 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/0.2.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/0.2.nix
index 1dbfe0647f47..eaedc2c0ac3e 100644
--- a/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/0.2.nix
+++ b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/0.2.nix
@@ -1,5 +1,5 @@
{ stdenv, fetchFromGitHub, meson, ninja, pkgconfig, doxygen, graphviz, valgrind
-, glib, dbus, gst_all_1, alsaLib, ffmpeg_3, libjack2, udev, libva, xorg
+, glib, dbus, gst_all_1, alsaLib, ffmpeg_4, libjack2, udev, libva, xorg
, sbc, SDL2, makeFontsConf
}:
@@ -25,7 +25,7 @@ in stdenv.mkDerivation rec {
];
buildInputs = [
glib dbus gst_all_1.gst-plugins-base gst_all_1.gstreamer
- alsaLib ffmpeg_3 libjack2 udev libva xorg.libX11 sbc SDL2
+ alsaLib ffmpeg_4 libjack2 udev libva xorg.libX11 sbc SDL2
];
mesonFlags = [
diff --git a/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/alsa-profiles-use-libdir.patch b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/alsa-profiles-use-libdir.patch
new file mode 100644
index 000000000000..c657d12f7d0c
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/alsa-profiles-use-libdir.patch
@@ -0,0 +1,13 @@
+diff --git a/meson.build b/meson.build
+index ffee41b4..f3e4ec74 100644
+--- a/meson.build
++++ b/meson.build
+@@ -53,7 +53,7 @@ endif
+
+ spa_plugindir = join_paths(pipewire_libdir, spa_name)
+
+-alsadatadir = join_paths(pipewire_datadir, 'alsa-card-profile', 'mixer')
++alsadatadir = join_paths(pipewire_libdir, '..', 'share', 'alsa-card-profile', 'mixer')
+
+ pipewire_headers_dir = join_paths(pipewire_name, 'pipewire')
+
diff --git a/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/default.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/default.nix
index cb5073f50c15..d07c77f4e2eb 100644
--- a/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/default.nix
+++ b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/default.nix
@@ -1,89 +1,141 @@
{ stdenv
+, lib
, fetchFromGitLab
, fetchpatch
+, removeReferencesTo
, meson
, ninja
+, systemd
, pkgconfig
, doxygen
, graphviz
, valgrind
, glib
, dbus
-, gst_all_1
, alsaLib
-, ffmpeg_3
, libjack2
, udev
, libva
-, xorg
-, sbc
-, SDL2
, libsndfile
-, bluez
, vulkan-headers
, vulkan-loader
-, libpulseaudio
, makeFontsConf
+, callPackage
+, nixosTests
+, gstreamerSupport ? true, gst_all_1 ? null
+, ffmpegSupport ? true, ffmpeg ? null
+, bluezSupport ? true, bluez ? null, sbc ? null
+, nativeHspSupport ? true
+, ofonoSupport ? true
+, hsphfpdSupport ? true
}:
let
fontsConf = makeFontsConf {
fontDirectories = [];
};
+
+ mesonBool = b: if b then "true" else "false";
in
stdenv.mkDerivation rec {
pname = "pipewire";
- version = "0.3.7";
+ version = "0.3.17";
- outputs = [ "out" "lib" "dev" "doc" ];
+ outputs = [
+ "out"
+ "lib"
+ "pulse"
+ "jack"
+ "dev"
+ "doc"
+ "installedTests"
+ ];
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "pipewire";
repo = "pipewire";
rev = version;
- sha256 = "04l66p0wj553gp2zf3vwwh6jbr1vkf6wrq4za9zlm9dn144am4j2";
+ sha256 = "1gzdahji23fsgjycc08h7zzv8filmzdrkyvpkljc881l4cb5l58n";
};
+ patches = [
+ # Break up a dependency cycle between outputs.
+ ./alsa-profiles-use-libdir.patch
+ # Move installed tests into their own output.
+ ./installed-tests-path.patch
+ # Change the path of the pipewire-pulse binary in the service definition.
+ ./pipewire-pulse-path.patch
+ # Add flag to specify configuration directory (different from the installation directory).
+ ./pipewire-config-dir.patch
+ ];
+
nativeBuildInputs = [
doxygen
graphviz
meson
ninja
pkgconfig
- valgrind
];
buildInputs = [
- SDL2
alsaLib
- bluez
dbus
- ffmpeg_3
glib
- gst_all_1.gst-plugins-base
- gst_all_1.gstreamer
libjack2
- libpulseaudio
libsndfile
- libva
- sbc
udev
vulkan-headers
vulkan-loader
- xorg.libX11
- ];
+ valgrind
+ systemd
+ ] ++ lib.optionals gstreamerSupport [ gst_all_1.gst-plugins-base gst_all_1.gstreamer ]
+ ++ lib.optional ffmpegSupport ffmpeg
+ ++ lib.optionals bluezSupport [ bluez sbc ];
mesonFlags = [
"-Ddocs=true"
"-Dman=false" # we don't have xmltoman
- "-Dgstreamer=true"
+ "-Dexamples=true" # only needed for `pipewire-media-session`
+ "-Dudevrulesdir=lib/udev/rules.d"
+ "-Dinstalled_tests=true"
+ "-Dinstalled_test_prefix=${placeholder "installedTests"}"
+ "-Dpipewire_pulse_prefix=${placeholder "pulse"}"
+ "-Dlibjack-path=${placeholder "jack"}/lib"
+ "-Dgstreamer=${mesonBool gstreamerSupport}"
+ "-Dffmpeg=${mesonBool ffmpegSupport}"
+ "-Dbluez5=${mesonBool bluezSupport}"
+ "-Dbluez5-backend-native=${mesonBool nativeHspSupport}"
+ "-Dbluez5-backend-ofono=${mesonBool ofonoSupport}"
+ "-Dbluez5-backend-hsphfpd=${mesonBool hsphfpdSupport}"
+ "-Dpipewire_config_dir=/etc/pipewire"
];
FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file
doCheck = true;
+ postInstall = ''
+ moveToOutput "share/systemd/user/pipewire-pulse.*" "$pulse"
+ moveToOutput "lib/systemd/user/pipewire-pulse.*" "$pulse"
+ moveToOutput "bin/pipewire-pulse" "$pulse"
+ '';
+
+ passthru.tests = {
+ installedTests = nixosTests.installed-tests.pipewire;
+
+ # This ensures that all the paths used by the NixOS module are found.
+ test-paths = callPackage ./test-paths.nix {
+ paths-out = [
+ "share/alsa/alsa.conf.d/50-pipewire.conf"
+ ];
+ paths-lib = [
+ "lib/alsa-lib/libasound_module_pcm_pipewire.so"
+ "share/alsa-card-profile/mixer"
+ ];
+ };
+ };
+
meta = with stdenv.lib; {
description = "Server and user space API to deal with multimedia pipelines";
homepage = "https://pipewire.org/";
diff --git a/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/installed-tests-path.patch b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/installed-tests-path.patch
new file mode 100644
index 000000000000..2a92711626bf
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/installed-tests-path.patch
@@ -0,0 +1,29 @@
+diff --git a/meson.build b/meson.build
+index ffee41b4..bab6f019 100644
+--- a/meson.build
++++ b/meson.build
+@@ -318,8 +318,8 @@ alsa_dep = (get_option('pipewire-alsa')
+ ? dependency('alsa', version : '>=1.1.7')
+ : dependency('', required: false))
+
+-installed_tests_metadir = join_paths(pipewire_datadir, 'installed-tests', pipewire_name)
+-installed_tests_execdir = join_paths(pipewire_libexecdir, 'installed-tests', pipewire_name)
++installed_tests_metadir = join_paths(get_option('installed_test_prefix'), 'share', 'installed-tests', pipewire_name)
++installed_tests_execdir = join_paths(get_option('installed_test_prefix'), 'libexec', 'installed-tests', pipewire_name)
+ installed_tests_enabled = get_option('installed_tests')
+ installed_tests_template = files('template.test.in')
+
+diff --git a/meson_options.txt b/meson_options.txt
+index f03033c3..32df6c53 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -18,6 +18,9 @@ option('installed_tests',
+ description: 'Install manual and automated test executables',
+ type: 'boolean',
+ value: false)
++option('installed_test_prefix',
++ description: 'Prefix for installed tests',
++ type: 'string')
+ option('gstreamer',
+ description: 'Build GStreamer plugins',
+ type: 'boolean',
diff --git a/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/pipewire-config-dir.patch b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/pipewire-config-dir.patch
new file mode 100644
index 000000000000..ad1ae93684b1
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/pipewire-config-dir.patch
@@ -0,0 +1,30 @@
+diff --git a/meson.build b/meson.build
+index 0073eb13..0ffc6863 100644
+--- a/meson.build
++++ b/meson.build
+@@ -34,7 +34,10 @@ pipewire_libexecdir = join_paths(prefix, get_option('libexecdir'))
+ pipewire_localedir = join_paths(prefix, get_option('localedir'))
+ pipewire_sysconfdir = join_paths(prefix, get_option('sysconfdir'))
+
+-pipewire_configdir = join_paths(pipewire_sysconfdir, 'pipewire')
++pipewire_configdir = get_option('pipewire_config_dir')
++if pipewire_configdir == ''
++ pipewire_configdir = join_paths(pipewire_sysconfdir, 'pipewire')
++endif
+ modules_install_dir = join_paths(pipewire_libdir, pipewire_name)
+
+ if host_machine.system() == 'linux'
+diff --git a/meson_options.txt b/meson_options.txt
+index 4b9e46b8..8c301459 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -56,6 +56,9 @@ option('pipewire-pulseaudio',
+ option('libpulse-path',
+ description: 'Where to install the libpulse.so library',
+ type: 'string')
++option('pipewire_config_dir',
++ type : 'string',
++ description : 'Directory for pipewire configuration (defaults to /etc/pipewire)')
+ option('spa-plugins',
+ description: 'Enable spa plugins integration',
+ type: 'boolean',
diff --git a/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/pipewire-pulse-path.patch b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/pipewire-pulse-path.patch
new file mode 100644
index 000000000000..6ac86b111eef
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/pipewire-pulse-path.patch
@@ -0,0 +1,24 @@
+diff --git a/meson_options.txt b/meson_options.txt
+index 4b9e46b8..9d73ed06 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -147,3 +147,6 @@ option('pw-cat',
+ option('udevrulesdir',
+ type : 'string',
+ description : 'Directory for udev rules (defaults to /lib/udev/rules.d)')
++option('pipewire_pulse_prefix',
++ type : 'string',
++ description : 'Install directory for the pipewire-pulse daemon')
+diff --git a/src/daemon/systemd/user/meson.build b/src/daemon/systemd/user/meson.build
+index 29fc93d4..f78946f2 100644
+--- a/src/daemon/systemd/user/meson.build
++++ b/src/daemon/systemd/user/meson.build
+@@ -6,7 +6,7 @@ install_data(
+
+ systemd_config = configuration_data()
+ systemd_config.set('PW_BINARY', join_paths(pipewire_bindir, 'pipewire'))
+-systemd_config.set('PW_PULSE_BINARY', join_paths(pipewire_bindir, 'pipewire-pulse'))
++systemd_config.set('PW_PULSE_BINARY', join_paths(get_option('pipewire_pulse_prefix'), 'bin/pipewire-pulse'))
+
+ configure_file(input : 'pipewire.service.in',
+ output : 'pipewire.service',
diff --git a/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/test-paths.nix b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/test-paths.nix
new file mode 100644
index 000000000000..0ae693741946
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/libraries/pipewire/test-paths.nix
@@ -0,0 +1,23 @@
+{ lib, runCommand, pipewire, paths-out, paths-lib }:
+
+let
+ check-path = output: path: ''
+ if [[ ! -f "${output}/${path}" && ! -d "${output}/${path}" ]]; then
+ printf "Missing: %s\n" "${output}/${path}" | tee -a $out
+ error=error
+ else
+ printf "Found: %s\n" "${output}/${path}" | tee -a $out
+ fi
+ '';
+
+ check-output = output: lib.concatMapStringsSep "\n" (check-path output);
+in runCommand "pipewire-test-paths" { } ''
+ touch $out
+
+ ${check-output pipewire.lib paths-lib}
+ ${check-output pipewire paths-out}
+
+ if [[ -n "$error" ]]; then
+ exit 1
+ fi
+''