[pulseaudio-commits] [Git][pulseaudio/pulseaudio][master] 32 commits: gitlab-ci: Create two different jobs for autotools and meson builds

Arun Raghavan gitlab at gitlab.freedesktop.org
Thu Oct 4 03:14:32 UTC 2018


Arun Raghavan pushed to branch master at PulseAudio / pulseaudio


Commits:
d32e6199 by Arnaud Rebillout at 2018-10-04T03:14:18Z
gitlab-ci: Create two different jobs for autotools and meson builds

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
e013ac2a by Arnaud Rebillout at 2018-10-04T03:14:18Z
core: Fix a log function when HAVE_SYSTEMD_JOURNAL && !HAVE_SYSLOG

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
4be9e4ba by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Define HAVE_UDEV when udev is found

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
097a2ee6 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: modules/alsa: Add udev support

This is needed now that we define HAVE_UDEV

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
652d3db8 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: modules/alsa: Make alsa-util a shared library

This is to be consistent. In pa currently, as built by the autotools,
libalsa-util is a shared library. Moreover, all the libraries for the
modules, as defined in `src/meson.build`, are also shared libraries.

So let's stick to shared libraries everywhere for now, for simplicity.

We can rework that later on.

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
50bb9726 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: modules/alsa: Fix udev-util include path

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
caa2821e by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Add systemd-login to core dependencies

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
ec46f73f by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Propagate systemd dep to libpulsecommon and daemon

This is needed now that we define HAVE_SYSTEMD_xxx

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
02676831 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Make systemd-login module depend on systemd

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
5c1a9bb1 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Make equalizer-sink modulde depend on fftw, add fftw dependency

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
aed8e9f4 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Add pulsecore internal libraries

This is based on the initial protocol_native library that is already
defined, and then by looking at the Makefile.am to work out the
dependencies.

It's not clear whether we really need database_c_args, maybe there's
things that can be simplified.

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
918af592 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Add the rtp module library

This is based on the existing libalsa-util library.

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
13adc3a8 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Comment bluez5 modules for now

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
dac59dbf by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Build modules with '-Wl,no-undefined'

This flag will make the loader fail if symbols are not resolved. It
seems to be our best bet to uncover every missing module dependencies.

For more details, I recommend to read:
<http://www.kaizou.org/2015/01/linux-libraries/>

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
8bc6e40d by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Fix all the missing dependencies uncovered by -Wl,--no-undefined

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
7f320318 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable dbus-protocol module

This is similar to alsa and rtp modules.

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
83b69038 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable jack modules, add jack dependency

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
4c9b6370 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable raop-sink module, add raop lib, add openssl dependency

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
4e6c3c0d by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: modules/raop: Fix rtsp_client.h include path

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
90c6416b by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable raop-discover module, add avahi dependency

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
6ee4f86f by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable x11 modules, add x11 related dependencies

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
ceba4202 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable zeroconf modules

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
cf1795bc by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable mmkbd-evdev module

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
14486eb0 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable lirc module, add lirc dependency

This is unlike the autotools where we check that a header exist, here we
use pkgconfig because upstream ships a pkgconfig. I don't know from
which version though...

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
fd659908 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable console-kit module

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
147462b2 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Do not build dbus files as a library

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
0d6ea15e by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable bluetooth modules, add bluez_util lib, add bluez and sbc dependencies

Please notice that the bluez5 version seems wrong in the dependency
declaration: `>= 4.x`, while we're talking about version 5.

The ofono part will need to be made optional when we start to work on
the meson_options file.

I follow the current configure.ac to define 'HAVE_BLUEZ', but it looks
like this part would benefit from a bit of rework. Setting HAVE_BLUEZ
when we have dbus+sbc sounds weird, there's probably a better name for
this variable.

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
5b0a1df2 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable oss module and padsp util

Regarding the module:

This is unlike the autotools where liboss-util is built as a library,
here we build everything in the oss module, as apparently there's no
other consumer for liboss-util.

Regarding padsp:

Setting the install mode for padsp requires meson 0.47, so instead we
set padsp.in as executable in the git repository (which is what glib
does for gdbus-codegen btw).

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
31fd8207 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable ladspa module

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
88d77ff8 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Enable echo-cancel module, add libwebrtc_util lib, add speex and webrtc dependencies

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
66ac9ee3 by Arnaud Rebillout at 2018-10-04T03:14:18Z
webrtc: Silence -Wsign-compare warning

  webrtc.cc:202:19: warning: comparison of integer expressions of different signedness:
  'int' and 'std::vector<webrtc::CartesianPoint<float> >::size_type' {aka 'long unsigned int'}

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -
7f05b835 by Arnaud Rebillout at 2018-10-04T03:14:18Z
meson: Build and install man pages

Signed-off-by: Arnaud Rebillout <arnaud.rebillout at collabora.com>

- - - - -


18 changed files:

- .gitlab-ci.yml
- + man/meson.build
- meson.build
- src/daemon/meson.build
- src/meson.build
- src/modules/alsa/alsa-util.c
- src/modules/alsa/meson.build
- + src/modules/bluetooth/meson.build
- + src/modules/echo-cancel/meson.build
- src/modules/echo-cancel/webrtc.cc
- src/modules/meson.build
- + src/modules/raop/meson.build
- src/modules/raop/raop-client.c
- + src/modules/rtp/meson.build
- src/pulsecore/log.c
- src/pulsecore/meson.build
- src/utils/meson.build
- src/utils/padsp.in


Changes:

=====================================
.gitlab-ci.yml
=====================================
@@ -1,6 +1,6 @@
 image: registry.freedesktop.org/pulseaudio/pulseaudio/ubuntu:18.04
 
-build:
+build-autotools:
   stage: build
   script:
     - export MAKEFLAGS="-j$(nproc)"
@@ -13,10 +13,17 @@ build:
     - make check-daemon
     - ulimit -c 0 # don't dump core files on tests that are supposed to assert
     - make distcheck
-    - cd ..
-    - meson . build-meson
-    - ninja -C build-meson
   artifacts:
     paths:
       - build/
-      - build-meson/
+
+build-meson:
+  stage: build
+  script:
+    - meson build
+    - cd build
+    - ninja
+    - ninja test
+  artifacts:
+    paths:
+      - build/


=====================================
man/meson.build
=====================================
@@ -0,0 +1,82 @@
+# TODO How are symlinks installed by meson?
+#      We might need meson.add_install_script()
+
+# man page name, section, [aliases]
+manpages = [
+  ['default.pa', '5'],
+  ['pacat', '1', ['paplay', 'parec', 'parecord', 'pamon']],
+  ['pacmd', '1'],
+  ['pactl', '1'],
+  ['padsp', '1'],
+  ['pasuspender', '1'],
+  ['pax11publish', '1'],
+  ['pulse-cli-syntax', '5'],
+  ['pulse-client.conf', '5'],
+  ['pulse-daemon.conf','5'],
+  ['pulseaudio', '1'],
+  ['start-pulseaudio-x11', '1'],
+]
+
+# FIXME: Add esdcompat if HAVE_ESOUND
+#manpages += ['esdcompat', '1'],
+
+# FIXME: This should be conditional
+want_man = true
+
+man_data = configuration_data()
+man_data.set('PACKAGE_URL', 'http://pulseaudio.org/')
+man_data.set('PACKAGE_BUGREPORT', 'pulseaudio-discuss (at) lists (dot) freedesktop (dot) org')
+man_data.set('PA_DEFAULT_CONFIG_DIR', cdata.get_unquoted('PA_DEFAULT_CONFIG_DIR'))
+
+perl = find_program('perl', required: want_man == true)
+xmltoman_cmd = [perl, join_paths(meson.current_source_dir(), 'xmltoman')]
+xmllint = find_program('xmllint', required: want_man == true)
+
+foreach tuple : manpages
+  stem = tuple[0]
+  section = tuple[1]
+  aliases = tuple.get(2, [])
+
+  man = stem + '.' + section
+  xmlin = man + '.xml.in'
+  xml = man + '.xml'
+
+  xml_file = configure_file(
+    input : xmlin,
+    output : xml,
+    configuration : man_data,
+  )
+
+  mandirn = join_paths(get_option('mandir'), 'man' + section)
+
+  custom_target(
+    man + '-target',
+    input : xml_file,
+    output : man,
+    capture : true,
+    command : xmltoman_cmd + ['@INPUT@'],
+    install : want_man,
+    install_dir : mandirn,
+  )
+
+  foreach alias : aliases
+    link = custom_target(
+      alias,
+      output : alias,
+      command : ['ln', '-fs', man, '@OUTPUT@'],
+      install : want_man,
+      install_dir : mandirn,
+    )
+  endforeach
+
+  if xmllint.found()
+    test(
+      'Validate xml file ' + xml,
+      xmllint,
+      args : [
+	'--noout', '--valid',
+	'--path', meson.current_source_dir(),
+	join_paths(meson.current_build_dir(), xml)]
+    )
+  endif
+endforeach


=====================================
meson.build
=====================================
@@ -216,13 +216,86 @@ if alsa_dep.found()
   cdata.set('HAVE_ALSA_UCM', 1)
 endif
 
+systemd_dep = dependency('libsystemd', required : false)
+if systemd_dep.found()
+  cdata.set('HAVE_SYSTEMD_DAEMON', 1)
+  cdata.set('HAVE_SYSTEMD_LOGIN', 1)
+  cdata.set('HAVE_SYSTEMD_JOURNAL', 1)
+endif
+
 # FIXME: support ORC
 cdata.set('DISABLE_ORC', 1)
 
 # Module dependencies
+
+if cc.has_header('sys/soundcard.h')
+  cdata.set('HAVE_OSS_OUTPUT', 1)
+  cdata.set('HAVE_OSS_WRAPPER', 1)
+  cdata.set_quoted('PULSEDSP_LOCATION',	join_paths(prefix, get_option('libdir'), 'pulseaudio'))
+endif
+
+# X11 deps, we don't define any HAVE_XXX for these one
+ice_dep = dependency('ice', required : false)
+sm_dep = dependency('sm', required: false)
+xtst_dep = dependency('xtst', required: false)
+
+avahi_dep = dependency('avahi-client', version : '>= 0.6.0', required : false)
+if avahi_dep.found()
+  cdata.set('HAVE_AVAHI', 1)
+endif
+
+bluez_dep = dependency('bluez', version : '>= 4.101', required : false)
+if bluez_dep.found()
+  cdata.set('HAVE_BLUEZ_5_NATIVE_HEADSET', 1)
+  cdata.set('HAVE_BLUEZ_5_OFONO_HEADSET', 1) # TODO This should be optional
+endif
+
+jack_dep = dependency('jack', version : '>= 0.117.0', required : false)
+if jack_dep.found()
+  cdata.set('HAVE_JACK', 1)
+endif
+
+fftw_dep = dependency('fftw3f', required : false)
+if fftw_dep.found()
+  cdata.set('HAVE_FFTW', 1)
+endif
+
+lirc_dep = dependency('lirc', required : false)
+if lirc_dep.found()
+  cdata.set('HAVE_LIRC', 1)
+endif
+
+openssl_dep = dependency('openssl', version : '>= 0.9', required : false)
+if openssl_dep.found()
+  cdata.set('HAVE_OPENSSL', 1)
+endif
+
+sbc_dep = dependency('sbc', version : '>= 1.0', required : false)
+if sbc_dep.found()
+  cdata.set('HAVE_SBC', 1)
+endif
+if sbc_dep.found() and dbus_dep.found()
+  cdata.set('HAVE_BLUEZ', 1)
+  cdata.set('HAVE_BLUEZ_5', 1)
+endif
+
+speex_dep = dependency('speexdsp', version : '>= 1.2', required : false)
+if speex_dep.found()
+  cdata.set('HAVE_SPEEX', 1)
+endif
+
 udev_dep = dependency('libudev', version : '>= 143', required : false)
+if udev_dep.found()
+  cdata.set('HAVE_UDEV', 1)
+endif
+
+webrtc_dep = dependency('webrtc-audio-processing', version : '>= 0.2', required : false)
+if webrtc_dep.found()
+  cdata.set('HAVE_WEBRTC', 1)
+endif
 
 # Now generate config.h from everything above
 configure_file(output : 'config.h', configuration : cdata)
 
+subdir('man')
 subdir('src')


=====================================
src/daemon/meson.build
=====================================
@@ -29,6 +29,6 @@ executable('pulseaudio',
   install: true,
   include_directories : [configinc, topinc],
   link_with : [libpulsecore, libpulsecommon, libpulse],
-  dependencies : [ltdl_dep, cap_dep, dbus_dep],
+  dependencies : [ltdl_dep, cap_dep, dbus_dep, systemd_dep],
   c_args : pa_c_args,
 )


=====================================
src/meson.build
=====================================
@@ -182,7 +182,7 @@ libpulsecommon = shared_library('pulsecommon-' + pa_version_major_minor,
   include_directories : [configinc, topinc],
   c_args : [pa_c_args],
   install : true,
-  dependencies : [libm_dep, thread_dep, shm_dep, sndfile_dep, dbus_dep, x11_dep],
+  dependencies : [libm_dep, thread_dep, shm_dep, sndfile_dep, dbus_dep, x11_dep, systemd_dep],
   implicit_include_directories : false)
 
 libpulsecommon_dep = declare_dependency(link_with: libpulsecommon)


=====================================
src/modules/alsa/alsa-util.c
=====================================
@@ -45,7 +45,7 @@
 #include "alsa-mixer.h"
 
 #ifdef HAVE_UDEV
-#include "udev-util.h"
+#include <modules/udev-util.h>
 #endif
 
 static int set_format(snd_pcm_t *pcm_handle, snd_pcm_hw_params_t *hwparams, pa_sample_format_t *f) {


=====================================
src/modules/alsa/meson.build
=====================================
@@ -21,11 +21,16 @@ if dbus_dep.found()
     libalsa_util_headers += [ '../reserve.h', '../reserve-monitor.h' ]
 endif
 
-libalsa_util = static_library('libalsa_util',
+if udev_dep.found()
+  libalsa_util_sources += [ '../udev-util.c' ]
+  libalsa_util_headers += [ '../udev-util.h' ]
+endif
+
+libalsa_util = shared_library('libalsa_util',
   libalsa_util_sources,
   libalsa_util_headers,
   c_args : [pa_c_args, server_c_args],
   include_directories : [configinc, topinc],
-  dependencies : [libpulse_dep, libpulsecore_dep, alsa_dep, dbus_dep],
-  install : false
+  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, alsa_dep, dbus_dep, libm_dep, udev_dep],
+  install : true
 )


=====================================
src/modules/bluetooth/meson.build
=====================================
@@ -0,0 +1,25 @@
+libbluez5_util_sources = [
+  'bluez5-util.c',
+]
+
+libbluez5_util_headers = [
+  'a2dp-codecs.h',
+  'bluez5-util.h',
+  'rtp.h',
+]
+
+if bluez_dep.found()
+  libbluez5_util_sources += [ 'backend-native.c' ]
+endif
+
+# TODO This should be optional
+libbluez5_util_sources += [ 'backend-ofono.c' ]
+
+libbluez5_util = shared_library('libbluez5_util',
+  libbluez5_util_sources,
+  libbluez5_util_headers,
+  c_args : [pa_c_args, server_c_args],
+  include_directories : [configinc, topinc],
+  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, dbus_dep],
+  install : true
+)


=====================================
src/modules/echo-cancel/meson.build
=====================================
@@ -0,0 +1,18 @@
+# The webrtc code is split off into a helper library to avoid having automake
+# link module-echo-cancel with C++ (which it does if there are any C++ deps,
+# even conditional ones).
+
+# Defining this library as shared fails, as it actually requires a symbol
+# from module-echo-cancel.c. Setting it to static solves that.
+
+libwebrtc_util_sources = [
+  'webrtc.cc'
+]
+
+libwebrtc_util = static_library('libwebrtc_util',
+  libwebrtc_util_sources,
+  cpp_args : [pa_c_args, server_c_args],
+  include_directories : [configinc, topinc],
+  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, webrtc_dep],
+  install : true
+)


=====================================
src/modules/echo-cancel/webrtc.cc
=====================================
@@ -196,26 +196,26 @@ static bool parse_mic_geometry(const char **mic_geometry, std::vector<webrtc::Po
      * radius is distance from the array center in meters.
      */
 
-    int i;
+    long unsigned int i;
     float f[3];
 
     for (i = 0; i < geometry.size(); i++) {
         if (!parse_point(mic_geometry, f)) {
-            pa_log("Failed to parse channel %d in mic_geometry", i);
+            pa_log("Failed to parse channel %lu in mic_geometry", i);
             return false;
         }
 
         /* Except for the last point, we should have a trailing comma */
         if (i != geometry.size() - 1) {
             if (**mic_geometry != ',') {
-                pa_log("Failed to parse channel %d in mic_geometry", i);
+                pa_log("Failed to parse channel %lu in mic_geometry", i);
                 return false;
             }
 
             (*mic_geometry)++;
         }
 
-        pa_log_debug("Got mic #%d position: (%g, %g, %g)", i, f[0], f[1], f[2]);
+        pa_log_debug("Got mic #%lu position: (%g, %g, %g)", i, f[0], f[1], f[2]);
 
         geometry[i].c[0] = f[0];
         geometry[i].c[1] = f[1];


=====================================
src/modules/meson.build
=====================================
@@ -1,30 +1,27 @@
+# Order matters! raop needs rtp!
+subdir('rtp')
+subdir('raop')
+
 # module name, sources, [headers, extra flags, extra deps, extra libs]
 all_modules = [
   [ 'module-allow-passthrough', 'module-allow-passthrough.c' ],
   [ 'module-always-sink', 'module-always-sink.c' ],
   [ 'module-always-source', 'module-always-source.c' ],
   [ 'module-augment-properties', 'module-augment-properties.c' ],
-  [ 'module-bluetooth-discover', 'bluetooth/module-bluetooth-discover.c' ],
-  [ 'module-bluetooth-policy', 'bluetooth/module-bluetooth-policy.c' ],
-#  [ 'module-bluez5-device', 'bluetooth/module-bluez5-device.c' ],
-#  [ 'module-bluez5-discover', 'bluetooth/module-bluez5-discover.c' ],
 #  [ 'module-bonjour-publish', 'macosx/module-bonjour-publish.c' ],
   [ 'module-card-restore', 'module-card-restore.c' ],
-  [ 'module-cli', 'module-cli.c' ],
-  [ 'module-cli-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_CLI', '-DUSE_TCP_SOCKETS'] ],
-  [ 'module-cli-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_CLI', '-DUSE_UNIX_SOCKETS'] ],
+  [ 'module-cli', 'module-cli.c', [], [], [], libcli ],
+  [ 'module-cli-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_CLI', '-DUSE_TCP_SOCKETS'], [], libprotocol_cli ],
+  [ 'module-cli-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_CLI', '-DUSE_UNIX_SOCKETS'], [], libprotocol_cli ],
   [ 'module-combine', 'module-combine.c' ],
   [ 'module-combine-sink', 'module-combine-sink.c' ],
-#  [ 'module-console-kit', 'module-console-kit.c' ],
+  [ 'module-console-kit', 'module-console-kit.c', [], [], [dbus_dep] ],
 #  [ 'module-coreaudio-detect', 'macosx/module-coreaudio-detect.c' ],
 #  [ 'module-coreaudio-device', 'macosx/module-coreaudio-device.c' ],
-#  [ 'module-dbus-protocol', 'module-dbus-protocol.c' ]
   [ 'module-default-device-restore', 'module-default-device-restore.c', [], [], [], libprotocol_native ],
   [ 'module-detect', 'module-detect.c' ],
-  [ 'module-device-manager', 'module-device-manager.c' ],
+  [ 'module-device-manager', 'module-device-manager.c', [], [], [], libprotocol_native ],
   [ 'module-device-restore', 'module-device-restore.c', [], [], [dbus_dep], libprotocol_native ],
-#  [ 'module-echo-cancel', 'module-echo-cancel.c' ],
-  [ 'module-equalizer-sink', 'module-equalizer-sink.c', [], [], [dbus_dep] ],
   [ 'module-esound-compat-spawnfd', 'module-esound-compat-spawnfd.c' ],
   [ 'module-esound-compat-spawnpid', 'module-esound-compat-spawnpid.c' ],
 #  [ 'module-esound-protocol-tcp', 'module-protocol-stub.c' ],
@@ -34,38 +31,31 @@ all_modules = [
   [ 'module-filter-heuristics', 'module-filter-heuristics.c' ],
 #  [ 'module-gconf', 'gconf/module-gconf.c' ],
   [ 'module-hal-detect', 'module-hal-detect-compat.c' ],
-  [ 'module-http-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_HTTP', '-DUSE_TCP_SOCKETS'] ],
-  [ 'module-http-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_HTTP', '-DUSE_UNIX_SOCKETS'] ],
+  [ 'module-http-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_HTTP', '-DUSE_TCP_SOCKETS'], [], libprotocol_http ],
+  [ 'module-http-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_HTTP', '-DUSE_UNIX_SOCKETS'], [], libprotocol_http ],
   [ 'module-intended-roles', 'module-intended-roles.c' ],
-#  [ 'module-jackdbus-detect', 'jack/module-jackdbus-detect.c' ],
-#  [ 'module-jack-sink', 'jack/module-jack-sink.c' ],
-#  [ 'module-jack-source', 'jack/module-jack-source.c' ],
-#  [ 'module-ladspa-sink', 'module-ladspa-sink.c' ],
-#  [ 'module-lirc', 'module-lirc.c' ],
+  [ 'module-jackdbus-detect', 'jack/module-jackdbus-detect.c', [], [], [dbus_dep] ],
+  [ 'module-ladspa-sink', 'module-ladspa-sink.c', 'ladspa.h', ['-DLADSPA_PATH="' + join_paths(prefix, get_option('libdir')) + '/ladspa:/usr/local/lib/ladspa:/usr/lib/ladspa:/usr/local/lib64/ladspa:/usr/lib64/ladspa"'], [dbus_dep, libm_dep, ltdl_dep] ],
   [ 'module-loopback', 'module-loopback.c' ],
   [ 'module-match', 'module-match.c' ],
-#  [ 'module-mmkbd-evdev', 'module-mmkbd-evdev.c' ],
-  [ 'module-native-protocol-fd', 'module-native-protocol-fd.c' ],
+  [ 'module-native-protocol-fd', 'module-native-protocol-fd.c', [], [], [], libprotocol_native ],
   [ 'module-native-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_NATIVE', '-DUSE_TCP_SOCKETS'], [], libprotocol_native ],
   [ 'module-native-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_NATIVE', '-DUSE_UNIX_SOCKETS'], [], libprotocol_native ],
   [ 'module-null-sink', 'module-null-sink.c' ],
   [ 'module-null-source', 'module-null-source.c' ],
-#  [ 'module-oss', 'oss/module-oss.c' ],
   [ 'module-pipe-sink', 'module-pipe-sink.c' ],
   [ 'module-pipe-source', 'module-pipe-source.c' ],
   [ 'module-position-event-sounds', 'module-position-event-sounds.c' ],
-#  [ 'module-raop-discover', 'raop/module-raop-discover.c' ],
-#  [ 'module-raop-sink', 'raop/module-raop-sink.c' ],
   [ 'module-remap-sink', 'module-remap-sink.c' ],
   [ 'module-remap-source', 'module-remap-source.c' ],
   [ 'module-rescue-streams', 'module-rescue-streams.c' ],
   [ 'module-role-cork', ['module-role-cork.c', 'stream-interaction.c'], 'stream-interaction.h' ],
   [ 'module-role-ducking', ['module-role-ducking.c', 'stream-interaction.c'], 'stream-interaction.h' ],
-  [ 'module-rtp-recv', 'rtp/module-rtp-recv.c' ],
-  [ 'module-rtp-send', 'rtp/module-rtp-send.c' ],
-  [ 'module-rygel-media-server', 'module-rygel-media-server.c', [], [], [dbus_dep] ],
-  [ 'module-simple-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_SIMPLE', '-DUSE_TCP_SOCKETS'] ],
-  [ 'module-simple-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_SIMPLE', '-DUSE_UNIX_SOCKETS'] ],
+  [ 'module-rtp-recv', 'rtp/module-rtp-recv.c', [], [], [], librtp ],
+  [ 'module-rtp-send', 'rtp/module-rtp-send.c' , [], [], [], librtp ],
+  [ 'module-rygel-media-server', 'module-rygel-media-server.c', [], [], [dbus_dep], libprotocol_http ],
+  [ 'module-simple-protocol-tcp', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_SIMPLE', '-DUSE_TCP_SOCKETS'], [], libprotocol_simple ],
+  [ 'module-simple-protocol-unix', 'module-protocol-stub.c', [], ['-DUSE_PROTOCOL_SIMPLE', '-DUSE_UNIX_SOCKETS'], [], libprotocol_simple ],
   [ 'module-sine', 'module-sine.c' ],
   [ 'module-sine-source', 'module-sine-source.c' ],
 #  [ 'module-solaris', 'module-solaris.c' ],
@@ -73,30 +63,115 @@ all_modules = [
   [ 'module-suspend-on-idle', 'module-suspend-on-idle.c' ],
   [ 'module-switch-on-connect', 'module-switch-on-connect.c' ],
   [ 'module-switch-on-port-available', 'module-switch-on-port-available.c' ],
-  [ 'module-systemd-login', 'module-systemd-login.c' ],
-  [ 'module-tunnel-sink', 'module-tunnel.c' ],
+  [ 'module-tunnel-sink', 'module-tunnel.c', [], [], [x11_dep] ],
   [ 'module-tunnel-sink-new', 'module-tunnel-sink-new.c' ],
-  [ 'module-tunnel-source', 'module-tunnel.c' ],
+  [ 'module-tunnel-source', 'module-tunnel.c', [], [], [x11_dep] ],
   [ 'module-tunnel-source-new', 'module-tunnel-source-new.c' ],
   [ 'module-virtual-sink', 'module-virtual-sink.c' ],
   [ 'module-virtual-source', 'module-virtual-source.c' ],
   [ 'module-virtual-surround-sink', 'module-virtual-surround-sink.c' ],
   [ 'module-volume-restore', 'module-volume-restore.c' ],
 #  [ 'module-waveout', 'module-waveout.c' ],
-#  [ 'module-x11-bell', 'x11/module-x11-bell.c' ],
-#  [ 'module-x11-cork-request', 'x11/module-x11-cork-request.c' ],
-#  [ 'module-x11-publish', 'x11/module-x11-publish.c' ],
-#  [ 'module-x11-xsmp', 'x11/module-x11-xsmp.c' ],
-#  [ 'module-zeroconf-discover', 'module-zeroconf-discover.c' ],
-#  [ 'module-zeroconf-publish', 'module-zeroconf-publish.c' ],
 ]
 
+# Modules enabled by headers
+
+if cc.has_header('linux/input.h')
+  all_modules += [
+    [ 'module-mmkbd-evdev', 'module-mmkbd-evdev.c' ],
+  ]
+endif
+
+if cc.has_header('sys/soundcard.h')
+  all_modules += [
+    [ 'module-oss', [ 'oss/module-oss.c', 'oss/oss-util.c', 'oss/oss-util.h' ] ],
+  ]
+endif
+
+# Modules enabled by dependencies
+
 if alsa_dep.found()
   subdir('alsa')
   all_modules += [
-    [ 'module-alsa-card', 'alsa/module-alsa-card.c', [], [], [alsa_dep], libalsa_util ],
-    [ 'module-alsa-sink', 'alsa/module-alsa-sink.c', [], [], [alsa_dep], libalsa_util ],
-    [ 'module-alsa-source', 'alsa/module-alsa-source.c', [], [], [alsa_dep], libalsa_util ],
+    [ 'module-alsa-card', 'alsa/module-alsa-card.c', [], [], [alsa_dep, libm_dep], libalsa_util ],
+    [ 'module-alsa-sink', 'alsa/module-alsa-sink.c', [], [], [alsa_dep, libm_dep], libalsa_util ],
+    [ 'module-alsa-source', 'alsa/module-alsa-source.c', [], [], [alsa_dep, libm_dep], libalsa_util ],
+  ]
+endif
+
+if avahi_dep.found()
+  all_modules += [
+    [ 'module-zeroconf-discover', 'module-zeroconf-discover.c', [], [], [avahi_dep], libavahi_wrap ],
+    [ 'module-zeroconf-publish', 'module-zeroconf-publish.c', [], [], [avahi_dep, dbus_dep], [libavahi_wrap, libprotocol_native] ],
+  ]
+endif
+
+if dbus_dep.found()
+  all_modules += [
+    [ 'module-dbus-protocol',
+      [ 'dbus/iface-card.c', 'dbus/iface-card.h',
+	'dbus/iface-card-profile.c', 'dbus/iface-card-profile.h',
+	'dbus/iface-client.c', 'dbus/iface-client.h',
+	'dbus/iface-core.c', 'dbus/iface-core.h',
+	'dbus/iface-device.c', 'dbus/iface-device.h',
+	'dbus/iface-device-port.c', 'dbus/iface-device-port.h',
+	'dbus/iface-memstats.c', 'dbus/iface-memstats.h',
+	'dbus/iface-module.c', 'dbus/iface-module.h',
+	'dbus/iface-sample.c', 'dbus/iface-sample.h',
+	'dbus/iface-stream.c', 'dbus/iface-stream.h',
+	'dbus/module-dbus-protocol.c',
+      ],
+      [], [], [dbus_dep] ]
+  ]
+endif
+
+if dbus_dep.found() and sbc_dep.found()
+  all_modules += [
+    [ 'module-bluetooth-discover', 'bluetooth/module-bluetooth-discover.c' ],
+    [ 'module-bluetooth-policy', 'bluetooth/module-bluetooth-policy.c', [], [], [dbus_dep] ]
+  ]
+  if bluez_dep.found()
+    subdir('bluetooth')
+    all_modules += [
+      [ 'module-bluez5-device', 'bluetooth/module-bluez5-device.c', [], [], [sbc_dep], libbluez5_util ],
+      [ 'module-bluez5-discover', 'bluetooth/module-bluez5-discover.c', [], [], [dbus_dep], libbluez5_util ],
+    ]
+  endif
+endif
+
+if fftw_dep.found()
+  all_modules += [
+    [ 'module-equalizer-sink', 'module-equalizer-sink.c', [], [], [dbus_dep, fftw_dep, libm_dep] ],
+  ]
+endif
+
+if jack_dep.found()
+  all_modules += [
+    [ 'module-jack-sink', 'jack/module-jack-sink.c', [], [], [jack_dep] ],
+    [ 'module-jack-source', 'jack/module-jack-source.c', [], [], [jack_dep] ],
+  ]
+endif
+
+if lirc_dep.found()
+  all_modules += [
+    [ 'module-lirc', 'module-lirc.c', [], [], [lirc_dep] ],
+  ]
+endif
+
+if openssl_dep.found()
+  all_modules += [
+    [ 'module-raop-sink', 'raop/module-raop-sink.c', [], [], [], libraop ],
+  ]
+  if avahi_dep.found()
+    all_modules += [
+      [ 'module-raop-discover', 'raop/module-raop-discover.c', [], [], [avahi_dep], libavahi_wrap ],
+    ]
+  endif
+endif
+
+if systemd_dep.found()
+  all_modules += [
+    [ 'module-systemd-login', 'module-systemd-login.c', [], [], [systemd_dep] ],
   ]
 endif
 
@@ -104,6 +179,70 @@ if udev_dep.found()
   all_modules += [ [ 'module-udev-detect', 'module-udev-detect.c', [], [], [udev_dep] ] ]
 endif
 
+if x11_dep.found()
+  all_modules += [
+    [ 'module-x11-bell', 'x11/module-x11-bell.c', [], [], [x11_dep] ],
+    [ 'module-x11-publish', 'x11/module-x11-publish.c', [], [], [x11_dep], libprotocol_native ],
+  ]
+  if xtst_dep.found()
+    all_modules += [
+      [ 'module-x11-cork-request', 'x11/module-x11-cork-request.c', [], [], [x11_dep, xtst_dep] ],
+    ]
+  endif
+  if ice_dep.found() and sm_dep.found()
+    all_modules += [
+      [ 'module-x11-xsmp', 'x11/module-x11-xsmp.c', [], [], [x11_dep, ice_dep, sm_dep] ],
+    ]
+  endif
+endif
+
+# Module echo-cancel is quite modular itself and requires a section of its own
+
+module_echo_cancel_sources = [
+  'echo-cancel/echo-cancel.h',
+  'echo-cancel/module-echo-cancel.c',
+  'echo-cancel/null.c',
+]
+module_echo_cancel_flags = []
+module_echo_cancel_deps = []
+module_echo_cancel_libs = []
+
+# FIXME: Adrian support should be optional
+module_echo_cancel_sources += [
+  'echo-cancel/adrian.c', 'echo-cancel/adrian.h',
+  'echo-cancel/adrian-aec.c', 'echo-cancel/adrian-aec.h',
+]
+module_echo_cancel_flags += ['-DHAVE_ADRIAN_EC=1']
+
+# FIXME: support ORC (depends on Adrian)
+#ORC_SOURCE += modules/echo-cancel/adrian-aec
+#module_echo_cancel_sources += [
+#  'echo-cancel/adrian-aec-orc-gen.c', 'echo-cancel/adrian-aec-orc-gen.h'
+#]
+#module_echo_cancel_deps += [orc_dep]
+
+if speex_dep.found()
+  module_echo_cancel_sources += ['echo-cancel/speex.c']
+  module_echo_cancel_deps += [speex_dep]
+endif
+
+if webrtc_dep.found()
+  subdir('echo-cancel')
+  module_echo_cancel_libs += [libwebrtc_util]
+endif
+
+all_modules += [
+  [ 'module-echo-cancel',
+    module_echo_cancel_sources,
+    [],
+    module_echo_cancel_flags,
+    module_echo_cancel_deps,
+    module_echo_cancel_libs,
+  ]
+]
+
+# Generate a shared module object for each modules
+
 foreach m : all_modules
   name = m[0]
   sources = m[1]
@@ -118,7 +257,8 @@ foreach m : all_modules
     include_directories : [configinc, topinc],
     c_args : [pa_c_args, server_c_args, '-DPA_MODULE_NAME=' + name.underscorify()] + extra_flags,
     install : true,
-    dependencies : [thread_dep, libpulse_dep, libpulsecore_dep] + extra_deps,
+    dependencies : [thread_dep, libpulse_dep, libpulsecommon_dep, libpulsecore_dep] + extra_deps,
+    link_args : [ '-Wl,--no-undefined' ],
     link_with : extra_libs,
     name_prefix : '',
     implicit_include_directories : false)


=====================================
src/modules/raop/meson.build
=====================================
@@ -0,0 +1,24 @@
+libraop_sources = [
+  'raop-client.c',
+  'raop-crypto.c',
+  'raop-packet-buffer.c',
+  'raop-sink.c',
+  'raop-util.c',
+]
+
+libraop_headers = [
+  'raop-client.h',
+  'raop-crypto.h',
+  'raop-packet-buffer.h',
+  'raop-sink.h',
+  'raop-util.h',
+]
+
+libraop = shared_library('libraop',
+  libraop_sources,
+  libraop_headers,
+  c_args : [pa_c_args, server_c_args],
+  include_directories : [configinc, topinc],
+  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, librtp_dep, openssl_dep],
+  install : true
+)


=====================================
src/modules/raop/raop-client.c
=====================================
@@ -54,13 +54,13 @@
 #include <pulsecore/random.h>
 #include <pulsecore/poll.h>
 
+#include <modules/rtp/rtsp_client.h>
+
 #include "raop-client.h"
 #include "raop-packet-buffer.h"
 #include "raop-crypto.h"
 #include "raop-util.h"
 
-#include "rtsp_client.h"
-
 #define DEFAULT_RAOP_PORT 5000
 
 #define FRAMES_PER_TCP_PACKET 4096


=====================================
src/modules/rtp/meson.build
=====================================
@@ -0,0 +1,26 @@
+librtp_sources = [
+  'rtp.c',
+  'sdp.c',
+  'sap.c',
+  'rtsp_client.c',
+  'headerlist.c',
+]
+
+librtp_headers = [
+  'rtp.h',
+  'sdp.h',
+  'sap.h',
+  'rtsp_client.h',
+  'headerlist.h',
+]
+
+librtp = shared_library('librtp',
+  librtp_sources,
+  librtp_headers,
+  c_args : [pa_c_args, server_c_args],
+  include_directories : [configinc, topinc],
+  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
+  install : true
+)
+
+librtp_dep = declare_dependency(link_with: librtp)


=====================================
src/pulsecore/log.c
=====================================
@@ -525,7 +525,7 @@ void pa_log_levelv_meta(
 
                     saved_errno = errno;
                     fprintf(stderr, "%s\n", "Error writing logs to the journal. Redirect log messages to console.");
-                    fprintf(stderr, "%s %s\n", metadata, t);
+                    fprintf(stderr, "%s\n", t);
 #endif
                     pa_log_set_target(&new_target);
                 }


=====================================
src/pulsecore/meson.build
=====================================
@@ -126,6 +126,15 @@ if dbus_dep.found()
   ]
 endif
 
+if speex_dep.found()
+  libpulsecore_sources += ['resampler/speex.c']
+endif
+
+if x11_dep.found()
+  libpulsecore_sources += ['x11wrap.c']
+  libpulsecore_headers += ['x11wrap.h']
+endif
+
 # FIXME: walk through dependencies and add files
 
 # FIXME: SIMD support (ORC)
@@ -154,12 +163,53 @@ libpulsecore = shared_library('pulsecore-' + pa_version_major_minor,
   c_args : [pa_c_args, server_c_args],
   install : true,
   link_with : libpulsecore_simd_lib,
-  dependencies : [libm_dep, libpulsecommon_dep, libpulse_dep, ltdl_dep, shm_dep, sndfile_dep, database_dep, dbus_dep, x11_dep],
+  dependencies : [libm_dep, libpulsecommon_dep, libpulse_dep, ltdl_dep, shm_dep, sndfile_dep, database_dep, dbus_dep, speex_dep, x11_dep],
   implicit_include_directories : false)
 
 libpulsecore_dep = declare_dependency(link_with: libpulsecore)
 
-# For modules that need protocol native functionality
+# Internal libraries for modules
+# TODO: understand 'c_args' and 'dependencies' better, maybe we can remove some
+
+libavahi_wrap = shared_library('avahi_wrap',
+  'avahi-wrap.c',
+  'avahi-wrap.h',
+  c_args : [pa_c_args, server_c_args, database_c_args],
+  include_directories : [configinc, topinc],
+  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, avahi_dep],
+  implicit_include_directories : false, # pulsecore/poll.h <vs> /usr/include/poll.h
+  install : true
+)
+
+libcli = shared_library('cli',
+  'cli.c',
+  'cli.h',
+  c_args : [pa_c_args, server_c_args, database_c_args],
+  include_directories : [configinc, topinc],
+  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
+  install : true
+)
+
+libcli_dep = declare_dependency(link_with: libcli)
+
+libprotocol_cli = shared_library('protocol_cli',
+  'protocol-cli.c',
+  'protocol-cli.h',
+  c_args : [pa_c_args, server_c_args, database_c_args],
+  include_directories : [configinc, topinc],
+  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, libcli_dep],
+  install : true
+)
+
+libprotocol_http = shared_library('protocol_http',
+  ['protocol-http.c', 'mime-type.c'],
+  ['protocol-http.h', 'mime-type.h'],
+  c_args : [pa_c_args, server_c_args, database_c_args],
+  include_directories : [configinc, topinc],
+  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
+  install : true
+)
+
 libprotocol_native = shared_library('protocol_native',
   'protocol-native.c',
   ['protocol-native.h', 'native-common.h'],
@@ -168,3 +218,12 @@ libprotocol_native = shared_library('protocol_native',
   dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep, dbus_dep],
   install : true
 )
+
+libprotocol_simple = shared_library('protocol_simple',
+  'protocol-simple.c',
+  'protocol-simple.h',
+  c_args : [pa_c_args, server_c_args, database_c_args],
+  include_directories : [configinc, topinc],
+  dependencies : [libpulse_dep, libpulsecommon_dep, libpulsecore_dep],
+  install : true
+)


=====================================
src/utils/meson.build
=====================================
@@ -2,7 +2,6 @@ pacat_sources = [
   'pacat.c',
 ]
 
-# FIXME: man pages
 executable('pacat',
   pacat_sources,
   install: true,
@@ -16,7 +15,6 @@ pactl_sources = [
   'pactl.c',
 ]
 
-# FIXME: man pages
 executable('pactl',
   pactl_sources,
   install: true,
@@ -30,7 +28,6 @@ pasuspender_sources = [
   'pasuspender.c',
 ]
 
-# FIXME: man pages
 executable('pasuspender',
   pasuspender_sources,
   install: true,
@@ -43,7 +40,6 @@ pacmd_sources = [
   'pacmd.c',
 ]
 
-# FIXME: man pages
 executable('pacmd',
   pacmd_sources,
   install: true,
@@ -56,7 +52,6 @@ pax11publish_sources = [
   'pax11publish.c',
 ]
 
-# FIXME: man pages
 executable('pax11publish',
   pax11publish_sources,
   install: true,
@@ -65,3 +60,27 @@ executable('pax11publish',
   dependencies : [x11_dep],
   c_args : pa_c_args,
 )
+
+if cc.has_header('sys/soundcard.h')
+  libpulsecommon_sources = [
+    'padsp.c',
+  ]
+
+  libpulsedsp = shared_library('pulsedsp',
+    libpulsecommon_sources,
+    install: true,
+    include_directories : [configinc, topinc],
+    link_with : [libpulsecommon, libpulse],
+    link_args : ['-ldl'],
+    dependencies: [thread_dep],
+    c_args : [pa_c_args, '-Wno-nonnull-compare']
+  )
+
+  configure_file(
+    input : 'padsp.in',
+    output : 'padsp',
+    configuration : cdata,
+    install : true,
+    install_dir : join_paths(prefix, get_option('bindir')),
+  )
+endif


=====================================
src/utils/padsp.in
=====================================



View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/compare/1bae214d8b2c9c7a0c11ee8bce2b98c775f21ead...7f05b835df248fe1da10219b6faf7e29e18c4d7b

-- 
View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/compare/1bae214d8b2c9c7a0c11ee8bce2b98c775f21ead...7f05b835df248fe1da10219b6faf7e29e18c4d7b
You're receiving this email because of your account on gitlab.freedesktop.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/pulseaudio-commits/attachments/20181004/7eb5cfbe/attachment-0001.html>


More information about the pulseaudio-commits mailing list