diff --git a/.gitignore b/.gitignore index ee3fcff..4fb5786 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/pipewire-0.3.6.tar.gz +pipewire-1.4.11.tar.gz diff --git a/.pipewire.metadata b/.pipewire.metadata deleted file mode 100644 index c019c63..0000000 --- a/.pipewire.metadata +++ /dev/null @@ -1 +0,0 @@ -edbc897685e921dc6add83dee57e74e140294dcb SOURCES/pipewire-0.3.6.tar.gz diff --git a/0001-only-dlopen-from-the-defined-search-paths.patch b/0001-only-dlopen-from-the-defined-search-paths.patch new file mode 100644 index 0000000..53580d2 --- /dev/null +++ b/0001-only-dlopen-from-the-defined-search-paths.patch @@ -0,0 +1,244 @@ +From 0d7801240eca8c7e7ccbdb3530dd14d2797b43bc Mon Sep 17 00:00:00 2001 +From: Wim Taymans +Date: Mon, 6 Apr 2026 14:18:22 +0200 +Subject: [PATCH 1/5] only dlopen from the defined search paths + +Don't accept absolute library paths that are not in the search path, +skip the ../ in paths to avoid opening arbitrary libraries from +unexpected places. +--- + spa/plugins/filter-graph/ladspa_plugin.c | 72 ++++++++++++--------- + src/daemon/filter-chain/source-rnnoise.conf | 1 - + src/modules/module-jack-tunnel.c | 3 +- + src/modules/module-jack-tunnel/weakjack.h | 48 +++++++------- + src/pipewire/impl-module.c | 3 + + src/pipewire/pipewire.c | 3 + + 6 files changed, 72 insertions(+), 58 deletions(-) + +diff --git a/spa/plugins/filter-graph/ladspa_plugin.c b/spa/plugins/filter-graph/ladspa_plugin.c +index 45026c8e7..354e779b9 100644 +--- a/spa/plugins/filter-graph/ladspa_plugin.c ++++ b/spa/plugins/filter-graph/ladspa_plugin.c +@@ -218,43 +218,49 @@ static inline const char *split_walk(const char *str, const char *delimiter, siz + return s; + } + +-static int load_ladspa_plugin(struct plugin *impl, const char *path) ++static void make_search_paths(const char **path, const char **search_dirs) + { +- int res = -ENOENT; ++ const char *p; ++ ++ while ((p = strstr(*path, "../")) != NULL) ++ *path = p + 3; + +- if (path[0] != '/') { +- const char *search_dirs, *p, *state = NULL; +- char filename[PATH_MAX]; +- size_t len; ++ *search_dirs = getenv("LADSPA_PATH"); ++ if (!*search_dirs) ++ *search_dirs = "/usr/lib64/ladspa:/usr/lib/ladspa:" LIBDIR; ++} + +- search_dirs = getenv("LADSPA_PATH"); +- if (!search_dirs) +- search_dirs = "/usr/lib64/ladspa:/usr/lib/ladspa:" LIBDIR; ++static int load_ladspa_plugin(struct plugin *impl, const char *path, const char *search_dirs) ++{ ++ int res = -ENOENT; ++ const char *p, *state = NULL; ++ char filename[PATH_MAX]; ++ size_t len; + +- /* +- * set the errno for the case when `ladspa_handle_load_by_path()` +- * is never called, which can only happen if the supplied +- * LADSPA_PATH contains too long paths +- */ +- res = -ENAMETOOLONG; ++ /* ++ * set the errno for the case when `ladspa_handle_load_by_path()` ++ * is never called, which can only happen if the supplied ++ * LADSPA_PATH contains too long paths ++ */ ++ res = -ENAMETOOLONG; + +- while ((p = split_walk(search_dirs, ":", &len, &state))) { +- int namelen; ++ while ((p = split_walk(search_dirs, ":", &len, &state))) { ++ int namelen; + +- if (len >= sizeof(filename)) +- continue; ++ if (len >= sizeof(filename)) ++ continue; + ++ if (strncmp(path, p, len) == 0) ++ namelen = snprintf(filename, sizeof(filename), "%s", path); ++ else + namelen = snprintf(filename, sizeof(filename), "%.*s/%s.so", (int) len, p, path); +- if (namelen < 0 || (size_t) namelen >= sizeof(filename)) +- continue; + +- res = ladspa_handle_load_by_path(impl, filename); +- if (res >= 0) +- break; +- } +- } +- else { +- res = ladspa_handle_load_by_path(impl, path); ++ if (namelen < 0 || (size_t) namelen >= sizeof(filename)) ++ continue; ++ ++ res = ladspa_handle_load_by_path(impl, filename); ++ if (res >= 0) ++ break; + } + return res; + } +@@ -302,7 +308,7 @@ impl_init(const struct spa_handle_factory *factory, + struct plugin *impl; + uint32_t i; + int res; +- const char *path = NULL; ++ const char *path = NULL, *search_dirs; + + handle->get_interface = impl_get_interface; + handle->clear = impl_clear; +@@ -320,9 +326,11 @@ impl_init(const struct spa_handle_factory *factory, + if (path == NULL) + return -EINVAL; + +- if ((res = load_ladspa_plugin(impl, path)) < 0) { +- spa_log_error(impl->log, "failed to load plugin '%s': %s", +- path, spa_strerror(res)); ++ make_search_paths(&path, &search_dirs); ++ ++ if ((res = load_ladspa_plugin(impl, path, search_dirs)) < 0) { ++ spa_log_error(impl->log, "failed to load plugin '%s' in '%s': %s", ++ path, search_dirs, spa_strerror(res)); + return res; + } + +diff --git a/src/daemon/filter-chain/source-rnnoise.conf b/src/daemon/filter-chain/source-rnnoise.conf +index f3c2c71be..83142dd29 100644 +--- a/src/daemon/filter-chain/source-rnnoise.conf ++++ b/src/daemon/filter-chain/source-rnnoise.conf +@@ -21,7 +21,6 @@ context.modules = [ + # listed in the environment variable LADSPA_PATH or + # /usr/lib64/ladspa, /usr/lib/ladspa or the system library directory + # as a fallback. +- # You might want to use an absolute path here to avoid problems. + plugin = "librnnoise_ladspa" + label = noise_suppressor_stereo + control = { +diff --git a/src/modules/module-jack-tunnel.c b/src/modules/module-jack-tunnel.c +index b55dd5ee8..55fac1a10 100644 +--- a/src/modules/module-jack-tunnel.c ++++ b/src/modules/module-jack-tunnel.c +@@ -49,8 +49,7 @@ + * ## Module Options + * + * - `jack.library`: the libjack to load, by default libjack.so.0 is searched in +- * JACK_PATH directories and then some standard library paths. +- * Can be an absolute path. ++ * LIBJACK_PATH directories and then some standard library paths. + * - `jack.server`: the name of the JACK server to tunnel to. + * - `jack.client-name`: the name of the JACK client. + * - `jack.connect`: if jack ports should be connected automatically. Can also be +diff --git a/src/modules/module-jack-tunnel/weakjack.h b/src/modules/module-jack-tunnel/weakjack.h +index 1b057b0ba..19537dbff 100644 +--- a/src/modules/module-jack-tunnel/weakjack.h ++++ b/src/modules/module-jack-tunnel/weakjack.h +@@ -158,34 +158,36 @@ static inline int weakjack_load_by_path(struct weakjack *jack, const char *path) + static inline int weakjack_load(struct weakjack *jack, const char *lib) + { + int res = -ENOENT; ++ const char *search_dirs, *p, *state = NULL; ++ char path[PATH_MAX]; ++ size_t len; + +- if (lib[0] != '/') { +- const char *search_dirs, *p, *state = NULL; +- char path[PATH_MAX]; +- size_t len; ++ while ((p = strstr(lib, "../")) != NULL) ++ lib = p + 3; + +- search_dirs = getenv("LIBJACK_PATH"); +- if (!search_dirs) +- search_dirs = PREFIX "/lib64/:" PREFIX "/lib/:" +- "/usr/lib64/:/usr/lib/:" LIBDIR; ++ search_dirs = getenv("LIBJACK_PATH"); ++ if (!search_dirs) ++ search_dirs = PREFIX "/lib64/:" PREFIX "/lib/:" ++ "/usr/lib64/:/usr/lib/:" LIBDIR; + +- while ((p = pw_split_walk(search_dirs, ":", &len, &state))) { +- int pathlen; ++ res = -ENAMETOOLONG; + +- if (len >= sizeof(path)) { +- res = -ENAMETOOLONG; +- continue; +- } ++ while ((p = pw_split_walk(search_dirs, ":", &len, &state))) { ++ int pathlen; ++ ++ if (len >= sizeof(path)) ++ continue; ++ ++ if (strncmp(lib, p, len) == 0) ++ pathlen = snprintf(path, sizeof(path), "%s", lib); ++ else + pathlen = snprintf(path, sizeof(path), "%.*s/%s", (int) len, p, lib); +- if (pathlen < 0 || (size_t) pathlen >= sizeof(path)) { +- res = -ENAMETOOLONG; +- continue; +- } +- if ((res = weakjack_load_by_path(jack, path)) == 0) +- break; +- } +- } else { +- res = weakjack_load_by_path(jack, lib); ++ ++ if (pathlen < 0 || (size_t) pathlen >= sizeof(path)) ++ continue; ++ ++ if ((res = weakjack_load_by_path(jack, path)) == 0) ++ break; + } + return res; + } +diff --git a/src/pipewire/impl-module.c b/src/pipewire/impl-module.c +index 10aa432fe..1921c87cd 100644 +--- a/src/pipewire/impl-module.c ++++ b/src/pipewire/impl-module.c +@@ -154,6 +154,9 @@ pw_context_load_module(struct pw_context *context, + NULL + }; + ++ while ((p = strstr(name, "../")) != NULL) ++ name = p + 3; ++ + pw_log_info("%p: name:%s args:%s", context, name, args); + + module_dir = getenv("PIPEWIRE_MODULE_DIR"); +diff --git a/src/pipewire/pipewire.c b/src/pipewire/pipewire.c +index 4451fa525..bccd48f35 100644 +--- a/src/pipewire/pipewire.c ++++ b/src/pipewire/pipewire.c +@@ -232,6 +232,9 @@ static struct spa_handle *load_spa_handle(const char *lib, + if (lib == NULL) + lib = sup->support_lib; + ++ while ((p = strstr(lib, "../")) != NULL) ++ lib = p + 3; ++ + pw_log_debug("load lib:'%s' factory-name:'%s'", lib, factory_name); + + plugin = NULL; +-- +2.54.0 + diff --git a/0002-dlopen-improve-prefix-check-some-more.patch b/0002-dlopen-improve-prefix-check-some-more.patch new file mode 100644 index 0000000..69a8fc6 --- /dev/null +++ b/0002-dlopen-improve-prefix-check-some-more.patch @@ -0,0 +1,50 @@ +From 726f9d31440b5e28ca72b7a69a6ae6e8966986b3 Mon Sep 17 00:00:00 2001 +From: Wim Taymans +Date: Wed, 8 Apr 2026 12:00:04 +0200 +Subject: [PATCH 2/5] dlopen: improve prefix check some more + +If we pass a path /usr/libevil/mycode.so, it might have a prefix of +/usr/lib but we should still reject it. Do thi by checking that after +the prefix match, we start a new directory. +--- + spa/plugins/filter-graph/ladspa_plugin.c | 4 ++-- + src/modules/module-jack-tunnel/weakjack.h | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/spa/plugins/filter-graph/ladspa_plugin.c b/spa/plugins/filter-graph/ladspa_plugin.c +index 354e779b9..32e57c90a 100644 +--- a/spa/plugins/filter-graph/ladspa_plugin.c ++++ b/spa/plugins/filter-graph/ladspa_plugin.c +@@ -247,10 +247,10 @@ static int load_ladspa_plugin(struct plugin *impl, const char *path, const char + while ((p = split_walk(search_dirs, ":", &len, &state))) { + int namelen; + +- if (len >= sizeof(filename)) ++ if (len == 0 || len >= sizeof(filename)) + continue; + +- if (strncmp(path, p, len) == 0) ++ if (strncmp(path, p, len) == 0 && path[len] == '/') + namelen = snprintf(filename, sizeof(filename), "%s", path); + else + namelen = snprintf(filename, sizeof(filename), "%.*s/%s.so", (int) len, p, path); +diff --git a/src/modules/module-jack-tunnel/weakjack.h b/src/modules/module-jack-tunnel/weakjack.h +index 19537dbff..7e621bffb 100644 +--- a/src/modules/module-jack-tunnel/weakjack.h ++++ b/src/modules/module-jack-tunnel/weakjack.h +@@ -175,10 +175,10 @@ static inline int weakjack_load(struct weakjack *jack, const char *lib) + while ((p = pw_split_walk(search_dirs, ":", &len, &state))) { + int pathlen; + +- if (len >= sizeof(path)) ++ if (len == 0 || len >= sizeof(path)) + continue; + +- if (strncmp(lib, p, len) == 0) ++ if (strncmp(lib, p, len) == 0 && lib[len] == '/') + pathlen = snprintf(path, sizeof(path), "%s", lib); + else + pathlen = snprintf(path, sizeof(path), "%.*s/%s", (int) len, p, lib); +-- +2.54.0 + diff --git a/0003-dlopen-support-search-path-ending-in.patch b/0003-dlopen-support-search-path-ending-in.patch new file mode 100644 index 0000000..a45fa08 --- /dev/null +++ b/0003-dlopen-support-search-path-ending-in.patch @@ -0,0 +1,42 @@ +From 142d3d7896a28f6426a887f5e2b569f0151bac40 Mon Sep 17 00:00:00 2001 +From: Wim Taymans +Date: Mon, 13 Apr 2026 10:26:33 +0200 +Subject: [PATCH 3/5] dlopen: support search path ending in / + +When the search path is /usr/lib/, /usr/lib/foo.so fails to load because +there is no / after the search path. Fix this by requiring that either +the search path end with / or the following char is a /. +--- + spa/plugins/filter-graph/ladspa_plugin.c | 2 +- + src/modules/module-jack-tunnel/weakjack.h | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/spa/plugins/filter-graph/ladspa_plugin.c b/spa/plugins/filter-graph/ladspa_plugin.c +index 32e57c90a..9274e69c4 100644 +--- a/spa/plugins/filter-graph/ladspa_plugin.c ++++ b/spa/plugins/filter-graph/ladspa_plugin.c +@@ -250,7 +250,7 @@ static int load_ladspa_plugin(struct plugin *impl, const char *path, const char + if (len == 0 || len >= sizeof(filename)) + continue; + +- if (strncmp(path, p, len) == 0 && path[len] == '/') ++ if (strncmp(path, p, len) == 0 && (path[len-1] == '/' || path[len] == '/')) + namelen = snprintf(filename, sizeof(filename), "%s", path); + else + namelen = snprintf(filename, sizeof(filename), "%.*s/%s.so", (int) len, p, path); +diff --git a/src/modules/module-jack-tunnel/weakjack.h b/src/modules/module-jack-tunnel/weakjack.h +index 7e621bffb..3bb0dd17e 100644 +--- a/src/modules/module-jack-tunnel/weakjack.h ++++ b/src/modules/module-jack-tunnel/weakjack.h +@@ -178,7 +178,7 @@ static inline int weakjack_load(struct weakjack *jack, const char *lib) + if (len == 0 || len >= sizeof(path)) + continue; + +- if (strncmp(lib, p, len) == 0 && lib[len] == '/') ++ if (strncmp(lib, p, len) == 0 && (lib[len-1] == '/' || lib[len] == '/')) + pathlen = snprintf(path, sizeof(path), "%s", lib); + else + pathlen = snprintf(path, sizeof(path), "%.*s/%s", (int) len, p, lib); +-- +2.54.0 + diff --git a/0004-filter-graph-error-when-there-are-no-valid-nodes.patch b/0004-filter-graph-error-when-there-are-no-valid-nodes.patch new file mode 100644 index 0000000..e9c4546 --- /dev/null +++ b/0004-filter-graph-error-when-there-are-no-valid-nodes.patch @@ -0,0 +1,51 @@ +From 925e071a260b28e79645d65393d7cdd8b883d8fa Mon Sep 17 00:00:00 2001 +From: Wim Taymans +Date: Thu, 7 May 2026 13:30:41 +0200 +Subject: [PATCH 4/5] filter-graph: error when there are no valid nodes + +The nodes might have failed to load or there was an empty array or the +array did not contain objects. +--- + spa/plugins/filter-graph/filter-graph.c | 5 ++++- + src/modules/module-filter-chain.c | 2 +- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/spa/plugins/filter-graph/filter-graph.c b/spa/plugins/filter-graph/filter-graph.c +index eaaebe3f2..b83a6b1da 100644 +--- a/spa/plugins/filter-graph/filter-graph.c ++++ b/spa/plugins/filter-graph/filter-graph.c +@@ -2092,6 +2092,10 @@ static int load_graph(struct graph *graph, const struct spa_dict *props) + if ((res = load_node(graph, &it[1])) < 0) + return res; + } ++ if (spa_list_is_empty(&graph->node_list)) { ++ spa_log_error(impl->log, "filter.graph has no nodes"); ++ return -EINVAL; ++ } + if (plinks != NULL) { + while (spa_json_enter_object(plinks, &it[1]) > 0) { + if ((res = parse_link(graph, &it[1])) < 0) +@@ -2144,7 +2148,6 @@ static int load_graph(struct graph *graph, const struct spa_dict *props) + else + graph->default_outputs = last->desc->n_output; + +- + return 0; + } + +diff --git a/src/modules/module-filter-chain.c b/src/modules/module-filter-chain.c +index 764cd481a..cedeb675e 100644 +--- a/src/modules/module-filter-chain.c ++++ b/src/modules/module-filter-chain.c +@@ -1191,7 +1191,7 @@ static const struct pw_stream_events out_stream_events = { + + static int setup_streams(struct impl *impl) + { +- int res; ++ int res = 0; + uint32_t i, n_params, *offs; + struct pw_array offsets; + const struct spa_pod **params = NULL; +-- +2.54.0 + diff --git a/0005-filter-graph-relax-LADSPA-plugin-loading.patch b/0005-filter-graph-relax-LADSPA-plugin-loading.patch new file mode 100644 index 0000000..fd32c3d --- /dev/null +++ b/0005-filter-graph-relax-LADSPA-plugin-loading.patch @@ -0,0 +1,164 @@ +From 61726f41d533199cbb5399436e0222dbbb21d74b Mon Sep 17 00:00:00 2001 +From: Wim Taymans +Date: Thu, 14 May 2026 13:23:19 +0200 +Subject: [PATCH 5/5] filter-graph: relax LADSPA plugin loading + +Make a new library.filter-path for the filter-graph that will filter and +restrict the dlopen filenames (used for the LADSPA plugin only). + +By default this is false and so filter-chain can load from absolute +paths without extra checks. + +Enable the extra checks for the pulse LADSPA modules and the +audioconvert filter graphs because these allow loading LADSPA plugins +into other processes. + +Fixes #5222 +--- + spa/plugins/audioconvert/audioconvert.c | 1 + + spa/plugins/filter-graph/filter-graph.c | 8 +++++++- + spa/plugins/filter-graph/ladspa_plugin.c | 19 ++++++++++++------- + .../modules/module-ladspa-sink.c | 1 + + .../modules/module-ladspa-source.c | 1 + + 5 files changed, 22 insertions(+), 8 deletions(-) + +diff --git a/spa/plugins/audioconvert/audioconvert.c b/spa/plugins/audioconvert/audioconvert.c +index 946e1934c..cfdda59ec 100644 +--- a/spa/plugins/audioconvert/audioconvert.c ++++ b/spa/plugins/audioconvert/audioconvert.c +@@ -1258,6 +1258,7 @@ static int load_filter_graph(struct impl *impl, const char *graph, int order) + &SPA_DICT_ITEMS( + SPA_DICT_ITEM(SPA_KEY_LIBRARY_NAME, "filter-graph/libspa-filter-graph"), + SPA_DICT_ITEM("clock.quantum-limit", qlimit), ++ SPA_DICT_ITEM("library.filter-path", "true"), + SPA_DICT_ITEM("filter.graph", graph))); + if (new_handle == NULL) + goto error; +diff --git a/spa/plugins/filter-graph/filter-graph.c b/spa/plugins/filter-graph/filter-graph.c +index b83a6b1da..69a5a9069 100644 +--- a/spa/plugins/filter-graph/filter-graph.c ++++ b/spa/plugins/filter-graph/filter-graph.c +@@ -219,6 +219,7 @@ struct impl { + uint32_t quantum_limit; + uint32_t max_align; + long unsigned rate; ++ bool filter_path; + + struct spa_list plugin_list; + +@@ -830,7 +831,7 @@ static struct plugin *plugin_load(struct impl *impl, const char *type, const cha + struct spa_handle *hndl = NULL; + struct plugin *plugin; + char module[PATH_MAX]; +- char factory_name[256], dsp_ptr[256]; ++ char factory_name[256], dsp_ptr[256], filter[16]; + void *iface; + int res; + +@@ -848,11 +849,14 @@ static struct plugin *plugin_load(struct impl *impl, const char *type, const cha + "filter.graph.plugin.%s", type); + spa_scnprintf(dsp_ptr, sizeof(dsp_ptr), + "pointer:%p", impl->dsp); ++ spa_scnprintf(filter, sizeof(filter), ++ "%s", impl->filter_path ? "true" : "false"); + + hndl = spa_plugin_loader_load(impl->loader, factory_name, + &SPA_DICT_ITEMS( + SPA_DICT_ITEM(SPA_KEY_LIBRARY_NAME, module), + SPA_DICT_ITEM("filter.graph.path", path), ++ SPA_DICT_ITEM("library.filter-path", filter), + SPA_DICT_ITEM("filter.graph.audio.dsp", dsp_ptr))); + + if (hndl == NULL) { +@@ -2261,6 +2265,8 @@ impl_init(const struct spa_handle_factory *factory, + spa_atou32(s, &impl->info.n_inputs, 0); + if (spa_streq(k, "filter-graph.n_outputs")) + spa_atou32(s, &impl->info.n_outputs, 0); ++ if (spa_streq(k, "library.filter-path")) ++ impl->filter_path = spa_atob(s); + } + if (impl->quantum_limit == 0) + return -EINVAL; +diff --git a/spa/plugins/filter-graph/ladspa_plugin.c b/spa/plugins/filter-graph/ladspa_plugin.c +index 9274e69c4..1f7cb6ae5 100644 +--- a/spa/plugins/filter-graph/ladspa_plugin.c ++++ b/spa/plugins/filter-graph/ladspa_plugin.c +@@ -20,6 +20,7 @@ + struct plugin { + struct spa_handle handle; + struct spa_fga_plugin plugin; ++ bool filter_path; + + struct spa_log *log; + +@@ -218,13 +219,13 @@ static inline const char *split_walk(const char *str, const char *delimiter, siz + return s; + } + +-static void make_search_paths(const char **path, const char **search_dirs) ++static void make_search_paths(const char **path, const char **search_dirs, bool filter) + { +- const char *p; +- +- while ((p = strstr(*path, "../")) != NULL) +- *path = p + 3; +- ++ if (filter) { ++ const char *p; ++ while ((p = strstr(*path, "../")) != NULL) ++ *path = p + 3; ++ } + *search_dirs = getenv("LADSPA_PATH"); + if (!*search_dirs) + *search_dirs = "/usr/lib64/ladspa:/usr/lib/ladspa:" LIBDIR; +@@ -237,6 +238,8 @@ static int load_ladspa_plugin(struct plugin *impl, const char *path, const char + char filename[PATH_MAX]; + size_t len; + ++ if (!impl->filter_path && path[0] == '/') ++ return ladspa_handle_load_by_path(impl, path); + /* + * set the errno for the case when `ladspa_handle_load_by_path()` + * is never called, which can only happen if the supplied +@@ -322,11 +325,13 @@ impl_init(const struct spa_handle_factory *factory, + const char *s = info->items[i].value; + if (spa_streq(k, "filter.graph.path")) + path = s; ++ else if (spa_streq(k, "library.filter-path")) ++ impl->filter_path = spa_atob(s); + } + if (path == NULL) + return -EINVAL; + +- make_search_paths(&path, &search_dirs); ++ make_search_paths(&path, &search_dirs, impl->filter_path); + + if ((res = load_ladspa_plugin(impl, path, search_dirs)) < 0) { + spa_log_error(impl->log, "failed to load plugin '%s' in '%s': %s", +diff --git a/src/modules/module-protocol-pulse/modules/module-ladspa-sink.c b/src/modules/module-protocol-pulse/modules/module-ladspa-sink.c +index 50c368398..d19239d36 100644 +--- a/src/modules/module-protocol-pulse/modules/module-ladspa-sink.c ++++ b/src/modules/module-protocol-pulse/modules/module-ladspa-sink.c +@@ -200,6 +200,7 @@ static int module_ladspa_sink_prepare(struct module * const module) + } else { + pw_properties_set(props, PW_KEY_NODE_DESCRIPTION, str); + } ++ pw_properties_set(props, "library.filter-path", "true"); + + if ((str = pw_properties_get(props, "master")) != NULL || + (str = pw_properties_get(props, "sink_master")) != NULL) { +diff --git a/src/modules/module-protocol-pulse/modules/module-ladspa-source.c b/src/modules/module-protocol-pulse/modules/module-ladspa-source.c +index 09eb11ce4..2f3521d12 100644 +--- a/src/modules/module-protocol-pulse/modules/module-ladspa-source.c ++++ b/src/modules/module-protocol-pulse/modules/module-ladspa-source.c +@@ -200,6 +200,7 @@ static int module_ladspa_source_prepare(struct module * const module) + } else { + pw_properties_set(props, PW_KEY_NODE_DESCRIPTION, str); + } ++ pw_properties_set(props, "library.filter-path", "true"); + + if ((str = pw_properties_get(props, "master")) != NULL || + (str = pw_properties_get(props, "source_master")) != NULL) { +-- +2.54.0 + diff --git a/SOURCES/0001-conf-disable-bluez5.patch b/SOURCES/0001-conf-disable-bluez5.patch deleted file mode 100644 index 022f8d7..0000000 --- a/SOURCES/0001-conf-disable-bluez5.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 13945e27434951366960dd3a0461c58487df82a2 Mon Sep 17 00:00:00 2001 -From: Wim Taymans -Date: Mon, 30 Mar 2020 15:32:04 +0200 -Subject: [PATCH] conf: disable bluez5 - -Disable bluetooth handling by default to avoid causing -conflicts with pulseaudio. ---- - src/daemon/pipewire.conf.in | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in -index 574cba4f..4ecec24f 100644 ---- a/src/daemon/pipewire.conf.in -+++ b/src/daemon/pipewire.conf.in -@@ -71,4 +71,4 @@ create-object spa-node-factory factory.name=support.node.driver node.name=Dummy - # Execute the given program. This is usually used to start the - # session manager. run the session manager with -h for options - # --exec pipewire-media-session # -d alsa-seq,alsa-pcm,bluez5,metadata -+exec pipewire-media-session -d bluez5 # -d alsa-seq,alsa-pcm,metadata --- -2.26.2 - diff --git a/SPECS/pipewire.spec b/SPECS/pipewire.spec deleted file mode 100644 index 3df624d..0000000 --- a/SPECS/pipewire.spec +++ /dev/null @@ -1,482 +0,0 @@ -%global apiversion 0.3 -%global spaversion 0.2 - -#global snap 20141103 -#global gitrel 327 -#global gitcommit aec811798cd883a454b9b5cd82c77831906bbd2d -#global shortcommit %(c=%{gitcommit}; echo ${c:0:5}) - -# https://bugzilla.redhat.com/983606 -%global _hardened_build 1 - -# where/how to apply multilib hacks -%global multilib_archs x86_64 %{ix86} ppc64 ppc s390x s390 sparc64 sparcv9 ppc64le - -%global enable_alsa 1 - -%if 0%{?fedora} -%global enable_jack 1 -%global enable_pulse 1 -%global enable_vulkan 1 -%endif - -# libpulse and libjack subpackages shouldn't have library provides -# as the files they ship are not in the linker path. We also have -# to exclude requires or else the subpackages wind up requiring the -# libs they're no longer providing -# FIXME: the jack-audio-connection-kit and pulseaudio subpackages -# should get the auto-generated Provides: instead, but they do not, -# either with or without the lines below, not sure how to fix that -%global __provides_exclude_from ^%{_libdir}/pipewire-%{apiversion}/.*$ -%global __requires_exclude_from ^%{_libdir}/pipewire-%{apiversion}/.*$ - -Name: pipewire -Summary: Media Sharing Server -Version: 0.3.6 -Release: 1%{?snap:.%{snap}git%{shortcommit}}%{?dist} -License: MIT -URL: https://pipewire.org/ -%if 0%{?gitrel} -# git clone git://anongit.freedesktop.org/gstreamer/pipewire -# cd pipewire; git reset --hard %{gitcommit}; ./autogen.sh; make; make distcheck -Source0: pipewire-%{version}-%{gitrel}-g%{shortcommit}.tar.gz -%else -Source0: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/%{version}/pipewire-%{version}.tar.gz -%endif - -## upstream patches - -## upstreamable patches - -## fedora patches -Patch0: 0001-conf-disable-bluez5.patch - -BuildRequires: meson >= 0.49.0 -BuildRequires: gcc -BuildRequires: pkgconfig -BuildRequires: pkgconfig(libudev) -BuildRequires: pkgconfig(dbus-1) -BuildRequires: pkgconfig(glib-2.0) >= 2.32 -BuildRequires: pkgconfig(gio-unix-2.0) >= 2.32 -BuildRequires: pkgconfig(gstreamer-1.0) >= 1.10.0 -BuildRequires: pkgconfig(gstreamer-base-1.0) >= 1.10.0 -BuildRequires: pkgconfig(gstreamer-plugins-base-1.0) >= 1.10.0 -BuildRequires: pkgconfig(gstreamer-net-1.0) >= 1.10.0 -BuildRequires: pkgconfig(gstreamer-allocators-1.0) >= 1.10.0 -%if 0%{?enable_vulkan} -BuildRequires: pkgconfig(vulkan) -%endif -BuildRequires: pkgconfig(bluez) -BuildRequires: systemd-devel >= 184 -BuildRequires: alsa-lib-devel -BuildRequires: libv4l-devel -BuildRequires: doxygen -BuildRequires: xmltoman -BuildRequires: graphviz -BuildRequires: sbc-devel -BuildRequires: libsndfile-devel - -Requires(pre): shadow-utils -Requires: %{name}-libs%{?_isa} = %{version}-%{release} -Requires: systemd >= 184 -Requires: rtkit - -# https://bugzilla.redhat.com/983606 -%global _hardened_build 1 - -## enable systemd activation -%global systemd 1 - -%description -PipeWire is a multimedia server for Linux and other Unix like operating -systems. - -%package libs -Summary: Libraries for PipeWire clients -License: MIT -Recommends: %{name}%{?_isa} = %{version}-%{release} - -%description libs -This package contains the runtime libraries for any application that wishes -to interface with a PipeWire media server. - -%package gstreamer -Summary: GStreamer elements for PipeWire -License: MIT -Recommends: %{name}%{?_isa} = %{version}-%{release} - -%description gstreamer -This package contains GStreamer elements to interface with a -PipeWire media server. - -%package devel -Summary: Headers and libraries for PipeWire client development -License: MIT -Requires: %{name}-libs%{?_isa} = %{version}-%{release} -%description devel -Headers and libraries for developing applications that can communicate with -a PipeWire media server. - -%package doc -Summary: PipeWire media server documentation -License: MIT - -%description doc -This package contains documentation for the PipeWire media server. - -%package utils -Summary: PipeWire media server utilities -License: MIT -Requires: %{name}%{?_isa} = %{version}-%{release} -Requires: %{name}-libs%{?_isa} = %{version}-%{release} - -%description utils -This package contains command line utilities for the PipeWire media server. - -%if 0%{?enable_alsa} -%package alsa -Summary: PipeWire media server ALSA support -License: MIT -Recommends: %{name}%{?_isa} = %{version}-%{release} -Requires: %{name}-libs%{?_isa} = %{version}-%{release} - -%description alsa -This package contains an ALSA plugin for the PipeWire media server. -%endif - -%if 0%{?enable_jack} -%package libjack -Summary: PipeWire libjack library -License: MIT -Recommends: %{name}%{?_isa} = %{version}-%{release} -Requires: %{name}-libs%{?_isa} = %{version}-%{release} -BuildRequires: jack-audio-connection-kit-devel >= 1.9.10 -# Renamed in F32 -Obsoletes: pipewire-jack < 0.2.96-2 - -%description libjack -This package contains a PipeWire replacement for JACK audio connection kit -"libjack" library. - -%package jack-audio-connection-kit -Summary: PipeWire JACK implementation -License: MIT -Recommends: %{name}%{?_isa} = %{version}-%{release} -Requires: %{name}-libjack%{?_isa} = %{version}-%{release} -BuildRequires: jack-audio-connection-kit-devel >= 1.9.10 -Conflicts: jack-audio-connection-kit -Conflicts: jack-audio-connection-kit-dbus -Provides: jack-audio-connection-kit - -%description jack-audio-connection-kit -This package provides a JACK implementation based on PipeWire - -%package plugin-jack -Summary: PipeWire media server JACK support -License: MIT -BuildRequires: jack-audio-connection-kit-devel -Recommends: %{name}%{?_isa} = %{version}-%{release} -Requires: %{name}-libs%{?_isa} = %{version}-%{release} -Requires: jack-audio-connection-kit - -%description plugin-jack -This package contains the PipeWire spa plugin to connect to a JACK server. -%endif - -%if 0%{?enable_pulse} -%package libpulse -Summary: PipeWire libpulse library -License: MIT -Recommends: %{name}%{?_isa} = %{version}-%{release} -Requires: %{name}-libs%{?_isa} = %{version}-%{release} -BuildRequires: pulseaudio-libs-devel -# Renamed in F32 -Obsoletes: pipewire-pulseaudio < 0.2.96-2 - -%description libpulse -This package contains a PipeWire replacement for PulseAudio "libpulse" library. - -%package pulseaudio -Summary: PipeWire PulseAudio implementation -License: MIT -Recommends: %{name}%{?_isa} = %{version}-%{release} -Requires: %{name}-libpulse%{?_isa} = %{version}-%{release} -BuildRequires: pulseaudio-libs-devel -Conflicts: pulseaudio-libs -Conflicts: pulseaudio-libs-glib2 -Provides: pulseaudio-libs -Provides: pulseaudio-libs-glib2 - -%description pulseaudio -This package provides a PulseAudio implementation based on PipeWire -%endif - -%prep -%setup -q -T -b0 -n %{name}-%{version}%{?gitrel:-%{gitrel}-g%{shortcommit}} - -%patch0 -p1 -b .0000 - -%build -%meson \ - -D docs=true -D man=true -D gstreamer=true -D systemd=true \ - %{!?enable_jack:-D jack=false -D pipewire-jack=false} \ - %{!?enable_pulse:-D pipewire-pulseaudio=false} \ - %{!?enable_alsa:-D pipewire-alsa=false} \ - %{!?enable_vulkan:-D vulkan=false} - -%install -%meson_install - -mkdir %{buildroot}%{_userunitdir}/sockets.target.wants -ln -s ../pipewire.socket %{buildroot}%{_userunitdir}/sockets.target.wants/pipewire.socket - -%if 0%{?enable_jack} -ln -s pipewire-%{apiversion}/jack/libjack.so.0 %{buildroot}%{_libdir}/libjack.so.0.1.0 -ln -s libjack.so.0.1.0 %{buildroot}%{_libdir}/libjack.so.0 -ln -s pipewire-%{apiversion}/jack/libjackserver.so.0 %{buildroot}%{_libdir}/libjackserver.so.0.1.0 -ln -s libjackserver.so.0.1.0 %{buildroot}%{_libdir}/libjackserver.so.0 -ln -s pipewire-%{apiversion}/jack/libjacknet.so.0 %{buildroot}%{_libdir}/libjacknet.so.0.1.0 -ln -s libjacknet.so.0.1.0 %{buildroot}%{_libdir}/libjacknet.so.0 -%endif - -%if 0%{?enable_pulse} -ln -s pipewire-%{apiversion}/pulse/libpulse.so.0 %{buildroot}%{_libdir}/libpulse.so.0 -ln -s pipewire-%{apiversion}/pulse/libpulse-simple.so.0 %{buildroot}%{_libdir}/libpulse-simple.so.0 -ln -s pipewire-%{apiversion}/pulse/libpulse-mainloop-glib.so.0 %{buildroot}%{_libdir}/libpulse-mainloop-glib.so.0 -%endif - -%if 0%{?enable_alsa} -mkdir -p %{buildroot}%{_sysconfdir}/alsa/conf.d/ -cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/50-pipewire.conf \ - %{buildroot}%{_sysconfdir}/alsa/conf.d/50-pipewire.conf -cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf \ - %{buildroot}%{_sysconfdir}/alsa/conf.d/99-pipewire-default.conf -%endif - -%check -%ifarch s390x -# FIXME: s390x FAIL: pw-test-stream, pw-test-endpoint -%global tests_nonfatal 1 -%endif -%meson_test || TESTS_ERROR=$? -if [ "${TESTS_ERROR}" != "" ]; then -echo "test failed" -%{!?tests_nonfatal:exit $TESTS_ERROR} -fi - -%pre -getent group pipewire >/dev/null || groupadd -r pipewire -getent passwd pipewire >/dev/null || \ - useradd -r -g pipewire -d %{_localstatedir}/run/pipewire -s /sbin/nologin -c "PipeWire System Daemon" pipewire -exit 0 - -%ldconfig_scriptlets libs - -%files -%license LICENSE COPYING -%doc README.md -%if 0%{?systemd} -%{_userunitdir}/pipewire.* -%{_userunitdir}/sockets.target.wants/pipewire.socket -%endif -%{_bindir}/pipewire -%{_bindir}/pipewire-media-session -%{_mandir}/man1/pipewire.1* -%dir %{_sysconfdir}/pipewire/ -%config(noreplace) %{_sysconfdir}/pipewire/pipewire.conf -%{_mandir}/man5/pipewire.conf.5* - -%files libs -%license LICENSE COPYING -%doc README.md -%{_libdir}/libpipewire-%{apiversion}.so.* -%{_libdir}/pipewire-%{apiversion}/libpipewire-*.so -%dir %{_libdir}/spa-%{spaversion} -%{_libdir}/spa-%{spaversion}/alsa/ -%{_libdir}/spa-%{spaversion}/audioconvert/ -%{_libdir}/spa-%{spaversion}/audiomixer/ -%{_libdir}/spa-%{spaversion}/bluez5/ -%{_libdir}/spa-%{spaversion}/control/ -%{_libdir}/spa-%{spaversion}/support/ -%{_libdir}/spa-%{spaversion}/v4l2/ -%{_libdir}/spa-%{spaversion}/videoconvert/ -%if 0%{?enable_vulkan} -%{_libdir}/spa-%{spaversion}/vulkan/ -%endif - -%files gstreamer -%{_libdir}/gstreamer-1.0/libgstpipewire.* - -%files devel -%{_libdir}/libpipewire-%{apiversion}.so -%{_includedir}/pipewire-%{apiversion}/ -%{_includedir}/spa-%{spaversion}/ -%{_libdir}/pkgconfig/libpipewire-%{apiversion}.pc -%{_libdir}/pkgconfig/libspa-%{spaversion}.pc - -%files doc -%{_datadir}/doc/pipewire/html - -%files utils -%{_bindir}/pw-mon -%{_bindir}/pw-metadata -%{_bindir}/pw-mididump -%{_bindir}/pw-midiplay -%{_bindir}/pw-midirecord -%{_bindir}/pw-cli -%{_bindir}/pw-dot -%{_bindir}/pw-cat -%{_bindir}/pw-play -%{_bindir}/pw-profiler -%{_bindir}/pw-record -%{_mandir}/man1/pw-mon.1* -%{_mandir}/man1/pw-cli.1* -%{_mandir}/man1/pw-cat.1* -%{_mandir}/man1/pw-dot.1* -%{_mandir}/man1/pw-metadata.1* -%{_mandir}/man1/pw-mididump.1* -%{_mandir}/man1/pw-profiler.1* - -%{_bindir}/spa-monitor -%{_bindir}/spa-inspect - -%if 0%{?enable_alsa} -%files alsa -%{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so -%{_datadir}/alsa/alsa.conf.d/50-pipewire.conf -%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf -%config(noreplace) %{_sysconfdir}/alsa/conf.d/50-pipewire.conf -%config(noreplace) %{_sysconfdir}/alsa/conf.d/99-pipewire-default.conf -%endif - -%if 0%{?enable_jack} -%files libjack -%{_libdir}/pipewire-%{apiversion}/jack/libjack.so* -%{_libdir}/pipewire-%{apiversion}/jack/libjacknet.so* -%{_libdir}/pipewire-%{apiversion}/jack/libjackserver.so* -%{_bindir}/pw-jack -%{_mandir}/man1/pw-jack.1* - -%files jack-audio-connection-kit -%{_libdir}/libjack.so.* -%{_libdir}/libjackserver.so.* -%{_libdir}/libjacknet.so.* - -%files plugin-jack -%{_libdir}/spa-%{spaversion}/jack/ -%endif - -%if 0%{?enable_pulse} -%files libpulse -%{_libdir}/pipewire-%{apiversion}/pulse/libpulse.so* -%{_libdir}/pipewire-%{apiversion}/pulse/libpulse-simple.so* -%{_libdir}/pipewire-%{apiversion}/pulse/libpulse-mainloop-glib.so* -%{_bindir}/pw-pulse -%{_mandir}/man1/pw-pulse.1* - -%files pulseaudio -%{_libdir}/libpulse.so.0 -%{_libdir}/libpulse-simple.so.0 -%{_libdir}/libpulse-mainloop-glib.so.0 -%endif - -%changelog -* Tue Jun 23 2020 Wim Taymans - 0.3.6-1 -- Update to 0.3.6 -- Resolves: rhbz#1832347 - -* Mon Jun 15 2020 Wim Taymans - 0.3.5-3 -- Rebuild -- Resolves: rhbz#1832347 - -* Tue May 19 2020 Wim Taymans - 0.3.5-2 -- Disable vulkan -- Resolves: rhbz#1832347 - -* Tue May 19 2020 Wim Taymans - 0.3.5-1 -- Update to 0.3.5 -- Disable pulse and jack -- Add patch to work with meson 0.49 -- Add patch to fix neon compilation -- Resolves: rhbz#1832347 - -* Fri Oct 18 2019 David King - 0.2.7-1 -- Rebase to 0.2.7 (#1748331) - -* Fri Jan 11 2019 Wim Taymans - 0.2.5-1 -- Update to 0.2.5 -- Revert patch that requires too new meson -- Add patch to avoid invalid conversion error with C++ compilers -- Resolves: #1664569 - -* Fri Nov 30 2018 Wim Taymans - 0.2.4-1 -- Update to 0.2.4 -- Add defines for cursor and bitmap metadata -- Revert patch that requires too new meson -- Resolves: #1655028 - -* Thu Oct 18 2018 Wim Taymans - 0.2.3-2 -- Add systemd socket activation -- Resolves: #1639871 - -* Fri Oct 12 2018 Wim Taymans - 0.2.3-1 -- Update to 0.2.3 -- Resolves: #1638046 - -* Wed Aug 01 2018 Wim Taymans - 0.2.2-1 -- Update to 0.2.2 - -* Tue Feb 27 2018 Wim Taymans - 0.1.9-1 -- Update to 0.1.9 - -* Fri Feb 09 2018 Fedora Release Engineering - 0.1.8-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Sat Feb 03 2018 Igor Gnatenko - 0.1.8-2 -- Switch to %%ldconfig_scriptlets - -* Tue Jan 23 2018 Wim Taymans - 0.1.8-1 -- Update to 0.1.8 - -* Fri Nov 24 2017 Wim Taymans - 0.1.7-1 -- Update to 0.1.7 -- Add to build when memfd_create is already defined - -* Fri Nov 03 2017 Wim Taymans - 0.1.6-1 -- Update to 0.1.6 - -* Tue Sep 19 2017 Wim Taymans - 0.1.5-2 -- Add patch to avoid segfault when probing - -* Tue Sep 19 2017 Wim Taymans - 0.1.5-1 -- Update to 0.1.5 - -* Thu Sep 14 2017 Kalev Lember - 0.1.4-3 -- Rebuilt for GNOME 3.26.0 megaupdate - -* Fri Sep 08 2017 Wim Taymans - 0.1.4-2 -- Install SPA hooks - -* Wed Aug 23 2017 Wim Taymans - 0.1.4-1 -- Update to 0.1.4 - -* Wed Aug 09 2017 Wim Taymans - 0.1.3-1 -- Update to 0.1.3 - -* Tue Jul 04 2017 Wim Taymans - 0.1.2-1 -- Update to 0.1.2 -- Added more build requirements -- Make separate doc package - -* Mon Jun 26 2017 Wim Taymans - 0.1.1-1 -- Update to 0.1.1 -- Add dbus-1 to BuildRequires -- change libs-devel to -devel - -* Wed Sep 9 2015 Wim Taymans - 0.1.0-2 -- Fix BuildRequires to use pkgconfig, add all dependencies found in configure.ac -- Add user and groups if needed -- Add license to %%licence - -* Tue Sep 1 2015 Wim Taymans - 0.1.0-1 -- First version diff --git a/pipewire.spec b/pipewire.spec new file mode 100644 index 0000000..b46cf5b --- /dev/null +++ b/pipewire.spec @@ -0,0 +1,1791 @@ +%global majorversion 1 +%global minorversion 4 +%global microversion 11 + +%global apiversion 0.3 +%global spaversion 0.2 +%global soversion 0 +%global libversion %{soversion}.%(bash -c '((intversion = (%{minorversion} * 100) + %{microversion})); echo ${intversion}').0 +%global ms_version 0.4.2 + +# For rpmdev-bumpspec and releng automation +%global baserelease 1 + +#global snapdate 20210107 +#global gitcommit b17db2cebc1a5ab2c01851d29c05f79cd2f262bb +#global shortcommit %(c=%{gitcommit}; echo ${c:0:7}) + +# https://bugzilla.redhat.com/983606 +%global _hardened_build 1 + +# where/how to apply multilib hacks +%global multilib_archs x86_64 %{ix86} ppc64 ppc s390x s390 sparc64 sparcv9 ppc64le + +# Build conditions for various features +%bcond_without alsa +%bcond_without vulkan + +# Features disabled for RHEL 8 +%if 0%{?rhel} && 0%{?rhel} < 9 +%bcond_with pulse +%bcond_with jack +%else +%bcond_without pulse +%bcond_without jack +%endif + +# Features disabled for RHEL +%if 0%{?rhel} +%bcond_with jackserver_plugin +%bcond_with libmysofa +%bcond_with lv2 +%bcond_with roc +%bcond_with ebur128 +%else +%bcond_without jackserver_plugin +%bcond_without libmysofa +%bcond_without lv2 +%bcond_without roc +%bcond_without ebur128 +%endif + +%if 0%{?rhel} || ("%{_arch}" == "s390x") +%bcond_with ffado +%else +%bcond_without ffado +%endif + +# Disabled for RHEL < 10 and Fedora < 36 +%if (0%{?rhel} && 0%{?rhel} < 10) || (0%{?fedora} && 0%{?fedora} < 36) || ("%{_arch}" == "s390x") || ("%{_arch}" == "ppc64le") +%bcond_with libcamera_plugin +%else +%bcond_without libcamera_plugin +%endif + +%bcond_without v4l2 + +Name: pipewire +Summary: Media Sharing Server +Version: %{majorversion}.%{minorversion}.%{microversion} +Release: %{baserelease}%{?snapdate:.%{snapdate}git%{shortcommit}}%{?dist} +License: MIT +URL: https://pipewire.org/ +%if 0%{?snapdate} +Source0: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/%{gitcommit}/pipewire-%{shortcommit}.tar.gz +%else +Source0: https://gitlab.freedesktop.org/pipewire/pipewire/-/archive/%{version}/pipewire-%{version}.tar.gz +%endif +Source1: pipewire.sysusers + +## upstream patches +Patch0001: 0001-only-dlopen-from-the-defined-search-paths.patch +Patch0002: 0002-dlopen-improve-prefix-check-some-more.patch +Patch0003: 0003-dlopen-support-search-path-ending-in.patch +Patch0004: 0004-filter-graph-error-when-there-are-no-valid-nodes.patch +Patch0005: 0005-filter-graph-relax-LADSPA-plugin-loading.patch + +## upstreamable patches + +## fedora patches + +BuildRequires: gettext +BuildRequires: meson >= 0.59.0 +BuildRequires: gcc +BuildRequires: g++ +BuildRequires: pkgconfig +BuildRequires: pkgconfig(libudev) +BuildRequires: pkgconfig(dbus-1) +BuildRequires: pkgconfig(glib-2.0) >= 2.32 +BuildRequires: pkgconfig(gio-unix-2.0) >= 2.32 +BuildRequires: pkgconfig(gstreamer-1.0) >= 1.10.0 +BuildRequires: pkgconfig(gstreamer-base-1.0) >= 1.10.0 +BuildRequires: pkgconfig(gstreamer-plugins-base-1.0) >= 1.10.0 +BuildRequires: pkgconfig(gstreamer-net-1.0) >= 1.10.0 +BuildRequires: pkgconfig(gstreamer-allocators-1.0) >= 1.10.0 +# libldac is not built on x390x, see rhbz#1677491 +%ifnarch s390x +BuildRequires: pkgconfig(ldacBT-enc) +BuildRequires: pkgconfig(ldacBT-abr) +%endif +BuildRequires: pkgconfig(fdk-aac) +BuildRequires: pkgconfig(bluez) +BuildRequires: systemd +BuildRequires: systemd-devel +BuildRequires: alsa-lib-devel +BuildRequires: libv4l-devel +BuildRequires: doxygen +BuildRequires: python-docutils +BuildRequires: graphviz +BuildRequires: sbc-devel +BuildRequires: liblc3-devel +BuildRequires: libsndfile-devel +BuildRequires: ncurses-devel +BuildRequires: pulseaudio-libs-devel +BuildRequires: avahi-devel +%if 0%{?fedora} >= 40 || 0%{?rhel} >= 10 +BuildRequires: pkgconfig(webrtc-audio-processing-1) +%else +BuildRequires: pkgconfig(webrtc-audio-processing) >= 0.2 +%endif +BuildRequires: libusb1-devel +BuildRequires: readline-devel +BuildRequires: openssl-devel +BuildRequires: libcanberra-devel +BuildRequires: libuv-devel +BuildRequires: speexdsp-devel +BuildRequires: systemd-rpm-macros +%if %{with ebur128} +BuildRequires: libebur128-devel +%endif +BuildRequires: fftw-devel + +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: systemd +Requires: rtkit +# A virtual Provides so we can swap session managers +Requires: pipewire-session-manager +# Prefer WirePlumber for session manager +Suggests: wireplumber +# Bring in libcamera plugin for MIPI / complex camera support +Recommends: pipewire-plugin-libcamera + +%description +PipeWire is a multimedia server for Linux and other Unix like operating +systems. + +%package libs +Summary: Libraries for PipeWire clients +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Obsoletes: %{name}-libpulse < %{version}-%{release} + +%description libs +This package contains the runtime libraries for any application that wishes +to interface with a PipeWire media server. + +%package gstreamer +Summary: GStreamer elements for PipeWire +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description gstreamer +This package contains GStreamer elements to interface with a +PipeWire media server. + +%package devel +Summary: Headers and libraries for PipeWire client development +License: MIT +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +%description devel +Headers and libraries for developing applications that can communicate with +a PipeWire media server. + +%package doc +Summary: PipeWire media server documentation +License: MIT + +%description doc +This package contains documentation for the PipeWire media server. + +%package utils +Summary: PipeWire media server utilities +License: MIT +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description utils +This package contains command line utilities for the PipeWire media server. + +%if %{with alsa} +%package alsa +Summary: PipeWire media server ALSA support +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +%if ! (0%{?fedora} && 0%{?fedora} < 34) +# Ensure this is provided by default to route all audio +Supplements: %{name} = %{version}-%{release} +# Replace PulseAudio and JACK ALSA plugins with PipeWire +## N.B.: If alsa-plugins gets updated in F33, this will need to be bumped +Obsoletes: alsa-plugins-jack < 1.2.2-5 +Obsoletes: alsa-plugins-pulseaudio < 1.2.2-5 +%endif + +%description alsa +This package contains an ALSA plugin for the PipeWire media server. +%endif + +%if %{with jack} +%package jack-audio-connection-kit-libs +Summary: PipeWire JACK implementation libraries +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: %{name}-jack-audio-connection-kit%{?_isa} = %{version}-%{release} +# Fixed jack subpackages +Conflicts: %{name}-libjack < 0.3.13-6 +Conflicts: %{name}-jack-audio-connection-kit < 0.3.13-6 +# Replaces libjack subpackage +Obsoletes: %{name}-libjack < 0.3.19-2 +Provides: %{name}-libjack = %{version}-%{release} +Provides: %{name}-libjack%{?_isa} = %{version}-%{release} + +%description jack-audio-connection-kit-libs +This package provides a JACK implementation libraries based on PipeWire + +%package jack-audio-connection-kit +Summary: PipeWire JACK implementation +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-jack-audio-connection-kit-libs%{?_isa} = %{version}-%{release} +# Replaces libjack subpackage +%if ! (0%{?fedora} && 0%{?fedora} < 34) +# Ensure this is provided by default to route all audio +Supplements: %{name} = %{version}-%{release} +# Replace JACK with PipeWire-JACK +## N.B.: If jack gets updated in F33, this will need to be bumped +Obsoletes: jack-audio-connection-kit < 1.9.16-2 +# Fix upgrade path to f38, see #2203789 +Obsoletes: jack-audio-connection-kit-example-clients < 1.9.22 +%endif + +%description jack-audio-connection-kit +This package provides a JACK implementation based on PipeWire + +%package jack-audio-connection-kit-devel +Summary: Development files for %{name}-jack-audio-connection-kit +License: MIT +Requires: %{name}-jack-audio-connection-kit-libs%{?_isa} = %{version}-%{release} +Conflicts: jack-audio-connection-kit-devel +Enhances: %{name}-jack-audio-connection-kit-libs + +%description jack-audio-connection-kit-devel +This package provides development files for building JACK applications +using PipeWire's JACK library. +%endif + +%if %{with jackserver_plugin} +%package plugin-jack +Summary: PipeWire media server JACK support +License: MIT +BuildRequires: jack-audio-connection-kit-devel +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-jack-audio-connection-kit-libs = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: jack-audio-connection-kit + +%description plugin-jack +This package contains the PipeWire spa plugin to connect to a JACK server. +%endif + +%if %{with libcamera_plugin} +%package plugin-libcamera +Summary: PipeWire media server libcamera support +License: MIT +BuildRequires: libcamera-devel +BuildRequires: libdrm-devel +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Requires: libcamera +Requires: libdrm + +%description plugin-libcamera +This package contains the PipeWire spa plugin to access cameras through libcamera. +%endif + +%if %{with vulkan} +%package plugin-vulkan +Summary: PipeWire media server vulkan support +License: MIT +BuildRequires: pkgconfig(vulkan) +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description plugin-vulkan +This package contains the PipeWire spa plugin for vulkan. +%endif + +%if %{with pulse} +%package pulseaudio +Summary: PipeWire PulseAudio implementation +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} +Conflicts: pulseaudio +# Fixed pulseaudio subpackages +Conflicts: %{name}-libpulse < 0.3.13-6 +Conflicts: %{name}-pulseaudio < 0.3.13-6 +%if ! (0%{?fedora} && 0%{?fedora} < 34) +# Ensure this is provided by default to route all audio +Supplements: %{name} = %{version}-%{release} +# Replace PulseAudio with PipeWire-PulseAudio +## N.B.: If pulseaudio gets updated in F33, this will need to be bumped +Obsoletes: pulseaudio < 14.2-3 +Obsoletes: pulseaudio-esound-compat < 14.2-3 +Obsoletes: pulseaudio-module-bluetooth < 14.2-3 +Obsoletes: pulseaudio-module-gconf < 14.2-3 +Obsoletes: pulseaudio-module-gsettings < 14.2-3 +Obsoletes: pulseaudio-module-jack < 14.2-3 +Obsoletes: pulseaudio-module-lirc < 14.2-3 +Obsoletes: pulseaudio-module-x11 < 14.2-3 +Obsoletes: pulseaudio-module-zeroconf < 14.2-3 +Obsoletes: pulseaudio-qpaeq < 14.2-3 +%endif + +# Virtual Provides to support swapping between PipeWire-PA and PA +Provides: pulseaudio-daemon +Conflicts: pulseaudio-daemon +Provides: pulseaudio-module-bluetooth +Provides: pulseaudio-module-jack + +%description pulseaudio +This package provides a PulseAudio implementation based on PipeWire +%endif + +%if %{with v4l2} +%package v4l2 +Summary: PipeWire media server v4l2 LD_PRELOAD support +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description v4l2 +This package contains an LD_PRELOAD library that redirects v4l2 applications to +PipeWire. +%endif + +%package module-x11 +Summary: PipeWire media server x11 support +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description module-x11 +This package contains X11 bell support for PipeWire. + +%if %{with ffado} +%package module-ffado +Summary: PipeWire media server ffado support +License: MIT +BuildRequires: libffado-devel +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description module-ffado +This package contains the FFADO support for PipeWire. +%endif + +%if %{with roc} +%package module-roc +Summary: PipeWire media server ROC support +License: MIT +BuildRequires: roc-toolkit-devel +BuildRequires: libunwind-devel +BuildRequires: openfec-devel +BuildRequires: sox-devel +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description module-roc +This package contains the ROC support for PipeWire. +%endif + +%if %{with libmysofa} +%package module-filter-chain-sofa +Summary: PipeWire media server sofa filter-chain support +License: MIT +BuildRequires: libmysofa-devel +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description module-filter-chain-sofa +This package contains the mysofa support for PipeWire filter-chain. +%endif + +%if %{with lv2} +%package module-filter-chain-lv2 +Summary: PipeWire media server lv2 filter-chain support +License: MIT +BuildRequires: lilv-devel +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description module-filter-chain-lv2 +This package contains the mysofa support for PipeWire filter-chain. +%endif + +%package config-rates +Summary: PipeWire media server multirate configuration +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description config-rates +This package contains the configuration files to support multiple +sample rates. + +%package config-upmix +Summary: PipeWire media server upmixing configuration +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description config-upmix +This package contains the configuration files to support upmixing. + +%package config-raop +Summary: PipeWire configuration enabling the raop module +License: MIT +Recommends: %{name}%{?_isa} = %{version}-%{release} +Requires: %{name}-libs%{?_isa} = %{version}-%{release} + +%description config-raop +This package contains the configuration file to enable the RAOP module. + +%prep +%autosetup -p1 %{?snapdate:-n %{name}-%{gitcommit}} + + +%if %{with media-session} +mkdir subprojects/packagefiles +cp %{SOURCE1} subprojects/packagefiles/ +%endif + +%build +%meson \ + -D docs=enabled -D man=enabled -D gstreamer=enabled -D systemd=enabled \ + -D sdl2=disabled \ + -D audiotestsrc=disabled -D videotestsrc=disabled \ + -D volume=disabled -D bluez5-codec-aptx=disabled \ + -D bluez5-codec-lc3plus=disabled -D bluez5-codec-lc3=enabled \ +%ifarch s390x + -D bluez5-codec-ldac=disabled \ +%endif + -D session-managers=[] \ + -D rtprio-server=60 -D rtprio-client=55 -D rlimits-rtprio=70 \ + -D snap=disabled \ + %{!?with_jack:-D pipewire-jack=disabled} \ + %{!?with_jackserver_plugin:-D jack=disabled} \ + %{!?with_libcamera_plugin:-D libcamera=disabled} \ + %{?with_jack:-D jack-devel=true} \ + %{!?with_alsa:-D pipewire-alsa=disabled} \ + %{?with_vulkan:-D vulkan=enabled} \ + %{!?with_libmysofa:-D libmysofa=disabled} \ + %{!?with_lv2:-D lv2=disabled} \ + %{!?with_roc:-D roc=disabled} \ + %{!?with_ffado:-D libffado=disabled} \ + %{!?with_ebur128:-D ebur128=disabled} \ + %{nil} +%meson_build + +%install +install -p -D -m 0644 %{SOURCE1} %{buildroot}%{_sysusersdir}/pipewire.conf +%meson_install + +# Own this directory so add-ons can use it +install -d -m 0755 %{buildroot}%{_datadir}/pipewire/pipewire.conf.d/ +install -d -m 0755 %{buildroot}%{_datadir}/pipewire/client.conf.d/ + +%if %{with jack} +mkdir -p %{buildroot}%{_sysconfdir}/ld.so.conf.d/ +echo %{_libdir}/pipewire-%{apiversion}/jack/ > %{buildroot}%{_sysconfdir}/ld.so.conf.d/pipewire-jack-%{_arch}.conf +%else +rm %{buildroot}%{_datadir}/pipewire/jack.conf + +%endif + +%if %{with alsa} +mkdir -p %{buildroot}%{_sysconfdir}/alsa/conf.d/ +cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/50-pipewire.conf \ + %{buildroot}%{_sysconfdir}/alsa/conf.d/50-pipewire.conf +cp %{buildroot}%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf \ + %{buildroot}%{_sysconfdir}/alsa/conf.d/99-pipewire-default.conf + +%endif + +%if ! %{with pulse} +# If the PulseAudio replacement isn't being offered, delete the files +rm %{buildroot}%{_bindir}/pipewire-pulse +rm %{buildroot}%{_userunitdir}/pipewire-pulse.* +rm %{buildroot}%{_datadir}/pipewire/pipewire-pulse.conf + +%endif + +%if %{with pulse} +# Own this directory so add-ons can use it +install -d -m 0755 %{buildroot}%{_datadir}/pipewire/pipewire-pulse.conf.d/ + +ln -s ../pipewire-pulse.conf.avail/20-upmix.conf \ + %{buildroot}%{_datadir}/pipewire/pipewire-pulse.conf.d/20-upmix.conf +%endif + +# rates config +ln -s ../pipewire.conf.avail/10-rates.conf \ + %{buildroot}%{_datadir}/pipewire/pipewire.conf.d/10-rates.conf + +# upmix config +ln -s ../pipewire.conf.avail/20-upmix.conf \ + %{buildroot}%{_datadir}/pipewire/pipewire.conf.d/20-upmix.conf +ln -s ../client.conf.avail/20-upmix.conf \ + %{buildroot}%{_datadir}/pipewire/client.conf.d/20-upmix.conf + +# raop config +ln -s ../pipewire.conf.avail/50-raop.conf \ + %{buildroot}%{_datadir}/pipewire/pipewire.conf.d/50-raop.conf + +%find_lang %{name} + +%check +%meson_test || TESTS_ERROR=$? +if [ "${TESTS_ERROR}" != "" ]; then +echo "test failed" +%{!?tests_nonfatal:exit $TESTS_ERROR} +fi + + +%post +%systemd_user_post pipewire.service +%systemd_user_post pipewire.socket + +%triggerun -- %{name} < 0.3.6-2 +# This is for upgrades from previous versions which had a static symlink. +# The %%post scriptlet above only does anything on initial package installation. +# Remove before F33. +systemctl --no-reload preset --global pipewire.socket >/dev/null 2>&1 || : + +%if %{with pulse} +%post pulseaudio +%systemd_user_post pipewire-pulse.service +%systemd_user_post pipewire-pulse.socket +%endif + +%files +%license LICENSE COPYING +%doc README.md NEWS +%{_userunitdir}/pipewire.* +%{_userunitdir}/filter-chain.* +%{_bindir}/pipewire +%{_bindir}/pipewire-avb +%{_bindir}/pipewire-aes67 +%{_bindir}/pipewire-vulkan +%{_mandir}/man1/pipewire.1* +%dir %{_datadir}/pipewire/ +%dir %{_datadir}/pipewire/pipewire.conf.d/ +%{_datadir}/pipewire/pipewire.conf +%{_datadir}/pipewire/pipewire.conf.avail/10-rates.conf +%{_datadir}/pipewire/pipewire.conf.avail/20-upmix.conf +%{_datadir}/pipewire/pipewire.conf.avail/50-raop.conf +%{_datadir}/pipewire/minimal.conf +%{_datadir}/pipewire/filter-chain.conf +%{_datadir}/pipewire/filter-chain/*.conf +%{_datadir}/pipewire/pipewire-avb.conf +%{_datadir}/pipewire/pipewire-aes67.conf +%{_datadir}/pipewire/pipewire-vulkan.conf +%{_mandir}/man5/pipewire.conf.5* +%{_mandir}/man5/pipewire-filter-chain.conf.5* +%config(noreplace) %{_sysconfdir}/security/limits.d/*.conf +%{_sysusersdir}/pipewire.conf + +%files libs -f %{name}.lang +%license LICENSE COPYING +%doc README.md +%{_libdir}/libpipewire-%{apiversion}.so.* +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-access.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-adapter.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-avb.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-client-device.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-client-node.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-combine-stream.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-echo-cancel.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-fallback-sink.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-filter-chain.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-link-factory.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-loopback.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-metadata.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-netjack2-driver.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-netjack2-manager.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-parametric-equalizer.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-pipe-tunnel.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-portal.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-profiler.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-protocol-native.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-protocol-simple.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-pulse-tunnel.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-raop-discover.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-raop-sink.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-rtkit.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-rtp-sap.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-rtp-session.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-rtp-sink.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-rtp-source.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-rt.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-session-manager.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-snapcast-discover.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-spa-device-factory.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-spa-device.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-spa-node-factory.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-spa-node.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-vban-send.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-vban-recv.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-zeroconf-discover.so +%dir %{_datadir}/alsa-card-profile/ +%dir %{_datadir}/alsa-card-profile/mixer/ +%{_datadir}/alsa-card-profile/mixer/paths/ +%{_datadir}/alsa-card-profile/mixer/profile-sets/ +%dir %{_datadir}/spa-0.2/ +%{_datadir}/spa-0.2/bluez5/bluez-hardware.conf +%{_prefix}/lib/udev/rules.d/90-pipewire-alsa.rules +%dir %{_libdir}/spa-%{spaversion} +%{_libdir}/spa-%{spaversion}/aec/ +%{_libdir}/spa-%{spaversion}/alsa/ +%{_libdir}/spa-%{spaversion}/audioconvert/ +%{_libdir}/spa-%{spaversion}/audiomixer/ +%{_libdir}/spa-%{spaversion}/avb/ +%{_libdir}/spa-%{spaversion}/bluez5/ +%{_libdir}/spa-%{spaversion}/control/ +%{_libdir}/spa-%{spaversion}/filter-graph/libspa-filter-graph.so +%{_libdir}/spa-%{spaversion}/filter-graph/libspa-filter-graph-plugin-builtin.so +%if %{with ebur128} +%{_libdir}/spa-%{spaversion}/filter-graph/libspa-filter-graph-plugin-ebur128.so +%endif +%{_libdir}/spa-%{spaversion}/filter-graph/libspa-filter-graph-plugin-ladspa.so +%{_libdir}/spa-%{spaversion}/support/ +%{_libdir}/spa-%{spaversion}/v4l2/ +%{_libdir}/spa-%{spaversion}/videoconvert/ +%{_libdir}/spa-%{spaversion}/libspa.so +%{_datadir}/pipewire/client.conf +%dir %{_datadir}/pipewire/client.conf.d/ +%{_datadir}/pipewire/client.conf.avail/20-upmix.conf +%{_mandir}/man5/pipewire-client.conf.5.gz +%{_mandir}/man7/pipewire-props.7.gz +%{_mandir}/man7/libpipewire-module-access.7.gz +%{_mandir}/man7/libpipewire-module-adapter.7.gz +%{_mandir}/man7/libpipewire-module-avb.7.gz +%{_mandir}/man7/libpipewire-module-client-device.7.gz +%{_mandir}/man7/libpipewire-module-client-node.7.gz +%{_mandir}/man7/libpipewire-module-combine-stream.7.gz +%{_mandir}/man7/libpipewire-module-echo-cancel.7.gz +%{_mandir}/man7/libpipewire-module-example-filter.7.gz +%{_mandir}/man7/libpipewire-module-example-sink.7.gz +%{_mandir}/man7/libpipewire-module-example-source.7.gz +%{_mandir}/man7/libpipewire-module-fallback-sink.7.gz +%{_mandir}/man7/libpipewire-module-ffado-driver.7.gz +%{_mandir}/man7/libpipewire-module-filter-chain.7.gz +%{_mandir}/man7/libpipewire-module-jack-tunnel.7.gz +%{_mandir}/man7/libpipewire-module-jackdbus-detect.7.gz +%{_mandir}/man7/libpipewire-module-link-factory.7.gz +%{_mandir}/man7/libpipewire-module-loopback.7.gz +%{_mandir}/man7/libpipewire-module-metadata.7.gz +%{_mandir}/man7/libpipewire-module-netjack2-driver.7.gz +%{_mandir}/man7/libpipewire-module-netjack2-manager.7.gz +%{_mandir}/man7/libpipewire-module-parametric-equalizer.7.gz +%{_mandir}/man7/libpipewire-module-pipe-tunnel.7.gz +%{_mandir}/man7/libpipewire-module-portal.7.gz +%{_mandir}/man7/libpipewire-module-profiler.7.gz +%{_mandir}/man7/libpipewire-module-protocol-native.7.gz +%{_mandir}/man7/libpipewire-module-protocol-pulse.7.gz +%{_mandir}/man7/libpipewire-module-protocol-simple.7.gz +%{_mandir}/man7/libpipewire-module-pulse-tunnel.7.gz +%{_mandir}/man7/libpipewire-module-raop-discover.7.gz +%{_mandir}/man7/libpipewire-module-raop-sink.7.gz +%{_mandir}/man7/libpipewire-module-roc-sink.7.gz +%{_mandir}/man7/libpipewire-module-roc-source.7.gz +%{_mandir}/man7/libpipewire-module-rt.7.gz +%{_mandir}/man7/libpipewire-module-rtp-sap.7.gz +%{_mandir}/man7/libpipewire-module-rtp-session.7.gz +%{_mandir}/man7/libpipewire-module-rtp-sink.7.gz +%{_mandir}/man7/libpipewire-module-rtp-source.7.gz +%{_mandir}/man7/libpipewire-module-spa-device-factory.7.gz +%{_mandir}/man7/libpipewire-module-spa-device.7.gz +%{_mandir}/man7/libpipewire-module-spa-node-factory.7.gz +%{_mandir}/man7/libpipewire-module-spa-node.7.gz +%{_mandir}/man7/libpipewire-module-session-manager.7.gz +%{_mandir}/man7/libpipewire-module-snapcast-discover.7.gz +%{_mandir}/man7/libpipewire-module-vban-recv.7.gz +%{_mandir}/man7/libpipewire-module-vban-send.7.gz +%{_mandir}/man7/libpipewire-module-x11-bell.7.gz +%{_mandir}/man7/libpipewire-module-zeroconf-discover.7.gz +%{_mandir}/man7/libpipewire-modules.7.gz + + +%files gstreamer +%{_libdir}/gstreamer-1.0/libgstpipewire.* + +%files devel +%{_libdir}/libpipewire-%{apiversion}.so +%{_includedir}/pipewire-%{apiversion}/ +%{_includedir}/spa-%{spaversion}/ +%{_libdir}/pkgconfig/libpipewire-%{apiversion}.pc +%{_libdir}/pkgconfig/libspa-%{spaversion}.pc + +%files doc +%doc README.md NEWS +%{_datadir}/doc/pipewire/html + +%files utils +%{_bindir}/pw-cat +%{_bindir}/pw-cli +%{_bindir}/pw-config +%{_bindir}/pw-container +%{_bindir}/pw-dot +%{_bindir}/pw-dsdplay +%{_bindir}/pw-dump +%{_bindir}/pw-encplay +%{_bindir}/pw-link +%{_bindir}/pw-loopback +%{_bindir}/pw-metadata +%{_bindir}/pw-mididump +%{_bindir}/pw-midiplay +%{_bindir}/pw-midirecord +%{_bindir}/pw-mon +%{_bindir}/pw-play +%{_bindir}/pw-profiler +%{_bindir}/pw-record +%{_bindir}/pw-reserve +%{_bindir}/pw-top +%{_mandir}/man1/pw-cat.1* +%{_mandir}/man1/pw-cli.1* +%{_mandir}/man1/pw-config.1* +%{_mandir}/man1/pw-container.1* +%{_mandir}/man1/pw-dot.1* +%{_mandir}/man1/pw-dump.1* +%{_mandir}/man1/pw-link.1* +%{_mandir}/man1/pw-loopback.1* +%{_mandir}/man1/pw-metadata.1* +%{_mandir}/man1/pw-mididump.1* +%{_mandir}/man1/pw-mon.1* +%{_mandir}/man1/pw-profiler.1* +%{_mandir}/man1/pw-reserve.1* +%{_mandir}/man1/pw-top.1* +%{_mandir}/man1/spa-acp-tool.1* +%{_mandir}/man1/spa-inspect.1* +%{_mandir}/man1/spa-json-dump.1* +%{_mandir}/man1/spa-monitor.1* +%{_mandir}/man1/spa-resample.1* + +%{_bindir}/spa-acp-tool +%{_bindir}/spa-inspect +%{_bindir}/spa-json-dump +%{_bindir}/spa-monitor +%{_bindir}/spa-resample + +%if %{with alsa} +%files alsa +%{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so +%{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so +%{_datadir}/alsa/alsa.conf.d/50-pipewire.conf +%{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf +%config(noreplace) %{_sysconfdir}/alsa/conf.d/50-pipewire.conf +%config(noreplace) %{_sysconfdir}/alsa/conf.d/99-pipewire-default.conf +%endif + +%if %{with jack} +%files jack-audio-connection-kit-libs +%{_bindir}/pw-jack +%{_mandir}/man1/pw-jack.1* +%{_libdir}/pipewire-%{apiversion}/jack/libjack.so.* +%{_libdir}/pipewire-%{apiversion}/jack/libjacknet.so.* +%{_libdir}/pipewire-%{apiversion}/jack/libjackserver.so.* +%{_datadir}/pipewire/jack.conf +%{_mandir}/man5/pipewire-jack.conf.5* + +%files jack-audio-connection-kit +%{_sysconfdir}/ld.so.conf.d/pipewire-jack-%{_arch}.conf + +%files jack-audio-connection-kit-devel +%{_includedir}/jack/ +%{_libdir}/pipewire-%{apiversion}/jack/libjack.so +%{_libdir}/pipewire-%{apiversion}/jack/libjacknet.so +%{_libdir}/pipewire-%{apiversion}/jack/libjackserver.so +%{_libdir}/pkgconfig/jack.pc +%{_libdir}/pkgconfig/jackserver.pc +%endif + +%if %{with jackserver_plugin} +%files plugin-jack +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-jack-tunnel.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-jackdbus-detect.so +%{_libdir}/spa-%{spaversion}/jack/ +%endif + +%if %{with libcamera_plugin} +%files plugin-libcamera +%{_libdir}/spa-%{spaversion}/libcamera/ +%endif + +%if %{with vulkan} +%files plugin-vulkan +%{_libdir}/spa-%{spaversion}/vulkan/ +%endif + +%if %{with pulse} +%files pulseaudio +%{_bindir}/pipewire-pulse +%{_userunitdir}/pipewire-pulse.* +%{_datadir}/pipewire/pipewire-pulse.conf +%dir %{_datadir}/pipewire/pipewire-pulse.conf.d/ +%{_datadir}/pipewire/pipewire-pulse.conf.avail/20-upmix.conf +%{_datadir}/glib-2.0/schemas/org.freedesktop.pulseaudio.gschema.xml +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-protocol-pulse.so +%{_mandir}/man1/pipewire-pulse.1* +%{_mandir}/man5/pipewire-pulse.conf.5.gz +%{_mandir}/man7/pipewire-pulse-module-alsa-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-alsa-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-always-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-combine-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-device-manager.7.gz +%{_mandir}/man7/pipewire-pulse-module-device-restore.7.gz +%{_mandir}/man7/pipewire-pulse-module-echo-cancel.7.gz +%{_mandir}/man7/pipewire-pulse-module-gsettings.7.gz +%{_mandir}/man7/pipewire-pulse-module-jackdbus-detect.7.gz +%{_mandir}/man7/pipewire-pulse-module-ladspa-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-ladspa-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-loopback.7.gz +%{_mandir}/man7/pipewire-pulse-module-native-protocol-tcp.7.gz +%{_mandir}/man7/pipewire-pulse-module-null-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-pipe-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-pipe-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-raop-discover.7.gz +%{_mandir}/man7/pipewire-pulse-module-remap-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-remap-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-roc-sink-input.7.gz +%{_mandir}/man7/pipewire-pulse-module-roc-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-roc-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-rtp-recv.7.gz +%{_mandir}/man7/pipewire-pulse-module-rtp-send.7.gz +%{_mandir}/man7/pipewire-pulse-module-simple-protocol-tcp.7.gz +%{_mandir}/man7/pipewire-pulse-module-stream-restore.7.gz +%{_mandir}/man7/pipewire-pulse-module-switch-on-connect.7.gz +%{_mandir}/man7/pipewire-pulse-module-tunnel-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-tunnel-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-virtual-sink.7.gz +%{_mandir}/man7/pipewire-pulse-module-virtual-source.7.gz +%{_mandir}/man7/pipewire-pulse-module-x11-bell.7.gz +%{_mandir}/man7/pipewire-pulse-module-zeroconf-discover.7.gz +%{_mandir}/man7/pipewire-pulse-module-zeroconf-publish.7.gz +%{_mandir}/man7/pipewire-pulse-modules.7.gz +%endif + +%if %{with v4l2} +%files v4l2 +%{_bindir}/pw-v4l2 +%{_libdir}/pipewire-%{apiversion}/v4l2/libpw-v4l2.so +%{_mandir}/man1/pw-v4l2.1* +%endif + +%files module-x11 +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-x11-bell.so + +%if %{with ffado} +%files module-ffado +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-ffado-driver.so +%endif + +%if %{with roc} +%files module-roc +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-roc-sink.so +%{_libdir}/pipewire-%{apiversion}/libpipewire-module-roc-source.so +%endif + +%if %{with libmysofa} +%files module-filter-chain-sofa +%{_libdir}/spa-%{spaversion}/filter-graph/libspa-filter-graph-plugin-sofa.so +%endif + +%if %{with lv2} +%files module-filter-chain-lv2 +%{_libdir}/spa-%{spaversion}/filter-graph/libspa-filter-graph-plugin-lv2.so +%endif + +%files config-rates +%{_datadir}/pipewire/pipewire.conf.d/10-rates.conf + +%files config-upmix +%{_datadir}/pipewire/pipewire.conf.d/20-upmix.conf +%{_datadir}/pipewire/client.conf.d/20-upmix.conf +%if %{with pulse} +%{_datadir}/pipewire/pipewire-pulse.conf.d/20-upmix.conf +%endif + +%files config-raop +%{_datadir}/pipewire/pipewire.conf.d/50-raop.conf + +%changelog +* Fri May 15 2026 Wim Taymans - 1.4.11-1 +- Rebase to 1.4.11 +- Add fixes for CVE-2026-5674 + Resolves: RHEL-164826 + +* Fri Nov 21 2025 Wim Taymans - 1.4.9-1 +- Rebase to 1.4.9 + Resolves: RHEL-129575 + +* Mon Jun 30 2025 Wim Taymans - 1.4-6-1 +- Update version to 1.4.6 + Resolves: DESKTOP-1857 + +* Thu Jan 23 2025 Wim Taymans - 1.2.7-1 +- Update version to 1.2.7 +- Resolves: RHEL-76017 + +* Fri Nov 08 2024 Wim Taymans - 1.2.6-3 +- Enable libcamera support in RHEL-10 +- Resolves: RHEL-64753 + +* Tue Oct 29 2024 Troy Dawson - 1.2.6-2 +- Bump release for October 2024 mass rebuild: + Resolves: RHEL-64018 + +* Thu Oct 24 2024 Wim Taymans - 1.2.6-1 +- Update version to 1.2.6 + +* Thu Aug 22 2024 Wim Taymans - 1.2.3-1 +- Update version to 1.2.3 + +* Sun Aug 04 2024 Yaakov Selkowitz - 1.2.1-3 +- pipewire-jack-libs Requires pipewire-jack on RHEL + +* Fri Jul 19 2024 Fedora Release Engineering - 1.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri Jul 12 2024 Wim Taymans - 1.2.1-1 +- Update version to 1.2.1 + +* Mon Jul 1 2024 Wim Taymans - 1.2.0-3 +- Add patch for Ardour export regresssion. + +* Mon Jul 1 2024 Wim Taymans - 1.2.0-2 +- Add patch for KODI regresssion. + +* Thu Jun 27 2024 Wim Taymans - 1.2.0-1 +- Update version to 1.2.0 + +* Tue Jun 18 2024 Wim Taymans - 1.1.83-1 +- Update version to 1.1.83 + +* Fri May 24 2024 Wim Taymans - 1.1.82-1 +- Update version to 1.1.82 + +* Thu May 23 2024 Peter Robinson - 1.1.81-2 +- Rebuild for libcamera 0.3 + +* Thu May 16 2024 Wim Taymans - 1.1.81-1 +- Update version to 1.1.81 + +* Thu May 09 2024 Wim Taymans - 1.0.6-1 +- Update version to 1.0.6 + +* Tue Apr 23 2024 Wim Taymans - 1.0.5-2 +- Enable ROC again + +* Mon Apr 15 2024 Wim Taymans - 1.0.5-1 +- Update version to 1.0.5 + +* Wed Mar 13 2024 Wim Taymans - 1.0.4-2 +- Configure server, client and rlimit priorities to be the same as JACK. + +* Wed Mar 13 2024 Wim Taymans - 1.0.4-1 +- Update version to 1.0.4 + +* Tue Feb 13 2024 Yaakov Selkowitz - 1.0.3-2 +- Use webrtc-audio-processing-1 on F40 and RHEL 10 + +* Fri Feb 02 2024 Wim Taymans - 1.0.3-1 +- Update version to 1.0.3 + +* Wed Jan 31 2024 Wim Taymans - 1.0.2-1 +- Update version to 1.0.2 + +* Thu Jan 25 2024 Fedora Release Engineering - 1.0.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sun Jan 21 2024 Fedora Release Engineering - 1.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jan 11 2024 Wim Taymans - 1.0.1-1 +- Update version to 1.0.1 +- Add patch to support libcamera 0.2 + +* Thu Dec 14 2023 Wim Taymans - 1.0.0-2 +- Add patch to avoid crash in deviceprovider. + +* Sun Nov 26 2023 Wim Taymans - 1.0.0-1 +- Update version to 1.0.0 +- Disable ROC until updated in Fedora. + +* Thu Nov 16 2023 Wim Taymans - 0.3.85-1 +- Update version to 0.3.85 + +* Wed Nov 15 2023 Wim Taymans - 0.3.84-5 +- Disable libcamera in RHEL 10 + +* Tue Nov 14 2023 Peter Robinson - 0.3.84-4 +- Enable support for the lc3 bluetooth codec + +* Thu Nov 09 2023 Hector Martin - 0.3.84-3 +- Create and own /usr/share/pipewire/pipewire-pulse.conf.d + +* Mon Nov 06 2023 Hector Martin - 0.3.84-2 +- Create and own /usr/share/pipewire/pipewire.conf.d + +* Thu Nov 02 2023 Wim Taymans - 0.3.84-1 +- Update version to 0.3.84 + +* Mon Oct 23 2023 Wim Taymans - 0.3.83-2 +- Apply patches to fix openal delay and echo-cancel distortion + +* Thu Oct 19 2023 Wim Taymans - 0.3.83-1 +- Update version to 0.3.83 + +* Mon Oct 16 2023 Wim Taymans - 0.3.82-2 +- Add patch for device detection for asahi linux. +- Add patch to avoid crash in ALSA. + +* Fri Oct 13 2023 Wim Taymans - 0.3.82-1 +- Update version to 0.3.82 + +* Fri Oct 6 2023 Wim Taymans - 0.3.81-1 +- Update version to 0.3.81 + +* Thu Sep 14 2023 Wim Taymans - 0.3.80-1 +- Update version to 0.3.80 +- Revert webrtc echo-cancel updates until fedora has newer version. + +* Tue Aug 29 2023 Wim Taymans - 0.3.79-1 +- Update version to 0.3.79 + +* Tue Aug 22 2023 Wim Taymans - 0.3.78-1 +- Update version to 0.3.78 + +* Tue Aug 08 2023 Wim Taymans - 0.3.77-3 +- Add patch to avoid duplicate sinks and sources. + +* Mon Aug 07 2023 Sandro Bonazzola - 0.3.77-2 +- Explicitly require pipewire-jack-audio-connection-kit-libs for pipewire-plugin-jack + +* Fri Aug 04 2023 Wim Taymans - 0.3.77-1 +- Update version to 0.3.77 + +* Sun Jul 30 2023 Javier Martinez Canillas 0.3.76-2 +- Rebuild for libcamera 0.1.0 bump + +* Fri Jul 28 2023 Wim Taymans - 0.3.76-1 +- Update version to 0.3.76 + +* Fri Jul 21 2023 Wim Taymans - 0.3.75-1 +- Update version to 0.3.75 + +* Fri Jul 21 2023 Fedora Release Engineering - 0.3.74-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jul 12 2023 Wim Taymans - 0.3.74-1 +- Update version to 0.3.74 + +* Thu Jul 06 2023 Wim Taymans - 0.3.73-1 +- Update version to 0.3.73 +- Fixes rhbz#2156003 Split out lv2 and sofa filter-chain packages. +- Split out vulkan plugin and roc module + +* Thu Jun 29 2023 Wim Taymans - 0.3.72-2 +- Move the ffado driver to module-ffado + Fixes rhbz#2218481 + +* Mon Jun 26 2023 Wim Taymans - 0.3.72-1 +- Update version to 0.3.72 +- The jack libraries and ld.so override were split so that jack can + be installed together with the pipewire-jack libraries and pw-jack. + +* Thu Jun 15 2023 Yaakov Selkowitz - 0.3.71-4 +- Disable libmysofa, lv2, roc in RHEL builds + +* Tue May 23 2023 Yaakov Selkowitz - 0.3.71-3 +- Move JACK modules to plugin-jack subpackage + +* Thu May 18 2023 Wim Taymans - 0.3.71-2 +- Add patch to fix JACK buffersize updates + +* Wed May 17 2023 Wim Taymans - 0.3.71-1 +- Update version to 0.3.71 + +* Thu Apr 20 2023 Wim Taymans - 0.3.70-1 +- Update version to 0.3.70 + +* Tue Apr 18 2023 Wim Taymans - 0.3.69-2 +- Add 3 useful patches. + +* Thu Apr 13 2023 Wim Taymans - 0.3.69-1 +- Update version to 0.3.69 + +* Tue Apr 11 2023 Wim Taymans - 0.3.68-2 +- Add 2 patches for some critical bugs. + +* Thu Apr 6 2023 Wim Taymans - 0.3.68-1 +- Update version to 0.3.68 +- Enable gstreamer-device-provider (rhbz#2183691) + +* Thu Mar 9 2023 Wim Taymans - 0.3.67-1 +- Update version to 0.3.67 + +* Thu Feb 16 2023 Wim Taymans - 0.3.66-1 +- Update version to 0.3.66 + +* Sat Jan 28 2023 Stefan Bluhm - 0.3.65-3 +- Added missing build dependency + +* Thu Jan 26 2023 Wim Taymans - 0.3.65-2 +- Add NEWS file (rhbz#2032237) + +* Thu Jan 26 2023 Wim Taymans - 0.3.65-1 +- Update version to 0.3.65 + +* Thu Jan 19 2023 Wim Taymans - 0.3.64-3 +- Add patch to avoid DSP mixing issues with AVX in filter-chain. +- Add patch to revert API breakage with deprecated symbols. +- Add patch to fix scaling overflow that could cause stuttering. + +* Tue Jan 17 2023 Wim Taymans - 0.3.64-2 +- Re-enabled roc-toolkit support. + +* Thu Jan 12 2023 Wim Taymans - 0.3.64-1 +- Update version to 0.3.64 +- Disable ROC again until 0.2 support is merged in fedora. + +* Sun Jan 01 2023 Mamoru TASAKA - 0.3.63-2 +- Rebuild for new libcamera again + +* Thu Dec 15 2022 Wim Taymans - 0.3.63-1 +- Update version to 0.3.63 + +* Tue Dec 13 2022 Wim Taymans - 0.3.62-3 +- Add patch to fix distorted sound on AVX2 in some cases. + +* Mon Dec 12 2022 Wim Taymans - 0.3.62-2 +- Package X11 bell support separately + Fixes rhbz#2152385 + +* Fri Dec 09 2022 Wim Taymans - 0.3.62-1 +- Update version to 0.3.62 + +* Wed Dec 07 2022 Mamoru TASAKA - 0.3.61-2 +- Rebuild for new libcamera + +* Thu Nov 24 2022 Wim Taymans - 0.3.61-1 +- Update version to 0.3.61 + +* Thu Nov 17 2022 Wim Taymans - 0.3.60-5 +- Add patch to fix sound in qemu. + +* Tue Nov 15 2022 Wim Taymans - 0.3.60-4 +- Add patch to avoid crashes when switching profiles + +* Thu Nov 10 2022 Wim Taymans - 0.3.60-3 +- Add patch to make Telegram playback work again + +* Thu Nov 10 2022 Neal Gompa - 0.3.60-2 +- Restore libusb support + +* Thu Nov 10 2022 Wim Taymans - 0.3.60-1 +- Update version to 0.3.60 + +* Mon Oct 24 2022 Jaroslav Škarvada - 0.3.59-3 +- Enabled roc-toolkit support + Resolves: rhbz#2041189 + +* Fri Oct 21 2022 Wim Taymans - 0.3.59-2 +- Add a patch to fix midi processing in some cases. +- Add a patch to fix crash when exiting some JACK apps such as + Ardour7. +- Add a patch to fix a crash when switching bluetooth profiles. +- Add a patch to fix bluetooth source switching between drivers. + +* Fri Sep 30 2022 Wim Taymans - 0.3.59-1 +- Update version to 0.3.59 + +* Thu Sep 22 2022 Wim Taymans - 0.3.58-3 +- Add patch to fix ffmpeg capture and other stutterings. + +* Mon Sep 19 2022 Wim Taymans - 0.3.58-2 +- Add patch to fix stuttering in Teamspeak. + +* Thu Sep 15 2022 Wim Taymans - 0.3.58-1 +- Update version to 0.3.58 + +* Fri Sep 2 2022 Wim Taymans - 0.3.57-1 +- Update version to 0.3.57 +- Add systemd BuildRequires +- Fix lv2 include path + +* Fri Jul 22 2022 Fedora Release Engineering - 0.3.56-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Tue Jul 19 2022 Wim Taymans - 0.3.56-1 +- Update version to 0.3.56 + +* Tue Jul 12 2022 Wim Taymans - 0.3.55-2 +- Add patch to avoid crash in JACK. + +* Tue Jul 12 2022 Wim Taymans - 0.3.55-1 +- Update version to 0.3.55 + +* Thu Jul 07 2022 Wim Taymans - 0.3.54-1 +- Update version to 0.3.54 + +* Mon Jul 4 2022 Wim Taymans - 0.3.53-4 +- Add channel remap patch. + +* Mon Jul 4 2022 Wim Taymans - 0.3.53-3 +- Add patch to fix speaker-test. +- Add patch to fix noise in resampler. + +* Fri Jul 1 2022 Wim Taymans - 0.3.53-2 +- Add patch to avoid crash in audioconvert (mpv) + +* Thu Jun 30 2022 Wim Taymans - 0.3.53-1 +- Update version to 0.3.53 + +* Thu Jun 23 2022 Wim Taymans - 0.3.52-4 +- Add patch to remove 44.1KHz from samplerates +- See rhbz#2096193 + +* Wed Jun 15 2022 Wim Taymans - 0.3.52-3 +- Add patch to fix stuttering in TeamSpeak. +- Inc baserel to 3, previous build was accidentally done with 2 + instead of 1. + +* Thu Jun 09 2022 Wim Taymans - 0.3.52-1 +- Update version to 0.3.52 +- Disable LC3plus codec. + +* Thu May 19 2022 Wim Taymans - 0.3.51-2 +- Add pulseaudio-utils as Requires for pipewire-pulseaudio + +* Thu Apr 28 2022 Wim Taymans - 0.3.51-1 +- Update version to 0.3.51 + +* Wed Apr 13 2022 Wim Taymans - 0.3.50-1 +- Update version to 0.3.50 + +* Tue Mar 29 2022 Wim Taymans - 0.3.49-1 +- Update version to 0.3.49 +- libusb was removed from f37 + +* Thu Mar 3 2022 Wim Taymans - 0.3.48-1 +- Update version to 0.3.48 + +* Fri Feb 18 2022 Wim Taymans - 0.3.47-1 +- Update version to 0.3.47 + +* Thu Feb 17 2022 Wim Taymans - 0.3.46-1 +- Update version to 0.3.46 + +* Mon Feb 7 2022 Wim Taymans - 0.3.45-2 +- Add patch for kernels with CONFIG_SND_VERBOSE_PROCFS=n +- Add patch to make Musescore work again + +* Thu Feb 3 2022 Wim Taymans - 0.3.45-1 +- Update version to 0.3.45 + +* Thu Jan 27 2022 Wim Taymans - 0.3.44-1 +- Update version to 0.3.44 + +* Tue Jan 25 2022 Wim Taymans - 0.3.43-5 +- Add more patches to avoid segfaults in bluez5 + +* Fri Jan 21 2022 Fedora Release Engineering - 0.3.43-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Tue Jan 18 2022 Wim Taymans - 0.3.43-3 +- Add patch to avoid segfault in bluez5 (rhbz#2041481) + +* Mon Jan 17 2022 Wim Taymans - 0.3.43-2 +- Add patch to avoid segfault in bluez5 (rhbz#2041481) + +* Wed Jan 5 2022 Wim Taymans - 0.3.43-1 +- Update version to 0.3.43 + +* Thu Dec 16 2021 Wim Taymans - 0.3.42-1 +- Update version to 0.3.42 + +* Mon Dec 13 2021 Wim Taymans - 0.3.41-1 +- Update version to 0.3.41 + +* Thu Nov 11 2021 Wim Taymans - 0.3.40-1 +- Update version to 0.3.40 and media-session 0.4.1 +- Enable tests for s390x again + +* Tue Nov 09 2021 Peter Hutterer - 0.3.39-3 +- Don't build media-session on F35, it's a separate package now, see #2016247 + +* Wed Oct 27 2021 Peter Hutterer - 0.3.39-2 +- Don't build media-session on F36, it's a separate package now, see #2016247 +- Remove versioned systemd dependency, 184 was released in 2012 + +* Thu Oct 21 2021 Wim Taymans - 0.3.39-1 +- Update version to 0.3.39 + +* Wed Oct 13 2021 Neal Gompa - 0.3.38-2 +- Fix libcamera bcond to work properly in RHEL10+ and F36+ + +* Thu Sep 30 2021 Wim Taymans - 0.3.38-1 +- Update version to 0.3.38 + +* Wed Sep 29 2021 Wim Taymans - 0.3.37-3 +- Rebuild for new libcamera + +* Thu Sep 23 2021 Javier Martinez Canillas - 0.3.37-2 +- Enable libcamera SPA plugin + +* Thu Sep 23 2021 Wim Taymans - 0.3.37-1 +- Update version to 0.3.37 + +* Thu Sep 16 2021 Wim Taymans - 0.3.36-2 +- Update version to 0.3.36 + +* Thu Sep 16 2021 Wim Taymans - 0.3.36-1 +- Update to 0.3.36 +- Do systemd post install of pipewire-media-session.service + +* Thu Sep 09 2021 Wim Taymans - 0.3.35-2 +- Add patch to fix passthrough check. + +* Thu Sep 09 2021 Wim Taymans - 0.3.35-1 +- Update to 0.3.35 + +* Mon Aug 30 2021 Neal Gompa - 0.3.34-2 +- Add preference for WirePlumber for session manager (#1989959) + +* Thu Aug 26 2021 Wim Taymans - 0.3.34-1 +- Update to 0.3.34 + +* Wed Aug 11 2021 Wim Taymans - 0.3.33-3 +- Add more upstream patches. + +* Tue Aug 10 2021 Wim Taymans - 0.3.33-2 +- Add patch to fix default device persistence. + +* Thu Aug 5 2021 Wim Taymans - 0.3.33-1 +- Update to 0.3.33 + +* Thu Aug 5 2021 Wim Taymans - 0.3.32-4 +- Add media-session Conflicts: with older pipewire versions, they can't be + installed at the same time because they both contain the media-session binary. + +* Fri Jul 23 2021 Fedora Release Engineering - 0.3.32-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Wed Jul 21 2021 Neal Gompa - 0.3.32-2 +- Add conditional for media-session subpackage + +* Tue Jul 20 2021 Wim Taymans - 0.3.32-1 +- Update to 0.3.32 + +* Thu Jul 15 2021 Peter Hutterer - 0.3.31-4 +- Enable media-session.service, requires fedora-release-35-0.10 to enable the + service by default (#1976006). + +* Mon Jul 05 2021 Neal Gompa - 0.3.31-3 +- Add "Conflicts: pipewire-session-manager" to pipewire-media-session + to enforce one implementation of the session manager at a time + +* Mon Jun 28 2021 Wim Taymans - 0.3.31-2 +- Fix session manager path + +* Mon Jun 28 2021 Wim Taymans - 0.3.31-1 +- Update to 0.3.31 + +* Fri Jun 25 2021 Peter Hutterer - 0.3.30-5 +- Split media-session into a subpackage and Require it through a virtual + Provides from the main pipewire package + +* Tue Jun 15 2021 Łukasz Patron - 0.3.30-4 +- Add patch for setting node description for module-combine-sink + +* Tue Jun 15 2021 Wim Taymans - 0.3.30-3 +- Rebuild for Gstreamer update + +* Thu Jun 10 2021 Wim Taymans - 0.3.30-2 +- Add ALSA UCM 1.2.5 compatibility fixes + +* Wed Jun 09 2021 Wim Taymans - 0.3.30-1 +- Update to 0.3.30 + +* Fri Jun 04 2021 Wim Taymans - 0.3.29-2 +- Add some important patches. + +* Thu Jun 03 2021 Wim Taymans - 0.3.29-1 +- Update to 0.3.29 + +* Mon May 17 2021 Wim Taymans - 0.3.28-1 +- Update to 0.3.28 + +* Mon May 10 2021 Wim Taymans - 0.3.27-2 +- Add patch to fix volume issues. + +* Thu May 06 2021 Wim Taymans - 0.3.27-1 +- Update to 0.3.27 + +* Thu Apr 29 2021 Wim Taymans - 0.3.26-4 +- Add some more important upstream patches. + +* Mon Apr 26 2021 Wim Taymans - 0.3.26-3 +- Add some important upstream patches. + +* Sat Apr 24 2021 Neal Gompa - 0.3.26-2 +- Disable JACK server integration on RHEL + +* Thu Apr 22 2021 Wim Taymans - 0.3.26-1 +- Update to 0.3.26 + +* Tue Apr 20 2021 Neal Gompa - 0.3.25-2 +- Add jack-devel subpackage, enable JACK support on RHEL 9+ (#1945951) + +* Tue Apr 06 2021 Wim Taymans - 0.3.25-1 +- Update to 0.3.25 + +* Thu Mar 25 2021 Wim Taymans - 0.3.24-4 +- Apply some critical upstream patches + +* Thu Mar 25 2021 Kalev Lember - 0.3.24-3 +- Fix RHEL build + +* Thu Mar 25 2021 Kalev Lember - 0.3.24-2 +- Move individual config files to the subpackages that make use of them + +* Thu Mar 18 2021 Wim Taymans - 0.3.24-1 +- Update to 0.3.24 + +* Tue Mar 09 2021 Wim Taymans - 0.3.23-2 +- Add patch to enable UCM Microphones + +* Thu Mar 04 2021 Wim Taymans - 0.3.23-1 +- Update to 0.3.23 + +* Wed Feb 24 2021 Wim Taymans - 0.3.22-7 +- Add patch to sample destroy use after free + +* Wed Feb 24 2021 Wim Taymans - 0.3.22-6 +- Add patch for jack names + +* Mon Feb 22 2021 Wim Taymans - 0.3.22-5 +- Add some critical patches + +* Fri Feb 19 2021 Neal Gompa - 0.3.22-4 +- Replace more PulseAudio modules on upgrade in F34+ + +* Fri Feb 19 2021 Neal Gompa - 0.3.22-3 +- Replace ALSA plugins and PulseAudio modules on upgrade in F34+ + +* Fri Feb 19 2021 Neal Gompa - 0.3.22-2 +- Replace JACK and PulseAudio on upgrade in F34+ + Reference: https://fedoraproject.org/wiki/Changes/DefaultPipeWire + +* Thu Feb 18 2021 Wim Taymans - 0.3.22-1 +- Update to 0.3.22 +- disable sdl2 examples + +* Thu Feb 04 2021 Wim Taymans - 0.3.21-2 +- Add some upstream patches +- Fixes rhbz#1925138 + +* Wed Feb 03 2021 Wim Taymans - 0.3.21-1 +- Update to 0.3.21 + +* Wed Jan 27 2021 Fedora Release Engineering - 0.3.20-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Wed Jan 20 2021 Wim Taymans - 0.3.20-1 +- Update to 0.3.20 +- Fix baseversion +- Add gettext dependency + +* Tue Jan 12 2021 Neal Gompa - 0.3.19-4 +- Rework conditional build to fix ELN builds + +* Sat Jan 9 2021 Evan Anderson - 0.3.19-3 +- Add LDAC and AAC dependency to enhance Bluetooth support + +* Thu Jan 7 2021 Neal Gompa - 0.3.19-2 +- Obsolete useless libjack subpackage with jack-audio-connection-kit subpackage + +* Tue Jan 5 2021 Wim Taymans - 0.3.19-1 +- Update to 0.3.19 +- Add ncurses-devel BR + +* Tue Dec 15 2020 Wim Taymans - 0.3.18-1 +- Update to 0.3.18 + +* Fri Nov 27 2020 Wim Taymans - 0.3.17-2 +- Add some more Provides: for pulseaudio + +* Thu Nov 26 2020 Wim Taymans - 0.3.17-1 +- Update to 0.3.17 + +* Tue Nov 24 2020 Neal Gompa - 0.3.16-4 +- Add 'pulseaudio-daemon' Provides + Conflicts to pipewire-pulseaudio +- Remove useless ldconfig macros that expand to nothing + +* Fri Nov 20 2020 Wim Taymans - 0.3.16-3 +- Fix Requires for pipewire-pulseaudio +- Fixes rhbz#1899945 + +* Fri Nov 20 2020 Wim Taymans - 0.3.16-2 +- Add patch to fix crash in kwin, Fixes rhbz#1899826 + +* Thu Nov 19 2020 Wim Taymans - 0.3.16-1 +- Update to 0.3.16 + +* Wed Nov 4 2020 Wim Taymans - 0.3.15-2 +- Add patch to fix screen sharing for old clients + +* Wed Nov 4 2020 Wim Taymans - 0.3.15-1 +- Update to 0.3.15 + +* Sun Nov 1 2020 Wim Taymans - 0.3.14-2 +- Add some pulse server patches + +* Fri Oct 30 2020 Wim Taymans - 0.3.14-1 +- Update to 0.3.14 + +* Sun Oct 18 2020 Neal Gompa - 0.3.13-6 +- Fix jack and pulseaudio subpackages to generate dependencies properly + +* Tue Oct 13 2020 Wim Taymans - 0.3.13-5 +- Disable device provider for now +- Fixes rhbz#1884260 + +* Thu Oct 1 2020 Wim Taymans - 0.3.13-4 +- Add patches for some crasher bugs +- Fixes rhbz#1884177 + +* Tue Sep 29 2020 Wim Taymans - 0.3.13-3 +- Add patch to improve pulse compatibility + +* Mon Sep 28 2020 Jeff Law - 0.3.13-2 +- Re-enable LTO as upstream GCC target/96939 has been fixed + +* Mon Sep 28 2020 Wim Taymans - 0.3.13-1 +- Update to 0.3.13 + +* Fri Sep 18 2020 Wim Taymans - 0.3.12-1 +- Update to 0.3.12 + +* Fri Sep 11 2020 Wim Taymans - 0.3.11-2 +- Add some patches to improve pulse compatibility + +* Thu Sep 10 2020 Wim Taymans - 0.3.11-1 +- Update to 0.3.11 + +* Mon Aug 17 2020 Wim Taymans - 0.3.10-1 +- Update to 0.3.10 + +* Tue Aug 04 2020 Wim Taymans - 0.3.9-1 +- Update to 0.3.9 + +* Tue Aug 04 2020 Wim Taymans - 0.3.8-3 +- Add patch to avoid segfault when iterating ports. +- Fixes #1865827 + +* Wed Jul 29 2020 Wim Taymans - 0.3.8-2 +- Add patch for fix chrome audio hicups +- Add patch for infinite loop in device add/remove +- Disable LTO on armv7 + +* Tue Jul 28 2020 Wim Taymans - 0.3.8-1 +- Update to 0.3.8 + +* Tue Jul 21 2020 Wim Taymans - 0.3.7-2 +- Add patch to avoid crash when clearing metadata + +* Tue Jul 21 2020 Wim Taymans - 0.3.7-1 +- Update to 0.3.7 + +* Wed Jun 10 2020 Wim Taymans - 0.3.6-2 +- Use systemd presets to enable pipewire.socket +- Remove duplicate hardened_build flags +- Add meson build again +- Fix -gstreamer subpackage Requires: + +* Wed Jun 10 2020 Wim Taymans - 0.3.6-1 +- Update to 0.3.6 +- Add new man pages +- Only build vulkan/pulse/jack in Fedora. + +* Mon May 11 2020 Wim Taymans - 0.3.5-1 +- Update to 0.3.5 + +* Fri May 01 2020 Adam Williamson - 0.3.4-2 +- Suppress library provides from pipewire-lib{pulse,jack} + +* Thu Apr 30 2020 Wim Taymans - 0.3.4-1 +- Update to 0.3.4 +- Add 2 more packages that replace libjack and libpulse + +* Tue Mar 31 2020 Wim Taymans - 0.3.2-3 +- Add patch to unsubscribe unused sequencer ports +- Change config to only disable bluez5 handling by default. + +* Mon Mar 30 2020 Wim Taymans - 0.3.2-2 +- Add config to disable alsa and bluez5 handling by default. + +* Thu Mar 26 2020 Wim Taymans - 0.3.2-1 +- Update to 0.3.2 + +* Fri Mar 06 2020 Wim Taymans - 0.3.1-1 +- Update to 0.3.1 + +* Thu Feb 20 2020 Wim Taymans - 0.3.0-1 +- Update to 0.3.0 +- Add libpulse-simple-pw.so + +* Wed Feb 19 2020 Wim Taymans - 0.2.97-1 +- Update to 0.2.97 +- Change download link + +* Tue Feb 18 2020 Kalev Lember - 0.2.96-2 +- Rename subpackages so that libjack-pw is in -libjack + and libpulse-pw is in -libpulse +- Split libspa-jack.so out to -plugin-jack subpackage +- Avoid hard-requiring the daemon from any of the library subpackages + +* Tue Feb 11 2020 Wim Taymans - 0.2.96-1 +- Update to 0.2.96 +- Split -gstreamer package +- Enable aarch64 tests again + +* Fri Feb 07 2020 Wim Taymans - 0.2.95-1 +- Update to 0.2.95 +- Disable test on aarch64 for now + +* Wed Feb 05 2020 Wim Taymans - 0.2.94-1 +- Update to 0.2.94 +- Move pipewire modules to -libs +- Add pw-profiler +- Add libsndfile-devel as a BR + +* Thu Jan 30 2020 Fedora Release Engineering - 0.2.92-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Jan 28 2020 Wim Taymans - 0.2.93-1 +- Update to 0.2.93 + +* Wed Jan 15 2020 Wim Taymans - 0.2.92-1 +- Update to 0.2.92 + +* Wed Jan 15 2020 Wim Taymans - 0.2.91-1 +- Update to 0.2.91 +- Add some more BR +- Fix some unit tests + +* Mon Jan 13 2020 Wim Taymans - 0.2.90-1 +- Update to 0.2.90 + +* Thu Nov 28 2019 Kalev Lember - 0.2.7-2 +- Move spa plugins to -libs subpackage + +* Thu Sep 26 2019 Wim Taymans - 0.2.7-1 +- Update to 0.2.7 + +* Mon Sep 16 2019 Kalev Lember - 0.2.6-5 +- Don't require the daemon package for -devel subpackage +- Move pipewire.conf man page to the daemon package + +* Fri Jul 26 2019 Fedora Release Engineering - 0.2.6-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Wed Jun 19 2019 Wim Taymans - 0.2.6-3 +- Add patch to reuse fd in pipewiresrc +- Add patch for device provider +- Add patch to disable extra security checks until portal is fixed. + +* Tue Jun 04 2019 Kalev Lember - 0.2.6-2 +- Split libpipewire and the gstreamer plugin out to -libs subpackage + +* Wed May 22 2019 Wim Taymans - 0.2.6-1 +- Update to 0.2.6 +- Add patch for alsa-lib 1.1.9 include path + +* Sat Feb 02 2019 Fedora Release Engineering - 0.2.5-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Fri Jan 04 2019 Wim Taymans - 0.2.5-2 +- Add patch to avoid invalid conversion error with C++ compilers + +* Thu Nov 22 2018 Wim Taymans - 0.2.5-1 +- Update to 0.2.5 + +* Thu Nov 22 2018 Wim Taymans - 0.2.4-1 +- Update to 0.2.4 + +* Thu Oct 18 2018 Wim Taymans - 0.2.3-2 +- Add systemd socket activation + +* Thu Aug 30 2018 Wim Taymans - 0.2.3-1 +- Update to 0.2.3 + +* Tue Jul 31 2018 Wim Taymans - 0.2.2-1 +- Update to 0.2.2 + +* Fri Jul 20 2018 Wim Taymans - 0.2.1-1 +- Update to 0.2.1 + +* Tue Jul 17 2018 Wim Taymans - 0.2.0-1 +- Update to 0.2.0 + +* Fri Jul 13 2018 Fedora Release Engineering - 0.1.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Feb 27 2018 Wim Taymans - 0.1.9-1 +- Update to 0.1.9 + +* Fri Feb 09 2018 Fedora Release Engineering - 0.1.8-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Sat Feb 03 2018 Igor Gnatenko - 0.1.8-2 +- Switch to %%ldconfig_scriptlets + +* Tue Jan 23 2018 Wim Taymans - 0.1.8-1 +- Update to 0.1.8 + +* Fri Nov 24 2017 Wim Taymans - 0.1.7-1 +- Update to 0.1.7 +- Add to build when memfd_create is already defined + +* Fri Nov 03 2017 Wim Taymans - 0.1.6-1 +- Update to 0.1.6 + +* Tue Sep 19 2017 Wim Taymans - 0.1.5-2 +- Add patch to avoid segfault when probing + +* Tue Sep 19 2017 Wim Taymans - 0.1.5-1 +- Update to 0.1.5 + +* Thu Sep 14 2017 Kalev Lember - 0.1.4-3 +- Rebuilt for GNOME 3.26.0 megaupdate + +* Fri Sep 08 2017 Wim Taymans - 0.1.4-2 +- Install SPA hooks + +* Wed Aug 23 2017 Wim Taymans - 0.1.4-1 +- Update to 0.1.4 + +* Wed Aug 09 2017 Wim Taymans - 0.1.3-1 +- Update to 0.1.3 + +* Tue Jul 04 2017 Wim Taymans - 0.1.2-1 +- Update to 0.1.2 +- Added more build requirements +- Make separate doc package + +* Mon Jun 26 2017 Wim Taymans - 0.1.1-1 +- Update to 0.1.1 +- Add dbus-1 to BuildRequires +- change libs-devel to -devel + +* Wed Sep 9 2015 Wim Taymans - 0.1.0-2 +- Fix BuildRequires to use pkgconfig, add all dependencies found in configure.ac +- Add user and groups if needed +- Add license to %%licence + +* Tue Sep 1 2015 Wim Taymans - 0.1.0-1 +- First version diff --git a/pipewire.sysusers b/pipewire.sysusers new file mode 100644 index 0000000..1e08df1 --- /dev/null +++ b/pipewire.sysusers @@ -0,0 +1,2 @@ +#Type Name ID GECOS Home directory Shell +u pipewire - "PipeWire System Daemon" /run/pipewire - diff --git a/sources b/sources new file mode 100644 index 0000000..fb8d8f2 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (pipewire-1.4.11.tar.gz) = 917d599914dcc535a5aa2478c54de306e620c06e9d1a02220e9681e13e05566fe997eb25b59930d95ea9e9a8dc8fe6da86d41652d707cec0a2ee970b00e18a13