From ddb69f9a4806092e3d7fd750c2ffc5e47990cd6c7e519284ab1d25e917f42ffb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Chv=C3=A1tal?= Date: Tue, 15 May 2018 14:16:35 +0000 Subject: [PATCH 1/2] Accepting request 607607 from home:oholecek:branches:multimedia:libs - Update to 12 RC1 (11.99.1) * Much more accurate latency reporting for AirPlay devices * module-switch-on-connect now ignores virtual devices * When using passthrough for compressed audio, set the "non-audio" bit * Prioritize HDMI output over S/PDIF output * HSP support for more bluetooth headsets * Choose the A2DP bluetooth profile by default instead of HSP * New "sink_input_properties" module argument for module-ladspa-sink * New "use_system_clock_for_timing" module argument for module-pipe-sink * Steelseries Arctis 7 USB headset stereo output support * Dell Thunderbolt Dock TB16 speaker jack support * Fixed digital input support for some USB sound cards * Ability to disable input or output on macOS * New "dereverb" option for the Speex echo canceller * New module: module-always-source * State files not any more readable by all users in the system mode * module-augment-properties now uses XDG_DATA_DIRS to find .desktop files * The GConf dependency can now be avoided * qpaeq license changed from AGPL to LGPL * qpaeq ported to Qt 5 - Add subpackage module-gsettings (conflicts with module-gconf) - Remove support for obsolete Bluez4 - Fix build phase running configure twice - Removed patches: 0001-alsa-fix-infinite-loop-with-Intel-HDMI-LPE.patch 0002-alsa-mixer-add-hw_device_index-to-pa_alsa_mapping.patch 0003-alsa-mixer-autodetect-the-HDMI-jack-PCM-device.patch 0004-alsa-mixer-autodetect-the-ELD-device.patch pulseaudio-glibc2.27.patch - Added patch: OBS-URL: https://build.opensuse.org/request/show/607607 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pulseaudio?expand=0&rev=188 --- ...ix-infinite-loop-with-Intel-HDMI-LPE.patch | 129 --------- ...d-hw_device_index-to-pa_alsa_mapping.patch | 89 ------ ...-autodetect-the-HDMI-jack-PCM-device.patch | 263 ------------------ ...alsa-mixer-autodetect-the-ELD-device.patch | 197 ------------- _service | 7 + pulseaudio-11.1.tar.xz | 3 - pulseaudio-11.99.1.tar.xz | 3 + pulseaudio-glibc2.27.patch | 61 ---- pulseaudio.changes | 35 +++ pulseaudio.spec | 71 ++--- qpaeq-shebang.patch | 8 + 11 files changed, 91 insertions(+), 775 deletions(-) delete mode 100644 0001-alsa-fix-infinite-loop-with-Intel-HDMI-LPE.patch delete mode 100644 0002-alsa-mixer-add-hw_device_index-to-pa_alsa_mapping.patch delete mode 100644 0003-alsa-mixer-autodetect-the-HDMI-jack-PCM-device.patch delete mode 100644 0004-alsa-mixer-autodetect-the-ELD-device.patch create mode 100644 _service delete mode 100644 pulseaudio-11.1.tar.xz create mode 100644 pulseaudio-11.99.1.tar.xz delete mode 100644 pulseaudio-glibc2.27.patch create mode 100644 qpaeq-shebang.patch diff --git a/0001-alsa-fix-infinite-loop-with-Intel-HDMI-LPE.patch b/0001-alsa-fix-infinite-loop-with-Intel-HDMI-LPE.patch deleted file mode 100644 index 2eab1f3..0000000 --- a/0001-alsa-fix-infinite-loop-with-Intel-HDMI-LPE.patch +++ /dev/null @@ -1,129 +0,0 @@ -From 94fc586c011537536cfb434376354699357af785 Mon Sep 17 00:00:00 2001 -From: Tanu Kaskinen -Date: Thu, 28 Dec 2017 12:09:17 +0200 -Subject: [PATCH] alsa: fix infinite loop with Intel HDMI LPE - -The Intel HDMI LPE driver works in a peculiar way when the HDMI cable is -not plugged in: any written audio is immediately discarded and underrun -is reported. That resulted in an infinite loop, because PulseAudio tried -to keep the buffer filled, which was futile since the written audio was -immediately consumed/discarded. - -This patch adds special handling for the LPE driver: if the active port -of the sink is unavailable, the sink suspends itself. A new suspend -cause is added: PA_SUSPEND_UNAVAILABLE. - -BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=100488 ---- - src/modules/alsa/alsa-mixer.h | 1 + - src/modules/alsa/alsa-sink.c | 20 ++++++++++++++++++++ - src/modules/alsa/module-alsa-card.c | 34 ++++++++++++++++++++++++++++++++++ - src/pulsecore/core.h | 1 + - 4 files changed, 56 insertions(+) - ---- a/src/modules/alsa/alsa-mixer.h -+++ b/src/modules/alsa/alsa-mixer.h -@@ -364,6 +364,7 @@ int pa_alsa_set_mixer_rtpoll(struct pa_a - struct pa_alsa_port_data { - pa_alsa_path *path; - pa_alsa_setting *setting; -+ bool suspend_when_unavailable; - }; - - void pa_alsa_add_ports(void *sink_or_source_new_data, pa_alsa_path_set *ps, pa_card *card); ---- a/src/modules/alsa/alsa-sink.c -+++ b/src/modules/alsa/alsa-sink.c -@@ -1513,6 +1513,9 @@ static int sink_set_port_cb(pa_sink *s, - s->set_volume(s); - } - -+ if (data->suspend_when_unavailable) -+ pa_sink_suspend(s, p->available == PA_AVAILABLE_NO, PA_SUSPEND_UNAVAILABLE); -+ - return 0; - } - -@@ -2455,6 +2458,23 @@ pa_sink *pa_alsa_sink_new(pa_module *m, - if (profile_set) - pa_alsa_profile_set_free(profile_set); - -+ /* Suspend if necessary. FIXME: It would be better to start suspended, but -+ * that would require some core changes. It's possible to set -+ * pa_sink_new_data.suspend_cause, but that has to be done before the -+ * pa_sink_new() call, and we know if we need to suspend only after the -+ * pa_sink_new() call when the initial port has been chosen. Calling -+ * pa_sink_suspend() between pa_sink_new() and pa_sink_put() would -+ * otherwise work, but currently pa_sink_suspend() will crash if -+ * pa_sink_put() hasn't been called. */ -+ if (u->sink->active_port) { -+ pa_alsa_port_data *port_data; -+ -+ port_data = PA_DEVICE_PORT_DATA(u->sink->active_port); -+ -+ if (port_data->suspend_when_unavailable && u->sink->active_port->available == PA_AVAILABLE_NO) -+ pa_sink_suspend(u->sink, true, PA_SUSPEND_UNAVAILABLE); -+ } -+ - return u->sink; - - fail: ---- a/src/modules/alsa/module-alsa-card.c -+++ b/src/modules/alsa/module-alsa-card.c -@@ -427,6 +427,22 @@ static int report_jack_state(snd_mixer_e - if (tp->avail == PA_AVAILABLE_NO) - pa_device_port_set_available(tp->port, tp->avail); - -+ for (tp = tports; tp->port; tp++) { -+ pa_alsa_port_data *data; -+ pa_sink *sink; -+ uint32_t idx; -+ -+ data = PA_DEVICE_PORT_DATA(tp->port); -+ -+ if (!data->suspend_when_unavailable) -+ continue; -+ -+ PA_IDXSET_FOREACH(sink, u->core->sinks, idx) { -+ if (sink->active_port == tp->port) -+ pa_sink_suspend(sink, tp->avail == PA_AVAILABLE_NO, PA_SUSPEND_UNAVAILABLE); -+ } -+ } -+ - /* Update profile availabilities. The logic could be improved; for now we - * only set obviously unavailable profiles (those that contain only - * unavailable ports) to PA_AVAILABLE_NO and all others to -@@ -837,6 +853,24 @@ int pa__init(pa_module *m) { - goto fail; - } - -+ /* The Intel HDMI LPE driver needs some special handling. When the HDMI -+ * cable is not plugged in, trying to play audio doesn't work. Any written -+ * audio is immediately discarded and an underrun is reported, and that -+ * results in an infinite loop of "fill buffer, handle underrun". To work -+ * around this issue, the suspend_when_unavailable flag is used to stop -+ * playback when the HDMI cable is unplugged. */ -+ if (pa_safe_streq(pa_proplist_gets(data.proplist, "alsa.driver_name"), "snd_hdmi_lpe_audio")) { -+ pa_device_port *port; -+ void *state; -+ -+ PA_HASHMAP_FOREACH(port, data.ports, state) { -+ pa_alsa_port_data *port_data; -+ -+ port_data = PA_DEVICE_PORT_DATA(port); -+ port_data->suspend_when_unavailable = true; -+ } -+ } -+ - u->card = pa_card_new(m->core, &data); - pa_card_new_data_done(&data); - ---- a/src/pulsecore/core.h -+++ b/src/pulsecore/core.h -@@ -34,6 +34,7 @@ typedef enum pa_suspend_cause { - PA_SUSPEND_SESSION = 8, /* Used by module-hal for mark inactive sessions */ - PA_SUSPEND_PASSTHROUGH = 16, /* Used to suspend monitor sources when the sink is in passthrough mode */ - PA_SUSPEND_INTERNAL = 32, /* This is used for short period server-internal suspends, such as for sample rate updates */ -+ PA_SUSPEND_UNAVAILABLE = 64, /* Used by device implementations that have to suspend when the device is unavailable */ - PA_SUSPEND_ALL = 0xFFFF /* Magic cause that can be used to resume forcibly */ - } pa_suspend_cause_t; - diff --git a/0002-alsa-mixer-add-hw_device_index-to-pa_alsa_mapping.patch b/0002-alsa-mixer-add-hw_device_index-to-pa_alsa_mapping.patch deleted file mode 100644 index e7d7689..0000000 --- a/0002-alsa-mixer-add-hw_device_index-to-pa_alsa_mapping.patch +++ /dev/null @@ -1,89 +0,0 @@ -From 09ff3fca2fa9fe928990b3f0effeb1ddfbba0df1 Mon Sep 17 00:00:00 2001 -From: Tanu Kaskinen -Date: Sun, 8 Oct 2017 19:48:24 +0300 -Subject: [PATCH] alsa-mixer: add hw_device_index to pa_alsa_mapping - -We have so far assumed that HDMI always uses device indexes 3, 7, 8, 9, -10, 11, 12 and 13. These values are hardcoded in the path configuration. -The Intel HDMI LPE driver, however, uses different device numbering -scheme. Since the indexes aren't always the same, we need to query the -hw device index from ALSA. - -Later patches will use the queried index for HDMI jack detection and ELD -information reading. - -BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=100488 ---- - src/modules/alsa/alsa-mixer.c | 26 ++++++++++++++++++++++++++ - src/modules/alsa/alsa-mixer.h | 4 ++++ - 2 files changed, 30 insertions(+) - ---- a/src/modules/alsa/alsa-mixer.c -+++ b/src/modules/alsa/alsa-mixer.c -@@ -3504,6 +3504,7 @@ pa_alsa_mapping *pa_alsa_mapping_get(pa_ - pa_sample_spec_init(&m->sample_spec); - pa_channel_map_init(&m->channel_map); - m->proplist = pa_proplist_new(); -+ m->hw_device_index = -1; - - pa_hashmap_put(ps->mappings, m->name, m); - -@@ -4531,6 +4532,25 @@ static int add_profiles_to_probe( - return i; - } - -+static void mapping_query_hw_device(pa_alsa_mapping *mapping, snd_pcm_t *pcm) { -+ int r; -+ snd_pcm_info_t* pcm_info; -+ snd_pcm_info_alloca(&pcm_info); -+ -+ r = snd_pcm_info(pcm, pcm_info); -+ if (r < 0) { -+ pa_log("Mapping %s: snd_pcm_info() failed %s: ", mapping->name, pa_alsa_strerror(r)); -+ return; -+ } -+ -+ /* XXX: It's not clear what snd_pcm_info_get_device() does if the device is -+ * not backed by a hw device or if it's backed by multiple hw devices. We -+ * only use hw_device_index for HDMI devices, however, and for those the -+ * return value is expected to be always valid, so this shouldn't be a -+ * significant problem. */ -+ mapping->hw_device_index = snd_pcm_info_get_device(pcm_info); -+} -+ - void pa_alsa_profile_set_probe( - pa_alsa_profile_set *ps, - const char *dev_id, -@@ -4621,6 +4641,9 @@ void pa_alsa_profile_set_probe( - } - break; - } -+ -+ if (m->hw_device_index < 0) -+ mapping_query_hw_device(m, m->output_pcm); - } - - if (p->input_mappings && p->supported) -@@ -4642,6 +4665,9 @@ void pa_alsa_profile_set_probe( - } - break; - } -+ -+ if (m->hw_device_index < 0) -+ mapping_query_hw_device(m, m->input_pcm); - } - - last = p; ---- a/src/modules/alsa/alsa-mixer.h -+++ b/src/modules/alsa/alsa-mixer.h -@@ -275,6 +275,10 @@ struct pa_alsa_mapping { - bool exact_channels:1; - bool fallback:1; - -+ /* The "y" in "hw:x,y". This is set to -1 before the device index has been -+ * queried, or if the query failed. */ -+ int hw_device_index; -+ - /* Temporarily used during probing */ - snd_pcm_t *input_pcm; - snd_pcm_t *output_pcm; diff --git a/0003-alsa-mixer-autodetect-the-HDMI-jack-PCM-device.patch b/0003-alsa-mixer-autodetect-the-HDMI-jack-PCM-device.patch deleted file mode 100644 index 869b6d0..0000000 --- a/0003-alsa-mixer-autodetect-the-HDMI-jack-PCM-device.patch +++ /dev/null @@ -1,263 +0,0 @@ -From 67f11ff30177d40e408523bdce0eeff27b8e6f9b Mon Sep 17 00:00:00 2001 -From: Tanu Kaskinen -Date: Sun, 8 Oct 2017 19:48:25 +0300 -Subject: [PATCH] alsa-mixer: autodetect the HDMI jack PCM device - -This removes the need to hardcode the PCM device index in the HDMI jack -names. The hardcoded values don't work with the Intel HDMI LPE driver. - -BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=100488 ---- - src/modules/alsa/alsa-mixer.c | 53 +++++++++++++++-- - src/modules/alsa/alsa-mixer.h | 4 - - src/modules/alsa/alsa-sink.c | 2 - src/modules/alsa/alsa-source.c | 2 - src/modules/alsa/mixer/paths/analog-output.conf.common | 4 + - src/modules/alsa/mixer/paths/hdmi-output-0.conf | 3 - src/modules/alsa/mixer/paths/hdmi-output-1.conf | 3 - src/modules/alsa/mixer/paths/hdmi-output-2.conf | 3 - src/modules/alsa/mixer/paths/hdmi-output-3.conf | 3 - src/modules/alsa/mixer/paths/hdmi-output-4.conf | 3 - src/modules/alsa/mixer/paths/hdmi-output-5.conf | 3 - src/modules/alsa/mixer/paths/hdmi-output-6.conf | 3 - src/modules/alsa/mixer/paths/hdmi-output-7.conf | 3 - 13 files changed, 73 insertions(+), 16 deletions(-) - ---- a/src/modules/alsa/alsa-mixer.c -+++ b/src/modules/alsa/alsa-mixer.c -@@ -1812,12 +1812,31 @@ static int element_probe(pa_alsa_element - return 0; - } - --static int jack_probe(pa_alsa_jack *j, snd_mixer_t *m) { -+static int jack_probe(pa_alsa_jack *j, pa_alsa_mapping *mapping, snd_mixer_t *m) { - bool has_control; - - pa_assert(j); - pa_assert(j->path); - -+ if (j->append_pcm_to_name) { -+ char *new_name; -+ -+ if (!mapping) { -+ /* This could also be an assertion, because this should never -+ * happen. At the time of writing, mapping can only be NULL when -+ * module-alsa-sink/source synthesizes a path, and those -+ * synthesized paths never have any jacks, so jack_probe() should -+ * never be called with a NULL mapping. */ -+ pa_log("Jack %s: append_pcm_to_name is set, but mapping is NULL. Can't use this jack.", j->name); -+ return -1; -+ } -+ -+ new_name = pa_sprintf_malloc("%s,pcm=%i Jack", j->name, mapping->hw_device_index); -+ pa_xfree(j->alsa_name); -+ j->alsa_name = new_name; -+ j->append_pcm_to_name = false; -+ } -+ - has_control = pa_alsa_mixer_find(m, j->alsa_name, 0) != NULL; - pa_alsa_jack_set_has_control(j, has_control); - -@@ -2326,6 +2345,30 @@ static int jack_parse_state(pa_config_pa - return 0; - } - -+static int jack_parse_append_pcm_to_name(pa_config_parser_state *state) { -+ pa_alsa_path *path; -+ pa_alsa_jack *jack; -+ int b; -+ -+ pa_assert(state); -+ -+ path = state->userdata; -+ if (!(jack = jack_get(path, state->section))) { -+ pa_log("[%s:%u] Option 'append_pcm_to_name' not expected in section '%s'", -+ state->filename, state->lineno, state->section); -+ return -1; -+ } -+ -+ b = pa_parse_boolean(state->rvalue); -+ if (b < 0) { -+ pa_log("[%s:%u] Invalid value for 'append_pcm_to_name': %s", state->filename, state->lineno, state->rvalue); -+ return -1; -+ } -+ -+ jack->append_pcm_to_name = b; -+ return 0; -+} -+ - static int element_set_option(pa_alsa_element *e, snd_mixer_t *m, int alsa_idx) { - snd_mixer_selem_id_t *sid; - snd_mixer_elem_t *me; -@@ -2533,6 +2576,7 @@ pa_alsa_path* pa_alsa_path_new(const cha - /* [Jack ...] */ - { "state.plugged", jack_parse_state, NULL, NULL }, - { "state.unplugged", jack_parse_state, NULL, NULL }, -+ { "append-pcm-to-name", jack_parse_append_pcm_to_name, NULL, NULL }, - - /* [Element ...] */ - { "switch", element_parse_switch, NULL, NULL }, -@@ -2745,7 +2789,7 @@ static void path_create_settings(pa_alsa - element_create_settings(p->elements, NULL); - } - --int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, bool ignore_dB) { -+int pa_alsa_path_probe(pa_alsa_path *p, pa_alsa_mapping *mapping, snd_mixer_t *m, bool ignore_dB) { - pa_alsa_element *e; - pa_alsa_jack *j; - double min_dB[PA_CHANNEL_POSITION_MAX], max_dB[PA_CHANNEL_POSITION_MAX]; -@@ -2765,7 +2809,7 @@ int pa_alsa_path_probe(pa_alsa_path *p, - pa_log_debug("Probing path '%s'", p->name); - - PA_LLIST_FOREACH(j, p->jacks) { -- if (jack_probe(j, m) < 0) { -+ if (jack_probe(j, mapping, m) < 0) { - p->supported = false; - pa_log_debug("Probe of jack '%s' failed.", j->alsa_name); - return -1; -@@ -3967,9 +4011,8 @@ static void mapping_paths_probe(pa_alsa_ - } - - PA_HASHMAP_FOREACH(p, ps->paths, state) { -- if (pa_alsa_path_probe(p, mixer_handle, m->profile_set->ignore_dB) < 0) { -+ if (pa_alsa_path_probe(p, m, mixer_handle, m->profile_set->ignore_dB) < 0) - pa_hashmap_remove(ps->paths, p); -- } - } - - path_set_condense(ps, mixer_handle); ---- a/src/modules/alsa/alsa-mixer.h -+++ b/src/modules/alsa/alsa-mixer.h -@@ -171,6 +171,8 @@ struct pa_alsa_jack { - - pa_dynarray *ucm_devices; /* pa_alsa_ucm_device */ - pa_dynarray *ucm_hw_mute_devices; /* pa_alsa_ucm_device */ -+ -+ bool append_pcm_to_name; - }; - - pa_alsa_jack *pa_alsa_jack_new(pa_alsa_path *path, const char *name); -@@ -234,7 +236,7 @@ void pa_alsa_element_dump(pa_alsa_elemen - - pa_alsa_path *pa_alsa_path_new(const char *paths_dir, const char *fname, pa_alsa_direction_t direction); - pa_alsa_path *pa_alsa_path_synthesize(const char *element, pa_alsa_direction_t direction); --int pa_alsa_path_probe(pa_alsa_path *p, snd_mixer_t *m, bool ignore_dB); -+int pa_alsa_path_probe(pa_alsa_path *p, pa_alsa_mapping *mapping, snd_mixer_t *m, bool ignore_dB); - void pa_alsa_path_dump(pa_alsa_path *p); - int pa_alsa_path_get_volume(pa_alsa_path *p, snd_mixer_t *m, const pa_channel_map *cm, pa_cvolume *v); - int pa_alsa_path_get_mute(pa_alsa_path *path, snd_mixer_t *m, bool *muted); ---- a/src/modules/alsa/alsa-sink.c -+++ b/src/modules/alsa/alsa-sink.c -@@ -1917,7 +1917,7 @@ static void find_mixer(struct userdata * - if (!(u->mixer_path = pa_alsa_path_synthesize(element, PA_ALSA_DIRECTION_OUTPUT))) - goto fail; - -- if (pa_alsa_path_probe(u->mixer_path, u->mixer_handle, ignore_dB) < 0) -+ if (pa_alsa_path_probe(u->mixer_path, NULL, u->mixer_handle, ignore_dB) < 0) - goto fail; - - pa_log_debug("Probed mixer path %s:", u->mixer_path->name); ---- a/src/modules/alsa/alsa-source.c -+++ b/src/modules/alsa/alsa-source.c -@@ -1615,7 +1615,7 @@ static void find_mixer(struct userdata * - if (!(u->mixer_path = pa_alsa_path_synthesize(element, PA_ALSA_DIRECTION_INPUT))) - goto fail; - -- if (pa_alsa_path_probe(u->mixer_path, u->mixer_handle, ignore_dB) < 0) -+ if (pa_alsa_path_probe(u->mixer_path, NULL, u->mixer_handle, ignore_dB) < 0) - goto fail; - - pa_log_debug("Probed mixer path %s:", u->mixer_path->name); ---- a/src/modules/alsa/mixer/paths/analog-output.conf.common -+++ b/src/modules/alsa/mixer/paths/analog-output.conf.common -@@ -122,6 +122,10 @@ - ; # the required-any are present. - ; state.plugged = yes | no | unknown # Normally a plugged jack would mean the port becomes available, and an unplugged means it's - ; state.unplugged = yes | no | unknown # unavailable, but the port status can be overridden by specifying state.plugged and/or state.unplugged. -+; append-pcm-to-name = no | yes # Add ",pcm=N" to the jack name? N is the hw PCM device index. HDMI jacks have -+; # the PCM device index in their name, but different drivers use different -+; # numbering schemes, so we can't hardcode the full jack name in our configuration -+; # files. - - [Element PCM] - switch = mute ---- a/src/modules/alsa/mixer/paths/hdmi-output-0.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-0.conf -@@ -6,5 +6,6 @@ eld-device = 3 - [Properties] - device.icon_name = video-display - --[Jack HDMI/DP,pcm=3] -+[Jack HDMI/DP] -+append-pcm-to-name = yes - required = ignore ---- a/src/modules/alsa/mixer/paths/hdmi-output-1.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-1.conf -@@ -6,5 +6,6 @@ eld-device = 7 - [Properties] - device.icon_name = video-display - --[Jack HDMI/DP,pcm=7] -+[Jack HDMI/DP] -+append-pcm-to-name = yes - required = ignore ---- a/src/modules/alsa/mixer/paths/hdmi-output-2.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-2.conf -@@ -6,5 +6,6 @@ eld-device = 8 - [Properties] - device.icon_name = video-display - --[Jack HDMI/DP,pcm=8] -+[Jack HDMI/DP] -+append-pcm-to-name = yes - required = ignore ---- a/src/modules/alsa/mixer/paths/hdmi-output-3.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-3.conf -@@ -6,5 +6,6 @@ eld-device = 9 - [Properties] - device.icon_name = video-display - --[Jack HDMI/DP,pcm=9] -+[Jack HDMI/DP] -+append-pcm-to-name = yes - required = ignore ---- a/src/modules/alsa/mixer/paths/hdmi-output-4.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-4.conf -@@ -6,5 +6,6 @@ eld-device = 10 - [Properties] - device.icon_name = video-display - --[Jack HDMI/DP,pcm=10] -+[Jack HDMI/DP] -+append-pcm-to-name = yes - required = ignore ---- a/src/modules/alsa/mixer/paths/hdmi-output-5.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-5.conf -@@ -6,5 +6,6 @@ eld-device = 11 - [Properties] - device.icon_name = video-display - --[Jack HDMI/DP,pcm=11] -+[Jack HDMI/DP] -+append-pcm-to-name = yes - required = ignore ---- a/src/modules/alsa/mixer/paths/hdmi-output-6.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-6.conf -@@ -6,5 +6,6 @@ eld-device = 12 - [Properties] - device.icon_name = video-display - --[Jack HDMI/DP,pcm=12] -+[Jack HDMI/DP] -+append-pcm-to-name = yes - required = ignore ---- a/src/modules/alsa/mixer/paths/hdmi-output-7.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-7.conf -@@ -6,5 +6,6 @@ eld-device = 13 - [Properties] - device.icon_name = video-display - --[Jack HDMI/DP,pcm=13] -+[Jack HDMI/DP] -+append-pcm-to-name = yes - required = ignore diff --git a/0004-alsa-mixer-autodetect-the-ELD-device.patch b/0004-alsa-mixer-autodetect-the-ELD-device.patch deleted file mode 100644 index a47074d..0000000 --- a/0004-alsa-mixer-autodetect-the-ELD-device.patch +++ /dev/null @@ -1,197 +0,0 @@ -From 72fa468a45031ba4be4d24d70fddf282b5c9da66 Mon Sep 17 00:00:00 2001 -From: Tanu Kaskinen -Date: Sun, 8 Oct 2017 19:48:26 +0300 -Subject: [PATCH] alsa-mixer: autodetect the ELD device - -This removes the need to hardcode the ELD device index in the path -configuration. The hardcoded values don't work with the Intel HDMI LPE -driver. - -BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=100488 ---- - src/modules/alsa/alsa-mixer.c | 28 +++++++++++++++-- - src/modules/alsa/alsa-mixer.h | 1 - src/modules/alsa/mixer/paths/analog-output.conf.common | 8 +++- - src/modules/alsa/mixer/paths/hdmi-output-0.conf | 2 - - src/modules/alsa/mixer/paths/hdmi-output-1.conf | 2 - - src/modules/alsa/mixer/paths/hdmi-output-2.conf | 2 - - src/modules/alsa/mixer/paths/hdmi-output-3.conf | 2 - - src/modules/alsa/mixer/paths/hdmi-output-4.conf | 2 - - src/modules/alsa/mixer/paths/hdmi-output-5.conf | 2 - - src/modules/alsa/mixer/paths/hdmi-output-6.conf | 2 - - src/modules/alsa/mixer/paths/hdmi-output-7.conf | 2 - - 11 files changed, 41 insertions(+), 12 deletions(-) - ---- a/src/modules/alsa/alsa-mixer.c -+++ b/src/modules/alsa/alsa-mixer.c -@@ -2051,6 +2051,28 @@ static int element_parse_enumeration(pa_ - return 0; - } - -+static int parse_eld_device(pa_config_parser_state *state) { -+ pa_alsa_path *path; -+ uint32_t eld_device; -+ -+ path = state->userdata; -+ -+ if (pa_atou(state->rvalue, &eld_device) >= 0) { -+ path->autodetect_eld_device = false; -+ path->eld_device = eld_device; -+ return 0; -+ } -+ -+ if (pa_streq(state->rvalue, "auto")) { -+ path->autodetect_eld_device = true; -+ path->eld_device = -1; -+ return 0; -+ } -+ -+ pa_log("[%s:%u] Invalid value for option 'eld-device': %s", state->filename, state->lineno, state->rvalue); -+ return -1; -+} -+ - static int option_parse_priority(pa_config_parser_state *state) { - pa_alsa_path *p; - pa_alsa_option *o; -@@ -2567,7 +2589,7 @@ pa_alsa_path* pa_alsa_path_new(const cha - { "description-key", pa_config_parse_string, NULL, "General" }, - { "description", pa_config_parse_string, NULL, "General" }, - { "mute-during-activation", pa_config_parse_bool, NULL, "General" }, -- { "eld-device", pa_config_parse_int, NULL, "General" }, -+ { "eld-device", parse_eld_device, NULL, "General" }, - - /* [Option ...] */ - { "priority", option_parse_priority, NULL, NULL }, -@@ -2607,7 +2629,6 @@ pa_alsa_path* pa_alsa_path_new(const cha - items[1].data = &p->description_key; - items[2].data = &p->description; - items[3].data = &mute_during_activation; -- items[4].data = &p->eld_device; - - if (!paths_dir) - paths_dir = get_default_paths_dir(); -@@ -4011,6 +4032,9 @@ static void mapping_paths_probe(pa_alsa_ - } - - PA_HASHMAP_FOREACH(p, ps->paths, state) { -+ if (p->autodetect_eld_device) -+ p->eld_device = m->hw_device_index; -+ - if (pa_alsa_path_probe(p, m, mixer_handle, m->profile_set->ignore_dB) < 0) - pa_hashmap_remove(ps->paths, p); - } ---- a/src/modules/alsa/alsa-mixer.h -+++ b/src/modules/alsa/alsa-mixer.h -@@ -193,6 +193,7 @@ struct pa_alsa_path { - char *description_key; - char *description; - unsigned priority; -+ bool autodetect_eld_device; - int eld_device; - pa_proplist *proplist; - ---- a/src/modules/alsa/mixer/paths/analog-output.conf.common -+++ b/src/modules/alsa/mixer/paths/analog-output.conf.common -@@ -64,8 +64,12 @@ - ; mute-during-activation = yes | no # If this path supports hardware mute, should the hw mute be used while activating this - ; # path? In some cases this can reduce extra noises during port switching, while in other - ; # cases this can increase such noises. Default: no. --; eld-device = ... # If this is an HDMI port, here's where to specify the device number for the ELD mixer --; # control. The default is to not make use of ELD information. -+; eld-device = ... # If this is an HDMI port, set to "auto" so that PulseAudio will try to read -+; # the monitor ELD information from the ALSA mixer. By default the ELD information -+; # is not read, because it's only applicable with HDMI. Earlier the "auto" option -+; # didn't exist, and the hw device index had to be manually configured. For -+; # backwards compatibility, it's still possible to manually configure the device -+; # index using this option. - ; - ; [Properties] # Property list for this path. The list is merged into the port property list. - ; = # Each property is defined on its own line. ---- a/src/modules/alsa/mixer/paths/hdmi-output-0.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-0.conf -@@ -1,7 +1,7 @@ - [General] - description = HDMI / DisplayPort - priority = 59 --eld-device = 3 -+eld-device = auto - - [Properties] - device.icon_name = video-display ---- a/src/modules/alsa/mixer/paths/hdmi-output-1.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-1.conf -@@ -1,7 +1,7 @@ - [General] - description = HDMI / DisplayPort 2 - priority = 58 --eld-device = 7 -+eld-device = auto - - [Properties] - device.icon_name = video-display ---- a/src/modules/alsa/mixer/paths/hdmi-output-2.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-2.conf -@@ -1,7 +1,7 @@ - [General] - description = HDMI / DisplayPort 3 - priority = 57 --eld-device = 8 -+eld-device = auto - - [Properties] - device.icon_name = video-display ---- a/src/modules/alsa/mixer/paths/hdmi-output-3.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-3.conf -@@ -1,7 +1,7 @@ - [General] - description = HDMI / DisplayPort 4 - priority = 56 --eld-device = 9 -+eld-device = auto - - [Properties] - device.icon_name = video-display ---- a/src/modules/alsa/mixer/paths/hdmi-output-4.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-4.conf -@@ -1,7 +1,7 @@ - [General] - description = HDMI / DisplayPort 5 - priority = 55 --eld-device = 10 -+eld-device = auto - - [Properties] - device.icon_name = video-display ---- a/src/modules/alsa/mixer/paths/hdmi-output-5.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-5.conf -@@ -1,7 +1,7 @@ - [General] - description = HDMI / DisplayPort 6 - priority = 54 --eld-device = 11 -+eld-device = auto - - [Properties] - device.icon_name = video-display ---- a/src/modules/alsa/mixer/paths/hdmi-output-6.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-6.conf -@@ -1,7 +1,7 @@ - [General] - description = HDMI / DisplayPort 7 - priority = 53 --eld-device = 12 -+eld-device = auto - - [Properties] - device.icon_name = video-display ---- a/src/modules/alsa/mixer/paths/hdmi-output-7.conf -+++ b/src/modules/alsa/mixer/paths/hdmi-output-7.conf -@@ -1,7 +1,7 @@ - [General] - description = HDMI / DisplayPort 8 - priority = 52 --eld-device = 13 -+eld-device = auto - - [Properties] - device.icon_name = video-display diff --git a/_service b/_service new file mode 100644 index 0000000..3300e83 --- /dev/null +++ b/_service @@ -0,0 +1,7 @@ + + + pulseaudio-11.99.1.tar.xz + sha1 + f42fc78635e97dc6337408fb8dbf936b6ae0d34f + + diff --git a/pulseaudio-11.1.tar.xz b/pulseaudio-11.1.tar.xz deleted file mode 100644 index 69d59cf..0000000 --- a/pulseaudio-11.1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f2521c525a77166189e3cb9169f75c2ee2b82fa3fcf9476024fbc2c3a6c9cd9e -size 1648924 diff --git a/pulseaudio-11.99.1.tar.xz b/pulseaudio-11.99.1.tar.xz new file mode 100644 index 0000000..e299e1b --- /dev/null +++ b/pulseaudio-11.99.1.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b786deb178cc2c51e067b2f07096e2c89fd95e014049397e1ee4d5b2bcbd92a +size 1655948 diff --git a/pulseaudio-glibc2.27.patch b/pulseaudio-glibc2.27.patch deleted file mode 100644 index 0dfa5b0..0000000 --- a/pulseaudio-glibc2.27.patch +++ /dev/null @@ -1,61 +0,0 @@ -From dfb0460fb4743aec047cdf755a660a9ac2d0f3fb Mon Sep 17 00:00:00 2001 -From: Tanu Kaskinen -Date: Wed, 24 Jan 2018 03:51:49 +0200 -Subject: [PATCH] memfd-wrappers: only define memfd_create() if not already - defined - -glibc 2.27 is to be released soon, and it will provide memfd_create(). -If glibc provides the function, we must not define it ourselves, -otherwise building fails due to conflict between the two implementations -of the same function. - -BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=104733 ---- - configure.ac | 3 +++ - src/pulsecore/memfd-wrappers.h | 7 ++++--- - 2 files changed, 7 insertions(+), 3 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 0084c86e4..0eb44b08f 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -610,6 +610,9 @@ AS_IF([test "x$enable_memfd" = "xyes" && test "x$HAVE_MEMFD" = "x0"], - [AC_MSG_ERROR([*** Your Linux kernel does not support memfd shared memory. - *** Use linux v3.17 or higher for such a feature.])]) - -+AS_IF([test "x$HAVE_MEMFD" = "x1"], -+ AC_CHECK_FUNCS([memfd_create])) -+ - AC_SUBST(HAVE_MEMFD) - AM_CONDITIONAL([HAVE_MEMFD], [test "x$HAVE_MEMFD" = x1]) - AS_IF([test "x$HAVE_MEMFD" = "x1"], AC_DEFINE([HAVE_MEMFD], 1, [Have memfd shared memory.])) -diff --git a/src/pulsecore/memfd-wrappers.h b/src/pulsecore/memfd-wrappers.h -index 3bed9b2b1..c7aadfd3c 100644 ---- a/src/pulsecore/memfd-wrappers.h -+++ b/src/pulsecore/memfd-wrappers.h -@@ -20,13 +20,14 @@ - License along with PulseAudio; if not, see . - ***/ - --#ifdef HAVE_MEMFD -+#if defined(HAVE_MEMFD) && !defined(HAVE_MEMFD_CREATE) - - #include - #include - - /* -- * No glibc wrappers exist for memfd_create(2), so provide our own. -+ * Before glibc version 2.27 there was no wrapper for memfd_create(2), -+ * so we have to provide our own. - * - * Also define memfd fcntl sealing macros. While they are already - * defined in the kernel header file , that file as -@@ -63,6 +64,6 @@ static inline int memfd_create(const char *name, unsigned int flags) { - #define F_SEAL_WRITE 0x0008 /* prevent writes */ - #endif - --#endif /* HAVE_MEMFD */ -+#endif /* HAVE_MEMFD && !HAVE_MEMFD_CREATE */ - - #endif - diff --git a/pulseaudio.changes b/pulseaudio.changes index 990e314..7dc1b0e 100644 --- a/pulseaudio.changes +++ b/pulseaudio.changes @@ -1,3 +1,38 @@ +------------------------------------------------------------------- +Tue May 15 12:27:13 UTC 2018 - oholecek@suse.com + +- Update to 12 RC1 (11.99.1) + * Much more accurate latency reporting for AirPlay devices + * module-switch-on-connect now ignores virtual devices + * When using passthrough for compressed audio, set the "non-audio" bit + * Prioritize HDMI output over S/PDIF output + * HSP support for more bluetooth headsets + * Choose the A2DP bluetooth profile by default instead of HSP + * New "sink_input_properties" module argument for module-ladspa-sink + * New "use_system_clock_for_timing" module argument for module-pipe-sink + * Steelseries Arctis 7 USB headset stereo output support + * Dell Thunderbolt Dock TB16 speaker jack support + * Fixed digital input support for some USB sound cards + * Ability to disable input or output on macOS + * New "dereverb" option for the Speex echo canceller + * New module: module-always-source + * State files not any more readable by all users in the system mode + * module-augment-properties now uses XDG_DATA_DIRS to find .desktop files + * The GConf dependency can now be avoided + * qpaeq license changed from AGPL to LGPL + * qpaeq ported to Qt 5 +- Add subpackage module-gsettings (conflicts with module-gconf) +- Remove support for obsolete Bluez4 +- Fix build phase running configure twice +- Removed patches: + 0001-alsa-fix-infinite-loop-with-Intel-HDMI-LPE.patch + 0002-alsa-mixer-add-hw_device_index-to-pa_alsa_mapping.patch + 0003-alsa-mixer-autodetect-the-HDMI-jack-PCM-device.patch + 0004-alsa-mixer-autodetect-the-ELD-device.patch + pulseaudio-glibc2.27.patch +- Added patch: + qpaeq-shebang.patch + ------------------------------------------------------------------- Thu Apr 19 11:35:58 UTC 2018 - fcrozat@suse.com diff --git a/pulseaudio.spec b/pulseaudio.spec index bfccc5c..9d21522 100644 --- a/pulseaudio.spec +++ b/pulseaudio.spec @@ -21,18 +21,13 @@ %define _fillupdir /var/adm/fillup-templates %endif -%define drvver 11.1 +%define drvver 11.99 %define soname 0 %define _udevrulesdir %(pkg-config --variable=udevdir udev)/rules.d %define _fwdefdir %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services -# store bluez version from bluez-devel and check for bluez4/5 -# _bluezVersion is than also used in requires for bluetooth subpackage -# once oS 12.3 is EOL, this can be removed as there will probably be nothing providing bluez4 -%define _bluezVersion %(LC_ALL="C" rpm --qf '%%{VERSION}' -q bluez-devel | grep -v 'not installed') -%define _bluez5used 0%(echo "%{_bluezVersion}" | grep -q '^5' && echo 1) %define _bashcompletionsdir %{_datadir}/bash-completion/completions Name: pulseaudio -Version: 11.1 +Version: 11.99.1 Release: 0 Summary: A Networked Sound Server License: GPL-2.0+ AND LGPL-2.1+ @@ -49,17 +44,11 @@ Source99: baselibs.conf Patch0: disabled-start.diff Patch1: suppress-socket-error-msg.diff Patch2: pulseaudio-wrong-memset.patch -# PATCH-FIX-UPSTREAM pulseaudio-glibc2.27.patch boo#1081023 fdo#104733 dimstar@opensuse.org -- Fix build with glibc 2.27 -Patch3: pulseaudio-glibc2.27.patch Patch4: pa-set-exit-idle-time-to-0-when-we-detect-a-session.patch -# upstream fixes for crash with Intel LPE HDMI audio -Patch5: 0001-alsa-fix-infinite-loop-with-Intel-HDMI-LPE.patch -Patch6: 0002-alsa-mixer-add-hw_device_index-to-pa_alsa_mapping.patch -Patch7: 0003-alsa-mixer-autodetect-the-HDMI-jack-PCM-device.patch -Patch8: 0004-alsa-mixer-autodetect-the-ELD-device.patch +# PATCH-FIX-OPENSUSE qpaeq-shebang.patch Avoid rpmlint error due to using env python shebang +Patch5: qpaeq-shebang.patch BuildRequires: alsa-devel >= 1.0.19 -# require only minimal bluez, if we are on bluez 5 we will determine in build phase -BuildRequires: bluez-devel >= 4.99 +BuildRequires: bluez-devel >= 5 BuildRequires: doxygen BuildRequires: fdupes BuildRequires: fftw3-devel >= 3.0 @@ -213,7 +202,7 @@ This package includes support for Jack-based applications. Summary: Bluetooth support for the PulseAudio sound server Group: System/Sound Daemons Requires: %{name} = %{version} -Requires: bluez >= %{_bluezVersion} +Requires: bluez >= 5 Supplements: packageand(pulseaudio:bluez) %description module-bluetooth @@ -227,6 +216,7 @@ Contains Bluetooth audio (A2DP/HSP/HFP) support for the PulseAudio sound server. Summary: GCONF module for PulseAudio Group: System/Sound Daemons Requires: %{name} = %{version} +Conflicts: %{name}-module-gsettings %description module-gconf pulseaudio is a networked sound server for Linux and other Unix like @@ -235,6 +225,19 @@ improved drop-in replacement for the Enlightened Sound Daemon (ESOUND). This package provides gconf storage of PulseAudio sound server settings. +%package module-gsettings +Summary: GSettings module for PulseAudio +Group: System/Sound Daemons +Requires: %{name} = %{version} +Conflicts: %{name}-module-gconf + +%description module-gsettings +pulseaudio is a networked sound server for Linux and other Unix like +operating systems and Microsoft Windows. It is intended to be an +improved drop-in replacement for the Enlightened Sound Daemon (ESOUND). + +This package provides GSettings storage of PulseAudio sound server settings. + %package -n libpulse%{soname} Summary: Client interface to PulseAudio Group: System/Libraries @@ -338,15 +341,11 @@ Optional dependency offering zsh completion for various PulseAudio utilities %patch0 %patch1 -p1 %patch2 -%patch3 -p1 %patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 +%patch5 %build -./bootstrap.sh +NOCONFIGURE=1 ./bootstrap.sh echo 'HTML_TIMESTAMP=NO' >> doxygen/doxygen.conf.in export LDFLAGS="-pie" export CFLAGS="%{optflags} -fPIE" @@ -360,11 +359,11 @@ export CFLAGS="%{optflags} -fPIE" --with-system-group=pulse \ --with-access-group=pulse-access \ --disable-hal-compat \ -%if 0%{?_bluez5used} --disable-bluez4 \ -%else - --disable-bluez5 \ -%endif + --enable-webrtc-aec \ + --enable-adrian-aec \ + --enable-gconf \ + --enable-gsettings \ --with-udev-rules-dir=%{_udevrulesdir} \ --with-pulsedsp-location='%{_prefix}/\\$$LIB/pulseaudio' @@ -475,6 +474,7 @@ exit 0 %{_libdir}/pulse-%{drvver}/modules/module-alsa-sink.so %{_libdir}/pulse-%{drvver}/modules/module-alsa-source.so %{_libdir}/pulse-%{drvver}/modules/module-always-sink.so +%{_libdir}/pulse-%{drvver}/modules/module-always-source.so %{_libdir}/pulse-%{drvver}/modules/module-allow-passthrough.so %{_libdir}/pulse-%{drvver}/modules/module-augment-properties.so %{_libdir}/pulse-%{drvver}/modules/module-card-restore.so @@ -605,21 +605,16 @@ exit 0 %files -n libpulse-mainloop-glib%{soname} %{_libdir}/libpulse-mainloop-glib.so.%{soname} %{_libdir}/libpulse-mainloop-glib.so.%{soname}.* +%{_datadir}/glib-2.0/schemas/org.freedesktop.pulseaudio.gschema.xml %files module-bluetooth %dir %{_libdir}/pulse-%{drvver} %dir %{_libdir}/pulse-%{drvver}/modules %{_libdir}/pulse-%{drvver}/modules/module-bluetooth-policy.so %{_libdir}/pulse-%{drvver}/modules/module-bluetooth-discover.so -%if 0%{?_bluez5used} %{_libdir}/pulse-%{drvver}/modules/libbluez5-util.so %{_libdir}/pulse-%{drvver}/modules/module-bluez5-device.so %{_libdir}/pulse-%{drvver}/modules/module-bluez5-discover.so -%else -%{_libdir}/pulse-%{drvver}/modules/libbluez4-util.so -%{_libdir}/pulse-%{drvver}/modules/module-bluez4-device.so -%{_libdir}/pulse-%{drvver}/modules/module-bluez4-discover.so -%endif %files module-gconf %dir %{_libexecdir}/pulse @@ -628,6 +623,16 @@ exit 0 %{_libdir}/pulse-%{drvver}/modules/module-gconf.so %{_libexecdir}/pulse/gconf-helper +%files module-gsettings +%dir %{_libexecdir}/pulse +%dir %{_libdir}/pulse-%{drvver} +%dir %{_libdir}/pulse-%{drvver}/modules +%dir %{_datarootdir}/GConf +%dir %{_datarootdir}/GConf/gsettings +%{_libdir}/pulse-%{drvver}/modules/module-gsettings.so +%{_libexecdir}/pulse/gsettings-helper +%{_datadir}/GConf/gsettings/pulseaudio.convert + %files module-lirc %dir %{_libdir}/pulse-%{drvver} %dir %{_libdir}/pulse-%{drvver}/modules diff --git a/qpaeq-shebang.patch b/qpaeq-shebang.patch new file mode 100644 index 0000000..eb14145 --- /dev/null +++ b/qpaeq-shebang.patch @@ -0,0 +1,8 @@ +--- src/utils/qpaeq.org 2018-05-15 14:12:16.038877587 +0200 ++++ src/utils/qpaeq 2018-05-15 14:12:49.002967454 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python ++#!/usr/bin/python + # qpaeq is a equalizer interface for pulseaudio's equalizer sinks + # Copyright (C) 2009 Jason Newton Date: Tue, 15 May 2018 14:35:08 +0000 Subject: [PATCH 2/2] Accepting request 607629 from home:oholecek:branches:multimedia:libs Remove _service based file checksum verification OBS-URL: https://build.opensuse.org/request/show/607629 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/pulseaudio?expand=0&rev=189 --- _service | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 _service diff --git a/_service b/_service deleted file mode 100644 index 3300e83..0000000 --- a/_service +++ /dev/null @@ -1,7 +0,0 @@ - - - pulseaudio-11.99.1.tar.xz - sha1 - f42fc78635e97dc6337408fb8dbf936b6ae0d34f - -