Merge pull request #116811 from jansol/pipewire

pipewire: 0.3.23 -> 0.3.24
This commit is contained in:
Bernardo Meurer 2021-03-22 17:34:48 +00:00 committed by GitHub
commit 9334a29720
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
12 changed files with 182 additions and 135 deletions

View file

@ -0,0 +1,6 @@
# Updating
1. Update the version & hash in pkgs/development/libraries/pipewire/default.nix
2. run `nix build -f /path/to/nixpkgs/checkout pipewire pipewire.mediaSession`
3. copy all JSON files from result/etc/pipewire and result-mediaSession/etc/pipewire/media-session.d to this directory
4. add new files to the module config and passthru tests

View file

@ -6,21 +6,34 @@
"audio.convert.*": "audioconvert/libspa-audioconvert", "audio.convert.*": "audioconvert/libspa-audioconvert",
"support.*": "support/libspa-support" "support.*": "support/libspa-support"
}, },
"context.modules": { "context.modules": [
"libpipewire-module-rtkit": { {
"name": "libpipewire-module-rtkit",
"args": {}, "args": {},
"flags": [ "flags": [
"ifexists", "ifexists",
"nofail" "nofail"
] ]
}, },
"libpipewire-module-protocol-native": null, {
"libpipewire-module-client-node": null, "name": "libpipewire-module-protocol-native"
"libpipewire-module-client-device": null, },
"libpipewire-module-adapter": null, {
"libpipewire-module-metadata": null, "name": "libpipewire-module-client-node"
"libpipewire-module-session-manager": null },
}, {
"name": "libpipewire-module-client-device"
},
{
"name": "libpipewire-module-adapter"
},
{
"name": "libpipewire-module-metadata"
},
{
"name": "libpipewire-module-session-manager"
}
],
"filter.properties": {}, "filter.properties": {},
"stream.properties": {} "stream.properties": {}
} }

View file

@ -6,14 +6,26 @@
"audio.convert.*": "audioconvert/libspa-audioconvert", "audio.convert.*": "audioconvert/libspa-audioconvert",
"support.*": "support/libspa-support" "support.*": "support/libspa-support"
}, },
"context.modules": { "context.modules": [
"libpipewire-module-protocol-native": null, {
"libpipewire-module-client-node": null, "name": "libpipewire-module-protocol-native"
"libpipewire-module-client-device": null, },
"libpipewire-module-adapter": null, {
"libpipewire-module-metadata": null, "name": "libpipewire-module-client-node"
"libpipewire-module-session-manager": null },
}, {
"name": "libpipewire-module-client-device"
},
{
"name": "libpipewire-module-adapter"
},
{
"name": "libpipewire-module-metadata"
},
{
"name": "libpipewire-module-session-manager"
}
],
"filter.properties": {}, "filter.properties": {},
"stream.properties": {} "stream.properties": {}
} }

View file

@ -5,17 +5,24 @@
"context.spa-libs": { "context.spa-libs": {
"support.*": "support/libspa-support" "support.*": "support/libspa-support"
}, },
"context.modules": { "context.modules": [
"libpipewire-module-rtkit": { {
"name": "libpipewire-module-rtkit",
"args": {}, "args": {},
"flags": [ "flags": [
"ifexists", "ifexists",
"nofail" "nofail"
] ]
}, },
"libpipewire-module-protocol-native": null, {
"libpipewire-module-client-node": null, "name": "libpipewire-module-protocol-native"
"libpipewire-module-metadata": null },
}, {
"name": "libpipewire-module-client-node"
},
{
"name": "libpipewire-module-metadata"
}
],
"jack.properties": {} "jack.properties": {}
} }

View file

@ -6,21 +6,34 @@
"api.v4l2.*": "v4l2/libspa-v4l2", "api.v4l2.*": "v4l2/libspa-v4l2",
"api.libcamera.*": "libcamera/libspa-libcamera" "api.libcamera.*": "libcamera/libspa-libcamera"
}, },
"context.modules": { "context.modules": [
"libpipewire-module-rtkit": { {
"name": "libpipewire-module-rtkit",
"args": {}, "args": {},
"flags": [ "flags": [
"ifexists", "ifexists",
"nofail" "nofail"
] ]
}, },
"libpipewire-module-protocol-native": null, {
"libpipewire-module-client-node": null, "name": "libpipewire-module-protocol-native"
"libpipewire-module-client-device": null, },
"libpipewire-module-adapter": null, {
"libpipewire-module-metadata": null, "name": "libpipewire-module-client-node"
"libpipewire-module-session-manager": null },
}, {
"name": "libpipewire-module-client-device"
},
{
"name": "libpipewire-module-adapter"
},
{
"name": "libpipewire-module-metadata"
},
{
"name": "libpipewire-module-session-manager"
}
],
"session.modules": { "session.modules": {
"default": [ "default": [
"flatpak", "flatpak",

View file

@ -9,21 +9,12 @@ let
&& pkgs.stdenv.isx86_64 && pkgs.stdenv.isx86_64
&& pkgs.pkgsi686Linux.pipewire != null; && pkgs.pkgsi686Linux.pipewire != null;
prioritizeNativeProtocol = {
"context.modules" = {
"libpipewire-module-protocol-native" = {
_priority = -100;
_content = null;
};
};
};
# Use upstream config files passed through spa-json-dump as the base # Use upstream config files passed through spa-json-dump as the base
# Patched here as necessary for them to work with this module # Patched here as necessary for them to work with this module
defaults = { defaults = {
alsa-monitor = (builtins.fromJSON (builtins.readFile ./alsa-monitor.conf.json)); alsa-monitor = (builtins.fromJSON (builtins.readFile ./alsa-monitor.conf.json));
bluez-monitor = (builtins.fromJSON (builtins.readFile ./bluez-monitor.conf.json)); bluez-monitor = (builtins.fromJSON (builtins.readFile ./bluez-monitor.conf.json));
media-session = recursiveUpdate (builtins.fromJSON (builtins.readFile ./media-session.conf.json)) prioritizeNativeProtocol; media-session = (builtins.fromJSON (builtins.readFile ./media-session.conf.json));
v4l2-monitor = (builtins.fromJSON (builtins.readFile ./v4l2-monitor.conf.json)); v4l2-monitor = (builtins.fromJSON (builtins.readFile ./v4l2-monitor.conf.json));
}; };
# Helpers for generating the pipewire JSON config file # Helpers for generating the pipewire JSON config file

View file

@ -4,25 +4,35 @@
"audio.convert.*": "audioconvert/libspa-audioconvert", "audio.convert.*": "audioconvert/libspa-audioconvert",
"support.*": "support/libspa-support" "support.*": "support/libspa-support"
}, },
"context.modules": { "context.modules": [
"libpipewire-module-rtkit": { {
"name": "libpipewire-module-rtkit",
"args": {}, "args": {},
"flags": [ "flags": [
"ifexists", "ifexists",
"nofail" "nofail"
] ]
}, },
"libpipewire-module-protocol-native": null, {
"libpipewire-module-client-node": null, "name": "libpipewire-module-protocol-native"
"libpipewire-module-adapter": null, },
"libpipewire-module-metadata": null, {
"libpipewire-module-protocol-pulse": { "name": "libpipewire-module-client-node"
},
{
"name": "libpipewire-module-adapter"
},
{
"name": "libpipewire-module-metadata"
},
{
"name": "libpipewire-module-protocol-pulse",
"args": { "args": {
"server.address": [ "server.address": [
"unix:native" "unix:native"
] ]
} }
} }
}, ],
"stream.properties": {} "stream.properties": {}
} }

View file

@ -14,42 +14,66 @@
"api.jack.*": "jack/libspa-jack", "api.jack.*": "jack/libspa-jack",
"support.*": "support/libspa-support" "support.*": "support/libspa-support"
}, },
"context.modules": { "context.modules": [
"libpipewire-module-rtkit": { {
"name": "libpipewire-module-rtkit",
"args": {}, "args": {},
"flags": [ "flags": [
"ifexists", "ifexists",
"nofail" "nofail"
] ]
}, },
"libpipewire-module-protocol-native": null, {
"libpipewire-module-profiler": null, "name": "libpipewire-module-protocol-native"
"libpipewire-module-metadata": null, },
"libpipewire-module-spa-device-factory": null, {
"libpipewire-module-spa-node-factory": null, "name": "libpipewire-module-profiler"
"libpipewire-module-client-node": null, },
"libpipewire-module-client-device": null, {
"libpipewire-module-portal": { "name": "libpipewire-module-metadata"
},
{
"name": "libpipewire-module-spa-device-factory"
},
{
"name": "libpipewire-module-spa-node-factory"
},
{
"name": "libpipewire-module-client-node"
},
{
"name": "libpipewire-module-client-device"
},
{
"name": "libpipewire-module-portal",
"flags": [ "flags": [
"ifexists", "ifexists",
"nofail" "nofail"
] ]
}, },
"libpipewire-module-access": { {
"name": "libpipewire-module-access",
"args": {} "args": {}
}, },
"libpipewire-module-adapter": null, {
"libpipewire-module-link-factory": null, "name": "libpipewire-module-adapter"
"libpipewire-module-session-manager": null },
}, {
"context.objects": { "name": "libpipewire-module-link-factory"
"spa-node-factory": { },
{
"name": "libpipewire-module-session-manager"
}
],
"context.objects": [
{
"factory": "spa-node-factory",
"args": { "args": {
"factory.name": "support.node.driver", "factory.name": "support.node.driver",
"node.name": "Dummy-Driver", "node.name": "Dummy-Driver",
"priority.driver": 8000 "priority.driver": 8000
} }
} }
}, ],
"context.exec": {} "context.exec": []
} }

View file

@ -18,45 +18,15 @@ let
ln -s "${cfg.package.jack}/lib" "$out/lib/pipewire" ln -s "${cfg.package.jack}/lib" "$out/lib/pipewire"
''; '';
prioritizeNativeProtocol = {
"context.modules" = {
# Most other modules depend on this, so put it first
"libpipewire-module-protocol-native" = {
_priority = -100;
_content = null;
};
};
};
fixDaemonModulePriorities = {
"context.modules" = {
# Most other modules depend on thism so put it first
"libpipewire-module-protocol-native" = {
_priority = -100;
_content = null;
};
# Needs to be before libpipewire-module-access
"libpipewire-module-portal" = {
_priority = -50;
_content = {
flags = [
"ifexists"
"nofail"
];
};
};
};
};
# Use upstream config files passed through spa-json-dump as the base # Use upstream config files passed through spa-json-dump as the base
# Patched here as necessary for them to work with this module # Patched here as necessary for them to work with this module
defaults = { defaults = {
client = recursiveUpdate (builtins.fromJSON (builtins.readFile ./client.conf.json)) prioritizeNativeProtocol; client = builtins.fromJSON (builtins.readFile ./client.conf.json);
client-rt = recursiveUpdate (builtins.fromJSON (builtins.readFile ./client-rt.conf.json)) prioritizeNativeProtocol; client-rt = builtins.fromJSON (builtins.readFile ./client-rt.conf.json);
jack = recursiveUpdate (builtins.fromJSON (builtins.readFile ./jack.conf.json)) prioritizeNativeProtocol; jack = builtins.fromJSON (builtins.readFile ./jack.conf.json);
# Remove session manager invocation from the upstream generated file, it points to the wrong path # Remove session manager invocation from the upstream generated file, it points to the wrong path
pipewire = recursiveUpdate (builtins.fromJSON (builtins.readFile ./pipewire.conf.json)) fixDaemonModulePriorities; pipewire = builtins.fromJSON (builtins.readFile ./pipewire.conf.json);
pipewire-pulse = recursiveUpdate (builtins.fromJSON (builtins.readFile ./pipewire-pulse.conf.json)) prioritizeNativeProtocol; pipewire-pulse = builtins.fromJSON (builtins.readFile ./pipewire-pulse.conf.json);
}; };
# Helpers for generating the pipewire JSON config file # Helpers for generating the pipewire JSON config file

View file

@ -1,19 +1,19 @@
diff --git a/meson_options.txt b/meson_options.txt diff --git a/meson_options.txt b/meson_options.txt
index a6c8af72..8e5c3d73 100644 index e2a1e028..310029f2 100644
--- a/meson_options.txt --- a/meson_options.txt
+++ b/meson_options.txt +++ b/meson_options.txt
@@ -10,6 +10,9 @@ option('media-session', @@ -10,6 +10,9 @@ option('media-session',
description: 'Build and install pipewire-media-session', description: 'Build and install pipewire-media-session',
type: 'boolean', type: 'feature',
value: true) value: 'auto')
+option('media-session-prefix', +option('media-session-prefix',
+ description: 'Install directory for pipewire-media-session and its support files', + description: 'Install directory for pipewire-media-session and its support files',
+ type: 'string') + type: 'string')
option('man', option('man',
description: 'Build manpages', description: 'Build manpages',
type: 'boolean', type: 'feature',
diff --git a/src/daemon/systemd/user/meson.build b/src/daemon/systemd/user/meson.build diff --git a/src/daemon/systemd/user/meson.build b/src/daemon/systemd/user/meson.build
index 4a70b0b0..84c9a19e 100644 index 5c4d1af0..7296220f 100644
--- a/src/daemon/systemd/user/meson.build --- a/src/daemon/systemd/user/meson.build
+++ b/src/daemon/systemd/user/meson.build +++ b/src/daemon/systemd/user/meson.build
@@ -10,7 +10,7 @@ install_data( @@ -10,7 +10,7 @@ install_data(

View file

@ -1,29 +1,29 @@
diff --git a/meson.build b/meson.build diff --git a/meson.build b/meson.build
index ffee41b4..bab6f019 100644 index 97d4d939..b17358e5 100644
--- a/meson.build --- a/meson.build
+++ b/meson.build +++ b/meson.build
@@ -318,8 +318,8 @@ alsa_dep = (get_option('pipewire-alsa') @@ -353,8 +353,8 @@ libinotify_dep = (build_machine.system() == 'freebsd'
? dependency('alsa', version : '>=1.1.7')
: dependency('', required: false)) alsa_dep = dependency('alsa', version : '>=1.1.7', required: get_option('pipewire-alsa'))
-installed_tests_metadir = join_paths(pipewire_datadir, 'installed-tests', pipewire_name) -installed_tests_metadir = join_paths(pipewire_datadir, 'installed-tests', pipewire_name)
-installed_tests_execdir = join_paths(pipewire_libexecdir, '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_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_execdir = join_paths(get_option('installed_test_prefix'), 'libexec', 'installed-tests', pipewire_name)
installed_tests_enabled = get_option('installed_tests') installed_tests_enabled = not get_option('installed_tests').disabled()
installed_tests_template = files('template.test.in') installed_tests_template = files('template.test.in')
diff --git a/meson_options.txt b/meson_options.txt diff --git a/meson_options.txt b/meson_options.txt
index f03033c3..32df6c53 100644 index fba0d647..8c6106cd 100644
--- a/meson_options.txt --- a/meson_options.txt
+++ b/meson_options.txt +++ b/meson_options.txt
@@ -18,6 +18,9 @@ option('installed_tests', @@ -26,6 +26,9 @@ option('installed_tests',
description: 'Install manual and automated test executables', description: 'Install manual and automated test executables',
type: 'boolean', type: 'feature',
value: false) value: 'disabled')
+option('installed_test_prefix', +option('installed_test_prefix',
+ description: 'Prefix for installed tests', + description: 'Prefix for installed tests',
+ type: 'string') + type: 'string')
option('gstreamer', option('gstreamer',
description: 'Build GStreamer plugins', description: 'Build GStreamer plugins',
type: 'boolean', type: 'feature',

View file

@ -39,11 +39,11 @@ let
fontDirectories = []; fontDirectories = [];
}; };
mesonBool = b: if b then "true" else "false"; mesonEnable = b: if b then "enabled" else "disabled";
self = stdenv.mkDerivation rec { self = stdenv.mkDerivation rec {
pname = "pipewire"; pname = "pipewire";
version = "0.3.23"; version = "0.3.24";
outputs = [ outputs = [
"out" "out"
@ -61,7 +61,7 @@ let
owner = "pipewire"; owner = "pipewire";
repo = "pipewire"; repo = "pipewire";
rev = version; rev = version;
hash = "sha256:1HMUrE1NBmrdBRMKX3LRlXaCEH3wqP2jGtW8Rp9oyQA="; hash = "sha256:PcY20FTtUtJYAwCscEs+HfkdwDksYPFZIVTVORP1ooI=";
}; };
patches = [ patches = [
@ -103,22 +103,23 @@ let
++ lib.optionals bluezSupport [ bluez libopenaptx ldacbt sbc fdk_aac ]; ++ lib.optionals bluezSupport [ bluez libopenaptx ldacbt sbc fdk_aac ];
mesonFlags = [ mesonFlags = [
"-Ddocs=true" "-Ddocs=enabled"
"-Dman=false" # we don't have xmltoman "-Dman=disabled" # we don't have xmltoman
"-Dexamples=${mesonBool withMediaSession}" # only needed for `pipewire-media-session` "-Dexamples=${mesonEnable withMediaSession}" # only needed for `pipewire-media-session`
"-Dudevrulesdir=lib/udev/rules.d" "-Dudevrulesdir=lib/udev/rules.d"
"-Dinstalled_tests=true" "-Dinstalled_tests=enabled"
"-Dinstalled_test_prefix=${placeholder "installedTests"}" "-Dinstalled_test_prefix=${placeholder "installedTests"}"
"-Dpipewire_pulse_prefix=${placeholder "pulse"}" "-Dpipewire_pulse_prefix=${placeholder "pulse"}"
"-Dmedia-session-prefix=${placeholder "mediaSession"}" "-Dmedia-session-prefix=${placeholder "mediaSession"}"
"-Dlibjack-path=${placeholder "jack"}/lib" "-Dlibjack-path=${placeholder "jack"}/lib"
"-Dgstreamer=${mesonBool gstreamerSupport}" "-Dlibcamera=disabled"
"-Dffmpeg=${mesonBool ffmpegSupport}" "-Dgstreamer=${mesonEnable gstreamerSupport}"
"-Dbluez5=${mesonBool bluezSupport}" "-Dffmpeg=${mesonEnable ffmpegSupport}"
"-Dbluez5-backend-hsp-native=${mesonBool nativeHspSupport}" "-Dbluez5=${mesonEnable bluezSupport}"
"-Dbluez5-backend-hfp-native=${mesonBool nativeHfpSupport}" "-Dbluez5-backend-hsp-native=${mesonEnable nativeHspSupport}"
"-Dbluez5-backend-ofono=${mesonBool ofonoSupport}" "-Dbluez5-backend-hfp-native=${mesonEnable nativeHfpSupport}"
"-Dbluez5-backend-hsphfpd=${mesonBool hsphfpdSupport}" "-Dbluez5-backend-ofono=${mesonEnable ofonoSupport}"
"-Dbluez5-backend-hsphfpd=${mesonEnable hsphfpdSupport}"
"-Dpipewire_config_dir=/etc/pipewire" "-Dpipewire_config_dir=/etc/pipewire"
]; ];