Merge pull request #142865 from jansol/master

pipewire: 0.3.38 -> 0.3.39
This commit is contained in:
Jan Tojnar
2021-10-31 15:32:20 +01:00
committed by GitHub
18 changed files with 152 additions and 90 deletions
@@ -13,10 +13,10 @@ let
# Use upstream config files passed through spa-json-dump as the base
# Patched here as necessary for them to work with this module
defaults = {
alsa-monitor = (builtins.fromJSON (builtins.readFile ./alsa-monitor.conf.json));
bluez-monitor = (builtins.fromJSON (builtins.readFile ./bluez-monitor.conf.json));
media-session = (builtins.fromJSON (builtins.readFile ./media-session.conf.json));
v4l2-monitor = (builtins.fromJSON (builtins.readFile ./v4l2-monitor.conf.json));
alsa-monitor = (builtins.fromJSON (builtins.readFile ./media-session/alsa-monitor.conf.json));
bluez-monitor = (builtins.fromJSON (builtins.readFile ./media-session/bluez-monitor.conf.json));
media-session = (builtins.fromJSON (builtins.readFile ./media-session/media-session.conf.json));
v4l2-monitor = (builtins.fromJSON (builtins.readFile ./media-session/v4l2-monitor.conf.json));
};
configs = {
@@ -43,8 +43,8 @@ in {
package = mkOption {
type = types.package;
default = pkgs.pipewire.mediaSession;
defaultText = literalExpression "pkgs.pipewire.mediaSession";
default = pkgs.pipewire-media-session;
defaultText = literalExpression "pkgs.pipewire-media-session";
description = ''
The pipewire-media-session derivation to use.
'';
@@ -55,7 +55,7 @@ in {
type = json.type;
description = ''
Configuration for the media session core. For details see
https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/${cfg.package.version}/src/daemon/media-session.d/media-session.conf
https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/media-session.conf
'';
default = {};
};
@@ -64,7 +64,7 @@ in {
type = json.type;
description = ''
Configuration for the alsa monitor. For details see
https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/${cfg.package.version}/src/daemon/media-session.d/alsa-monitor.conf
https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/alsa-monitor.conf
'';
default = {};
};
@@ -73,7 +73,7 @@ in {
type = json.type;
description = ''
Configuration for the bluez5 monitor. For details see
https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/${cfg.package.version}/src/daemon/media-session.d/bluez-monitor.conf
https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/bluez-monitor.conf
'';
default = {};
};
@@ -82,7 +82,7 @@ in {
type = json.type;
description = ''
Configuration for the V4L2 monitor. For details see
https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/${cfg.package.version}/src/daemon/media-session.d/v4l2-monitor.conf
https://gitlab.freedesktop.org/pipewire/media-session/-/blob/${cfg.package.version}/src/daemon/media-session.d/v4l2-monitor.conf
'';
default = {};
};
@@ -22,12 +22,11 @@ let
# Use upstream config files passed through spa-json-dump as the base
# Patched here as necessary for them to work with this module
defaults = {
client = builtins.fromJSON (builtins.readFile ./client.conf.json);
client-rt = builtins.fromJSON (builtins.readFile ./client-rt.conf.json);
jack = builtins.fromJSON (builtins.readFile ./jack.conf.json);
# Remove session manager invocation from the upstream generated file, it points to the wrong path
pipewire = builtins.fromJSON (builtins.readFile ./pipewire.conf.json);
pipewire-pulse = builtins.fromJSON (builtins.readFile ./pipewire-pulse.conf.json);
client = builtins.fromJSON (builtins.readFile ./daemon/client.conf.json);
client-rt = builtins.fromJSON (builtins.readFile ./daemon/client-rt.conf.json);
jack = builtins.fromJSON (builtins.readFile ./daemon/jack.conf.json);
pipewire = builtins.fromJSON (builtins.readFile ./daemon/pipewire.conf.json);
pipewire-pulse = builtins.fromJSON (builtins.readFile ./daemon/pipewire-pulse.conf.json);
};
configs = {
@@ -1,8 +1,8 @@
diff --git a/meson_options.txt b/meson_options.txt
index 66791f3a..93b5e2a9 100644
index 71c2e35e9..a0f380c04 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -172,6 +172,9 @@ option('udev',
@@ -176,6 +176,9 @@ option('udev',
option('udevrulesdir',
type : 'string',
description : 'Directory for udev rules (defaults to /lib/udev/rules.d)')
@@ -13,7 +13,7 @@ index 66791f3a..93b5e2a9 100644
type : 'string',
description : 'Directory for user systemd units (defaults to /usr/lib/systemd/user)')
diff --git a/src/daemon/systemd/user/meson.build b/src/daemon/systemd/user/meson.build
index aa30a86f..1edebb2d 100644
index 5bd134537..5a3ca9ed5 100644
--- a/src/daemon/systemd/user/meson.build
+++ b/src/daemon/systemd/user/meson.build
@@ -9,7 +9,7 @@ install_data(
@@ -22,6 +22,6 @@ index aa30a86f..1edebb2d 100644
systemd_config.set('PW_BINARY', pipewire_bindir / 'pipewire')
-systemd_config.set('PW_PULSE_BINARY', pipewire_bindir / 'pipewire-pulse')
+systemd_config.set('PW_PULSE_BINARY', get_option('pipewire_pulse_prefix') / 'bin/pipewire-pulse')
systemd_config.set('PW_MEDIA_SESSION_BINARY', pipewire_bindir / 'pipewire-media-session')
configure_file(input : 'pipewire.service.in',
output : 'pipewire.service',
@@ -1,24 +0,0 @@
diff --git a/meson_options.txt b/meson_options.txt
index 93b5e2a9..1b915ac3 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -200,3 +200,6 @@ option('media-session',
type: 'feature',
value: 'auto')
+option('media-session-prefix',
+ description: 'Install directory for pipewire-media-session and its support files',
+ type: 'string')
option('session-managers',
diff --git a/src/daemon/systemd/user/meson.build b/src/daemon/systemd/user/meson.build
index 1edebb2d..251270eb 100644
--- a/src/daemon/systemd/user/meson.build
+++ b/src/daemon/systemd/user/meson.build
@@ -10,7 +10,7 @@ install_data(
systemd_config = configuration_data()
systemd_config.set('PW_BINARY', pipewire_bindir / 'pipewire')
systemd_config.set('PW_PULSE_BINARY', get_option('pipewire_pulse_prefix') / 'bin/pipewire-pulse')
-systemd_config.set('PW_MEDIA_SESSION_BINARY', pipewire_bindir / 'pipewire-media-session')
+systemd_config.set('PW_MEDIA_SESSION_BINARY', get_option('media-session-prefix') / 'bin/pipewire-media-session')
configure_file(input : 'pipewire.service.in',
output : 'pipewire.service',
+19 -38
View File
@@ -63,7 +63,7 @@ let
self = stdenv.mkDerivation rec {
pname = "pipewire";
version = "0.3.38";
version = "0.3.39";
outputs = [
"out"
@@ -73,7 +73,6 @@ let
"dev"
"doc"
"man"
"mediaSession"
"installedTests"
];
@@ -82,7 +81,7 @@ let
owner = "pipewire";
repo = "pipewire";
rev = version;
sha256 = "sha256-QENz4MVyKuPJynA+NBdmKa6g1GrcRg9vzXLJ1/i3VJU=";
sha256 = "sha256-peTS1+NuQxZg1rrv8DrnJW5BR9yReleqooIwhZWHLjM=";
};
patches = [
@@ -90,8 +89,6 @@ let
./0040-alsa-profiles-use-libdir.patch
# Change the path of the pipewire-pulse binary in the service definition.
./0050-pipewire-pulse-path.patch
# Change the path of the pipewire-media-session binary in the service definition.
./0055-pipewire-media-session-path.patch
# Move installed tests into their own output.
./0070-installed-tests-path.patch
# Add option for changing the config install directory
@@ -100,11 +97,11 @@ let
./0090-pipewire-config-template-paths.patch
# Place SPA data files in lib output to avoid dependency cycles
./0095-spa-data-dir.patch
# Fix compilation on AArch64
# Fix compilation on some architectures
# XXX: REMOVE ON NEXT RELEASE
(fetchpatch {
url = "https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/f8817b439433798bd7217dc4ae72197887b0fc96.diff";
sha256 = "0j4xds01h20mc606xp90h5v56kf17hf7n06k0xfa9qmmmfrh7i04";
url = "https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/651f0decea5f83730c271e9bed03cdd0048fcd49.diff";
sha256 = "1bmpi5qn750mcspaw7m57ww0503sl9781jswqby4gr0f7c5wmqvj";
})
];
@@ -147,7 +144,6 @@ let
"-Dinstalled_tests=enabled"
"-Dinstalled_test_prefix=${placeholder "installedTests"}"
"-Dpipewire_pulse_prefix=${placeholder "pulse"}"
"-Dmedia-session-prefix=${placeholder "mediaSession"}"
"-Dlibjack-path=${placeholder "jack"}/lib"
"-Dlibcamera=${mesonEnable libcameraSupport}"
"-Droc=disabled"
@@ -162,7 +158,8 @@ let
"-Dbluez5-backend-hsphfpd=${mesonEnable hsphfpdSupport}"
"-Dsysconfdir=/etc"
"-Dpipewire_confdata_dir=${placeholder "lib"}/share/pipewire"
"-Dsession-managers=${mesonList (lib.optional withMediaSession "media-session")}"
"-Dsession-managers="
"-Dvulkan=enabled"
];
FONTCONFIG_FILE = fontsConf; # Fontconfig error: Cannot load default config file
@@ -171,29 +168,20 @@ let
postUnpack = ''
patchShebangs source/doc/strip-static.sh
patchShebangs source/doc/input-filter.sh
patchShebangs source/doc/input-filter-h.sh
patchShebangs source/spa/tests/gen-cpp-test.py
'';
postInstall = ''
pushd $lib/share
mkdir -p $out/nix-support/etc/pipewire
for f in pipewire/*.conf; do
mkdir $out/nix-support
pushd $lib/share/pipewire
for f in *.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 pipewire/media-session.d/*.conf; do
echo "Generating JSON from $f"
$out/bin/spa-json-dump "$f" > "$mediaSession/nix-support/etc/$f.json"
$out/bin/spa-json-dump "$f" > "$out/nix-support/$f.json"
done
popd
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"
moveToOutput "share/systemd/user/pipewire-pulse.*" "$pulse"
moveToOutput "lib/systemd/user/pipewire-pulse.*" "$pulse"
moveToOutput "bin/pipewire-pulse" "$pulse"
@@ -205,21 +193,14 @@ let
installedTests = nixosTests.installed-tests.pipewire;
# This ensures that all the paths used by the NixOS module are found.
test-paths = callPackage ./test-paths.nix {
test-paths = callPackage ./test-paths.nix { package = self; } {
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"
"nix-support/etc/pipewire/pipewire-pulse.conf.json"
];
paths-out-media-session = [
"nix-support/etc/pipewire/media-session.d/alsa-monitor.conf.json"
"nix-support/etc/pipewire/media-session.d/bluez-monitor.conf.json"
"nix-support/etc/pipewire/media-session.d/bluez-hardware.conf.json"
"nix-support/etc/pipewire/media-session.d/media-session.conf.json"
"nix-support/etc/pipewire/media-session.d/v4l2-monitor.conf.json"
"nix-support/client-rt.conf.json"
"nix-support/client.conf.json"
"nix-support/jack.conf.json"
"nix-support/pipewire.conf.json"
"nix-support/pipewire-pulse.conf.json"
];
paths-lib = [
"lib/alsa-lib/libasound_module_pcm_pipewire.so"
@@ -0,0 +1,93 @@
{ stdenv
, lib
, fetchFromGitLab
, meson
, ninja
, pkg-config
, doxygen
, graphviz
, systemd
, pipewire
, glib
, dbus
, alsa-lib
, callPackage
}:
let
mesonEnable = b: if b then "enabled" else "disabled";
mesonList = l: "[" + lib.concatStringsSep "," l + "]";
self = stdenv.mkDerivation rec {
pname = "pipewire-media-session";
version = "0.4.0";
src = fetchFromGitLab {
domain = "gitlab.freedesktop.org";
owner = "pipewire";
repo = "media-session";
rev = version;
sha256 = "sha256-zhOvBlG7DuQkJ+ZZBhBhfKwk+bbLljpt3w4JlK3cJLk=";
};
nativeBuildInputs = [
doxygen
graphviz
meson
ninja
pkg-config
];
buildInputs = [
alsa-lib
dbus
glib
pipewire
systemd
];
mesonFlags = [
"-Ddocs=enabled"
# We generate these empty files from the nixos module, don't bother installing them
"-Dwith-module-sets=[]"
];
postUnpack = ''
patchShebangs source/doc/input-filter-h.sh
patchShebangs source/doc/input-filter.sh
'';
postInstall = ''
mkdir $out/nix-support
cd $out/share/pipewire/media-session.d
for f in *.conf; do
echo "Generating JSON from $f"
${pipewire}/bin/spa-json-dump "$f" > "$out/nix-support/$f.json"
done
'';
passthru = {
tests = {
test-paths = callPackage ./test-paths.nix { package = self; } {
paths-out = [
"nix-support/alsa-monitor.conf.json"
"nix-support/bluez-monitor.conf.json"
"nix-support/media-session.conf.json"
"nix-support/v4l2-monitor.conf.json"
];
paths-lib = [];
};
};
};
meta = with lib; {
description = "Example session manager for PipeWire";
homepage = "https://pipewire.org";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ jtojnar kranzes ];
};
};
in
self
@@ -1,4 +1,4 @@
{ lib, runCommand, pipewire, paths-out, paths-lib, paths-out-media-session }:
{ lib, runCommand, package, paths-out, paths-lib }:
let
check-path = output: path: ''
@@ -14,9 +14,8 @@ let
in runCommand "pipewire-test-paths" { } ''
touch $out
${check-output pipewire.mediaSession paths-out-media-session}
${check-output pipewire.lib paths-lib}
${check-output pipewire paths-out}
${check-output package.lib paths-lib}
${check-output package paths-out}
if [[ -n "$error" ]]; then
exit 1
+17 -4
View File
@@ -11,14 +11,27 @@ NIXPKGS_ROOT="$(git rev-parse --show-toplevel)"
cd "$NIXPKGS_ROOT"
nix-update pipewire
outputs=$(nix-build . -A pipewire -A pipewire.mediaSession)
outputs=$(nix-build . -A pipewire)
for p in $outputs; do
conf_files=$(find "$p/nix-support/etc/pipewire/" -name '*.conf.json')
conf_files=$(find "$p/nix-support/" -name '*.conf.json')
for c in $conf_files; do
file_name=$(basename "$c")
if [[ ! -e "nixos/modules/services/desktops/pipewire/$file_name" ]]; then
if [[ ! -e "nixos/modules/services/desktops/pipewire/daemon/$file_name" ]]; then
echo "New file $file_name found! Add it to the module config and passthru tests!"
fi
install -m 0644 "$c" "nixos/modules/services/desktops/pipewire/"
install -m 0644 "$c" "nixos/modules/services/desktops/pipewire/daemon/"
done
done
nix-update pipewire-media-session
outputs=$(nix-build . -A pipewire-media-session)
for p in $outputs; do
conf_files=$(find "$p/nix-support/" -name '*.conf.json')
for c in $conf_files; do
file_name=$(basename "$c")
if [[ ! -e "nixos/modules/services/desktops/pipewire/media-session/$file_name" ]]; then
echo "New file $file_name found! Add it to the module config and passthru tests!"
fi
install -m 0644 "$c" "nixos/modules/services/desktops/pipewire/media-session/"
done
done
+1
View File
@@ -13504,6 +13504,7 @@ with pkgs;
pipenv = callPackage ../development/tools/pipenv {};
pipewire = callPackage ../development/libraries/pipewire {};
pipewire-media-session = callPackage ../development/libraries/pipewire/media-session.nix {};
pipewire_0_2 = callPackage ../development/libraries/pipewire/0.2.nix {};
pyradio = callPackage ../applications/audio/pyradio {};