From d614ce6a1b09c4282b8279ceb4a50eb04d4073ea36f44ecc2b75748a8bc0a978 Mon Sep 17 00:00:00 2001 From: Antonio Larrosa Date: Fri, 28 Jan 2022 09:07:29 +0000 Subject: [PATCH 1/3] Accepting request 949617 from home:alarrosa:branches:multimedia:libs - Add patch to reduce the meson requirement so we can build pipewire with Leap 15.3. This will be dropped as soon as Leap 15.4 is released or if it becomes too hard to maintain (whatever happens before): * reduce-meson-dependency.patch OBS-URL: https://build.opensuse.org/request/show/949617 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pipewire?expand=0&rev=43 --- pipewire.changes | 9 ++ pipewire.spec | 11 +- reduce-meson-dependency.patch | 292 ++++++++++++++++++++++++++++++++++ 3 files changed, 311 insertions(+), 1 deletion(-) create mode 100644 reduce-meson-dependency.patch diff --git a/pipewire.changes b/pipewire.changes index 81e60ed..3d0113f 100644 --- a/pipewire.changes +++ b/pipewire.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Thu Jan 27 14:04:28 UTC 2022 - Antonio Larrosa + +- Add patch to reduce the meson requirement so we can build + pipewire with Leap 15.3. This will be dropped as soon as + Leap 15.4 is released or if it becomes too hard to maintain + (whatever happens before): + * reduce-meson-dependency.patch + ------------------------------------------------------------------- Thu Jan 27 10:45:39 UTC 2022 - Alexei Sorokin diff --git a/pipewire.spec b/pipewire.spec index b158c14..128d1e8 100644 --- a/pipewire.spec +++ b/pipewire.spec @@ -61,6 +61,7 @@ Group: Development/Libraries/C and C++ URL: https://pipewire.org/ Source0: %{name}-%{version}.tar.xz Source99: baselibs.conf +Patch0: reduce-meson-dependency.patch BuildRequires: docutils BuildRequires: doxygen BuildRequires: fdupes @@ -70,7 +71,11 @@ BuildRequires: gcc9-c++ %endif BuildRequires: gcc-c++ BuildRequires: graphviz +%if 0%{?sle_version} == 150300 +BuildRequires: meson >= 0.54.0 +%else BuildRequires: meson >= 0.59.0 +%endif BuildRequires: pkgconfig BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(alsa) >= 1.1.7 @@ -320,7 +325,10 @@ This package provides a PulseAudio implementation based on PipeWire %lang_package %prep -%autosetup -p1 +%autosetup -N +%if 0%{?sle_version} == 150300 +%patch0 -p1 +%endif %build %if %{pkg_vcmp gcc < 8} @@ -333,6 +341,7 @@ export CXX=g++-9 -Dgstreamer=enabled \ -Dffmpeg=enabled \ -Dsystemd=enabled \ + -Dsystemd-user-unit-dir=%{_userunitdir} \ -Dgstreamer-device-provider=disabled \ -Droc=disabled \ %if %{with_vulkan} diff --git a/reduce-meson-dependency.patch b/reduce-meson-dependency.patch new file mode 100644 index 0000000..e05465b --- /dev/null +++ b/reduce-meson-dependency.patch @@ -0,0 +1,292 @@ +Index: pipewire-0.3.44/meson.build +=================================================================== +--- pipewire-0.3.44.orig/meson.build ++++ pipewire-0.3.44/meson.build +@@ -1,7 +1,7 @@ + project('pipewire', ['c' ], + version : '0.3.44', + license : [ 'MIT', 'LGPL-2.1-or-later', 'GPL-2.0-only' ], +- meson_version : '>= 0.59.0', ++ meson_version : '>= 0.54.0', + default_options : [ 'warning_level=3', + 'c_std=gnu99', + 'cpp_std=c++17', +@@ -304,8 +304,8 @@ includes_inc = include_directories('incl + pipewire_inc = include_directories('src') + + makedata = configuration_data() +-makedata.set('BUILD_ROOT', meson.project_build_root()) +-makedata.set('SOURCE_ROOT', meson.project_source_root()) ++makedata.set('BUILD_ROOT', meson.build_root()) ++makedata.set('SOURCE_ROOT', meson.source_root()) + makedata.set('VERSION', pipewire_version) + if version_arr.length() == 4 + makedata.set('TAG', 'HEAD') +@@ -509,20 +509,20 @@ endif + setenv = find_program('pw-uninstalled.sh') + run_target('pw-uninstalled', + command : [setenv, +- '-b@0@'.format(meson.project_build_root()), ++ '-b@0@'.format(meson.build_root()), + '-v@0@'.format(pipewire_version)] + ) + + devenv = environment() + +-builddir = meson.project_build_root() +-srcdir = meson.project_source_root() ++builddir = meson.build_root() ++srcdir = meson.source_root() + +-devenv.set('PIPEWIRE_CONFIG_DIR', pipewire_dep.get_variable('confdatadir')) +-devenv.set('PIPEWIRE_MODULE_DIR', pipewire_dep.get_variable('moduledir')) ++devenv.set('PIPEWIRE_CONFIG_DIR', pipewire_dep.get_variable(internal: 'confdatadir')) ++devenv.set('PIPEWIRE_MODULE_DIR', pipewire_dep.get_variable(internal: 'moduledir')) + +-devenv.set('SPA_PLUGIN_DIR', spa_dep.get_variable('plugindir')) +-devenv.set('SPA_DATA_DIR', spa_dep.get_variable('datadir')) ++devenv.set('SPA_PLUGIN_DIR', spa_dep.get_variable(internal: 'plugindir')) ++devenv.set('SPA_DATA_DIR', spa_dep.get_variable(internal: 'datadir')) + + devenv.set('GST_PLUGIN_PATH', builddir / 'src'/ 'gst') + +@@ -534,4 +534,6 @@ devenv.set('LD_LIBRARY_PATH', builddir / + + devenv.set('PW_UNINSTALLED', '1') + +-meson.add_devenv(devenv) ++if meson.version().version_compare('>=0.58.0') ++ meson.add_devenv(devenv) ++endif +Index: pipewire-0.3.44/spa/plugins/audioconvert/meson.build +=================================================================== +--- pipewire-0.3.44.orig/spa/plugins/audioconvert/meson.build ++++ pipewire-0.3.44/spa/plugins/audioconvert/meson.build +@@ -140,7 +140,7 @@ foreach a : test_apps + install : installed_tests_enabled, + install_dir : installed_tests_execdir / 'audioconvert'), + env : [ +- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')), ++ 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')), + ]) + + if installed_tests_enabled +@@ -170,7 +170,7 @@ foreach a : benchmark_apps + install : installed_tests_enabled, + install_dir : installed_tests_execdir / 'audioconvert'), + env : [ +- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')), ++ 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')), + ]) + + if installed_tests_enabled +Index: pipewire-0.3.44/spa/tests/meson.build +=================================================================== +--- pipewire-0.3.44.orig/spa/tests/meson.build ++++ pipewire-0.3.44/spa/tests/meson.build +@@ -5,7 +5,7 @@ find = find_program('find', required: fa + summary({'find (for header testing)': find.found()}, bool_yn: true, section: 'Optional programs') + if find.found() + spa_headers = run_command(find, +- meson.project_source_root() / 'spa' / 'include', ++ meson.source_root() / 'spa' / 'include', + '-name', '*.h', + '-not', '-name', 'type-info.h', + '-type', 'f', +@@ -41,7 +41,7 @@ foreach a : benchmark_apps + install_dir : installed_tests_execdir, + ), + env : [ +- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')), ++ 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')), + ] + ) + +Index: pipewire-0.3.44/src/daemon/meson.build +=================================================================== +--- pipewire-0.3.44.orig/src/daemon/meson.build ++++ pipewire-0.3.44/src/daemon/meson.build +@@ -18,9 +18,9 @@ conf_config.set('pulse_comment', '#') + + conf_config_uninstalled = conf_config + conf_config_uninstalled.set('pipewire_path', +- meson.project_build_root() / 'src' / 'daemon' / 'pipewire') ++ meson.build_root() / 'src' / 'daemon' / 'pipewire') + conf_config_uninstalled.set('pipewire_pulse_path', +- meson.project_build_root() / 'src' / 'daemon' / 'pipewire-pulse') ++ meson.build_root() / 'src' / 'daemon' / 'pipewire-pulse') + conf_config_uninstalled.set('pulse_comment', '') + + build_ms = 'media-session' in get_option('session-managers') +@@ -106,7 +106,7 @@ custom_target('pipewire-uninstalled', + install: false, + input: pipewire_exec, + output: 'pipewire-uninstalled', +- command: [ln, '-fs', meson.project_build_root() + '/@INPUT@', '@OUTPUT@'], ++ command: [ln, '-fs', meson.build_root() + '/@INPUT@', '@OUTPUT@'], + ) + + #desktop_file = i18n.merge_file( +Index: pipewire-0.3.44/src/daemon/systemd/user/meson.build +=================================================================== +--- pipewire-0.3.44.orig/src/daemon/systemd/user/meson.build ++++ pipewire-0.3.44/src/daemon/systemd/user/meson.build +@@ -1,4 +1,4 @@ +-systemd_user_services_dir = systemd.get_variable('systemduserunitdir', pkgconfig_define : [ 'prefix', prefix]) ++#systemd_user_services_dir = systemd.get_variable('systemduserunitdir', pkgconfig_define : [ 'prefix', prefix]) + if get_option('systemd-user-unit-dir') != '' + systemd_user_services_dir = get_option('systemd-user-unit-dir') + endif +Index: pipewire-0.3.44/src/modules/meson.build +=================================================================== +--- pipewire-0.3.44.orig/src/modules/meson.build ++++ pipewire-0.3.44/src/modules/meson.build +@@ -368,9 +368,9 @@ test('pw-test-protocol-native', + install_dir : installed_tests_execdir, + ), + env : [ +- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')), +- 'PIPEWIRE_CONFIG_DIR=@0@'.format(pipewire_dep.get_variable('confdatadir')), +- 'PIPEWIRE_MODULE_DIR=@0@'.format(pipewire_dep.get_variable('moduledir')), ++ 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')), ++ 'PIPEWIRE_CONFIG_DIR=@0@'.format(pipewire_dep.get_variable(internal: 'confdatadir')), ++ 'PIPEWIRE_MODULE_DIR=@0@'.format(pipewire_dep.get_variable(internal: 'moduledir')), + ] + ) + +Index: pipewire-0.3.44/src/tests/meson.build +=================================================================== +--- pipewire-0.3.44.orig/src/tests/meson.build ++++ pipewire-0.3.44/src/tests/meson.build +@@ -13,9 +13,9 @@ foreach a : test_apps + install : installed_tests_enabled, + install_dir : installed_tests_execdir), + env : [ +- 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable('plugindir')), +- 'PIPEWIRE_CONFIG_DIR=@0@'.format(pipewire_dep.get_variable('confdatadir')), +- 'PIPEWIRE_MODULE_DIR=@0@'.format(pipewire_dep.get_variable('moduledir')), ++ 'SPA_PLUGIN_DIR=@0@'.format(spa_dep.get_variable(internal: 'plugindir')), ++ 'PIPEWIRE_CONFIG_DIR=@0@'.format(pipewire_dep.get_variable(internal: 'confdatadir')), ++ 'PIPEWIRE_MODULE_DIR=@0@'.format(pipewire_dep.get_variable(internal: 'moduledir')), + ]) + + if installed_tests_enabled +Index: pipewire-0.3.44/test/meson.build +=================================================================== +--- pipewire-0.3.44.orig/test/meson.build ++++ pipewire-0.3.44/test/meson.build +@@ -14,8 +14,8 @@ pwtest_deps = [ + ] + + pwtest_c_args = [ +- '-DBUILD_ROOT="@0@"'.format(meson.project_build_root()), +- '-DSOURCE_ROOT="@0@"'.format(meson.project_source_root()), ++ '-DBUILD_ROOT="@0@"'.format(meson.build_root()), ++ '-DSOURCE_ROOT="@0@"'.format(meson.source_root()), + ] + + pwtest_inc = [ +Index: pipewire-0.3.44/doc/meson.build +=================================================================== +--- pipewire-0.3.44.orig/doc/meson.build ++++ pipewire-0.3.44/doc/meson.build +@@ -1,8 +1,8 @@ + doxyfile_conf = configuration_data() + doxyfile_conf.set('PACKAGE_NAME', meson.project_name()) + doxyfile_conf.set('PACKAGE_VERSION', meson.project_version()) +-doxyfile_conf.set('top_srcdir', meson.project_source_root()) +-doxyfile_conf.set('top_builddir', meson.project_build_root()) ++doxyfile_conf.set('top_srcdir', meson.source_root()) ++doxyfile_conf.set('top_builddir', meson.build_root()) + + dot_found = find_program('dot', required: false).found() + summary({'dot (used with doxygen)': dot_found}, bool_yn: true, section: 'Optional programs') +@@ -48,35 +48,35 @@ extra_docs = [ + + inputs = [] + foreach extra : extra_docs +- inputs += meson.project_source_root() / 'doc' / extra ++ inputs += meson.source_root() / 'doc' / extra + endforeach + foreach h : pipewire_headers +- inputs += meson.project_source_root() / 'src' / 'pipewire' / h ++ inputs += meson.source_root() / 'src' / 'pipewire' / h + endforeach + foreach h : pipewire_ext_headers +- inputs += meson.project_source_root() / 'src' / 'pipewire' / 'extensions' / h ++ inputs += meson.source_root() / 'src' / 'pipewire' / 'extensions' / h + endforeach + foreach h : pipewire_ext_sm_headers +- inputs += meson.project_source_root() / 'src' / 'pipewire' / 'extensions' / h ++ inputs += meson.source_root() / 'src' / 'pipewire' / 'extensions' / h + endforeach + foreach h : pipewire_sources +- inputs += meson.project_source_root() / 'src' / 'pipewire' / h ++ inputs += meson.source_root() / 'src' / 'pipewire' / h + endforeach + foreach h : module_sources +- inputs += meson.project_source_root() / 'src' / 'modules' / h ++ inputs += meson.source_root() / 'src' / 'modules' / h + endforeach +-inputs += meson.project_source_root() / 'test' / 'pwtest.h' +-input_dirs = [ meson.project_source_root() / 'spa' / 'include' / 'spa' ] ++inputs += meson.source_root() / 'test' / 'pwtest.h' ++input_dirs = [ meson.source_root() / 'spa' / 'include' / 'spa' ] + + path_prefixes = [ +- meson.project_source_root() / 'src', +- meson.project_source_root() / 'spa' / 'include', +- meson.project_source_root(), ++ meson.source_root() / 'src', ++ meson.source_root() / 'spa' / 'include', ++ meson.source_root(), + ] + + cssfiles = [ +- meson.project_source_root() / 'doc' / 'doxygen-awesome.css', +- meson.project_source_root() / 'doc' / 'custom.css' ++ meson.source_root() / 'doc' / 'doxygen-awesome.css', ++ meson.source_root() / 'doc' / 'custom.css' + ] + + # Example files (in order from simple to esoteric) +@@ -116,13 +116,25 @@ input_dirs += [ 'doc/examples.dox' ] + + man_doxygen = [] + man_subpages = [] ++manpages = [ ++ 'pipewire.1.rst.in', ++ 'pipewire-pulse.1.rst.in', ++ 'pipewire.conf.5.rst.in', ++ 'pw-cat.1.rst.in', ++ 'pw-cli.1.rst.in', ++ 'pw-dot.1.rst.in', ++ 'pw-metadata.1.rst.in', ++ 'pw-mididump.1.rst.in', ++ 'pw-mon.1.rst.in', ++ 'pw-profiler.1.rst.in', ++] + foreach m : manpages + manconf = configuration_data() +- pagename = 'page_man_' + m.split('.rst.in').get(0).replace('.', '_').replace('-', '_') ++ pagename = 'page_man_' + m.split('.rst.in').get(0).underscorify() + filename = m.split('.rst.in').get(0) + '.dox' + manconf.set('pagename', pagename) +- manconf.set('title', m.split('.rst.in').get(0).replace('.1','').replace('.5','')) +- manconf.set('filename', meson.project_source_root() / 'man' / m) ++ manconf.set('title', m.split('.rst.in').get(0).strip('.15')) ++ manconf.set('filename', meson.source_root() / 'man' / m) + manfile = configure_file(input: 'manpage.dox.in', + output: filename, + configuration: manconf) +@@ -141,8 +153,8 @@ input_dirs += [ 'doc/pipewire-tools.dox' + doxyfile_conf.set('inputs', ' '.join(inputs + input_dirs)) + doxyfile_conf.set('cssfiles', ' '.join(cssfiles)) + doxyfile_conf.set('path_prefixes', ' '.join(path_prefixes)) +-doxyfile_conf.set('c_input_filter', meson.project_source_root() / 'doc' / 'input-filter.sh') +-doxyfile_conf.set('h_input_filter', meson.project_source_root() / 'doc' / 'input-filter-h.sh') ++doxyfile_conf.set('c_input_filter', meson.source_root() / 'doc' / 'input-filter.sh') ++doxyfile_conf.set('h_input_filter', meson.source_root() / 'doc' / 'input-filter-h.sh') + + doxyfile = configure_file(input: 'Doxyfile.in', + output: 'Doxyfile', From 17260234a5705d7db5c74d7ee3a083d43d4bf8b003c0aaabe0f93416006a028f Mon Sep 17 00:00:00 2001 From: Antonio Larrosa Date: Wed, 2 Feb 2022 10:22:05 +0000 Subject: [PATCH 2/3] Accepting request 950456 from home:dfaggioli:branches:multimedia:libs - pipewire should be a true dependency, not just recommended (e.g., so that any setup that use no-recommends, like MicroOS, also work) OBS-URL: https://build.opensuse.org/request/show/950456 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pipewire?expand=0&rev=45 --- pipewire.changes | 6 ++++++ pipewire.spec | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pipewire.changes b/pipewire.changes index 3d0113f..5c3bf8e 100644 --- a/pipewire.changes +++ b/pipewire.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Feb 1 14:23:13 UTC 2022 - Dario Faggioli + +- pipewire should be a true dependency, not just recommended (e.g., + so that any setup that use no-recommends, like MicroOS, also work) + ------------------------------------------------------------------- Thu Jan 27 14:04:28 UTC 2022 - Antonio Larrosa diff --git a/pipewire.spec b/pipewire.spec index 128d1e8..27d71f6 100644 --- a/pipewire.spec +++ b/pipewire.spec @@ -305,8 +305,8 @@ This package contains an ALSA plugin for the PipeWire media server. %package pulseaudio Summary: PipeWire PulseAudio implementation Group: Development/Libraries/C and C++ -Recommends: %{name} >= %{version}-%{release} Requires: %{libpipewire} >= %{version}-%{release} +Requires: %{name} >= %{version}-%{release} Conflicts: pulseaudio %if 0%{suse_version} >= 1550 Requires(post): pulseaudio-setup From 71697947a9557b1195c63d73abaf5e44c3823c2787b01f6a7acc5c4fd64202c3 Mon Sep 17 00:00:00 2001 From: Antonio Larrosa Date: Thu, 3 Feb 2022 12:23:16 +0000 Subject: [PATCH 3/3] Accepting request 950942 from home:alarrosa:branches:multimedia:libs - Update to version 0.3.45: * Highlights - Zoom, telegram and other apps should be able to play sound again. - Implement a better way to force and lock JACK buffersize. - Default sink and source names and properties are improved. - The config loader can now load and merge fragments in conf.d directories for easier user configuration of config files. - Many small bug fixes and improvements. * PipeWire - pw-cli can now also send Commands to nodes. This can be used to Suspend a device, for example. - The eventfd was removed from loops and invoke is now used to stop the loop, this saves an fd. - New Alpine CI target to test musl builds, various build fixes. - Add force-quantum and force-rate properties. - The config loader can now load and merge fragments in conf.d directories. (#207) - resource error methods can be called without a resource and then just log an error message. - link-factory can now also work from the config. (#2095) * modules - module-simple-protocol has better argument parsing and can handle channelmap now. (#2068) It's also possible to configure latency and rate. - The native protocol now does extra checks for invalid data. (#2070) * ALSA - TI2902 chips as found in various Behringer cards should have OBS-URL: https://build.opensuse.org/request/show/950942 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pipewire?expand=0&rev=46 --- _service | 2 +- pipewire-0.3.44.obscpio | 3 -- pipewire-0.3.45.obscpio | 3 ++ pipewire.changes | 62 +++++++++++++++++++++++++++++++++++ pipewire.obsinfo | 6 ++-- pipewire.spec | 2 +- reduce-meson-dependency.patch | 2 +- 7 files changed, 71 insertions(+), 9 deletions(-) delete mode 100644 pipewire-0.3.44.obscpio create mode 100644 pipewire-0.3.45.obscpio diff --git a/_service b/_service index 8fc6b94..5ee7c44 100644 --- a/_service +++ b/_service @@ -3,7 +3,7 @@ git https://gitlab.freedesktop.org/pipewire/pipewire.git - refs/tags/0.3.44 + refs/tags/0.3.45 @PARENT_TAG@