Репозитории ALT
S: | 1.2.8-alt1 |
D: | 1.0.16-alt1 |
5.1: | 1.0.21a-alt1 |
4.1: | 1.0.15-alt1 |
4.0: | 1.0.14a-alt2.1 |
+updates: | 1.0.14a-alt2.1 |
3.0: | 1.0.9-alt7 |
Группа :: Система/Библиотеки
Пакет: libalsa
Главная Изменения Спек Патчи Sources Загрузить Gear Bugs and FR Repocop
Патч: libalsa-1.2.5-alt1.1.patch
Скачать
Скачать
...estore-loading-usr-share-alsa-alsa.conf.d.patch | 24 +
.gear/alsa-git.patch | 728 +++++++++++++++++++++
.gear/rules | 3 +
.../tags/92b7901e91970934918b1b06a774793f4c57da7b | 214 ++++++
.gear/tags/list | 1 +
asound.conf.sonicvibes_2 | 54 ++
libalsa.spec | 602 +++++++++++++++++
7 files changed, 1626 insertions(+)
diff --git a/.gear/0001-Restore-loading-usr-share-alsa-alsa.conf.d.patch b/.gear/0001-Restore-loading-usr-share-alsa-alsa.conf.d.patch
new file mode 100644
index 00000000..4eeac0a8
--- /dev/null
+++ b/.gear/0001-Restore-loading-usr-share-alsa-alsa.conf.d.patch
@@ -0,0 +1,24 @@
+From c5a7a1f4739c961b19922b1dd6b6be60972ed4cf Mon Sep 17 00:00:00 2001
+From: Mikhail Novosyolov <mikhailnov@dumalogiya.ru>
+Date: Mon, 18 Feb 2019 01:53:21 +0300
+Subject: [PATCH] Restore loading /usr/share/alsa/alsa.conf.d/*
+
+---
+ src/conf/alsa.conf | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/conf/alsa.conf b/src/conf/alsa.conf
+index bb00ff40..e6c4a5f6 100644
+--- a/src/conf/alsa.conf
++++ b/src/conf/alsa.conf
+@@ -10,6 +10,7 @@
+ files [
+ "/usr/etc/alsa/conf.d"
+ "/etc/alsa/conf.d"
++ "/usr/share/alsa/alsa.conf.d"
+ "/etc/asound.conf|||/usr/etc/asound.conf"
+ "~/.asoundrc"
+ {
+--
+2.19.2
+
diff --git a/.gear/alsa-git.patch b/.gear/alsa-git.patch
new file mode 100644
index 00000000..b42c2d23
--- /dev/null
+++ b/.gear/alsa-git.patch
@@ -0,0 +1,728 @@
+From ddfc32abf5697de1618b9e7ffdf57a0f97013090 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 08:49:32 +0200
+Subject: [PATCH 01/18] conf: fix load_for_all_cards()
+
+The 63f7745b commit is loading the driver specific configuration
+multiple times which ends with the array merges (see the bug).
+
+Introduce the loaded compound which traces the already loaded
+driver configurations and skip the multiple load requests.
+
+Fixes: https://github.com/alsa-project/alsa-lib/issues/143
+Fixes: 63f7745b ("conf: extend load_for_all_cards hook (id/value table)")
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/conf.c | 33 ++++++++++++++++++++++++++++-----
+ 1 file changed, 28 insertions(+), 5 deletions(-)
+
+diff --git a/src/conf.c b/src/conf.c
+index f6c80031..d863dec6 100644
+--- a/src/conf.c
++++ b/src/conf.c
+@@ -4325,18 +4325,23 @@ static int _snd_config_hook_table(snd_config_t *root, snd_config_t *config, snd_
+ int snd_config_hook_load_for_all_cards(snd_config_t *root, snd_config_t *config, snd_config_t **dst, snd_config_t *private_data ATTRIBUTE_UNUSED)
+ {
+ int card = -1, err;
++ snd_config_t *loaded; // trace loaded cards
+
++ err = snd_config_top(&loaded);
++ if (err < 0)
++ return err;
+ do {
+ err = snd_card_next(&card);
+ if (err < 0)
+- return err;
++ goto __fin_err;
+ if (card >= 0) {
+- snd_config_t *n, *private_data = NULL;
++ snd_config_t *n, *m, *private_data = NULL;
+ const char *driver;
+ char *fdriver = NULL;
++ bool load;
+ err = snd_determine_driver(card, &fdriver);
+ if (err < 0)
+- return err;
++ goto __fin_err;
+ if (snd_config_search(root, fdriver, &n) >= 0) {
+ if (snd_config_get_string(n, &driver) < 0) {
+ if (snd_config_get_type(n) == SND_CONFIG_TYPE_COMPOUND) {
+@@ -4357,6 +4362,19 @@ int snd_config_hook_load_for_all_cards(snd_config_t *root, snd_config_t *config,
+ driver = fdriver;
+ }
+ __std:
++ load = true;
++ err = snd_config_imake_integer(&m, driver, 1);
++ if (err < 0)
++ goto __err;
++ err = snd_config_add(loaded, m);
++ if (err < 0) {
++ if (err == -EEXIST) {
++ snd_config_delete(m);
++ load = false;
++ } else {
++ goto __err;
++ }
++ }
+ private_data = _snd_config_hook_private_data(card, driver);
+ if (!private_data) {
+ err = -ENOMEM;
+@@ -4365,17 +4383,22 @@ int snd_config_hook_load_for_all_cards(snd_config_t *root, snd_config_t *config,
+ err = _snd_config_hook_table(root, config, private_data);
+ if (err < 0)
+ goto __err;
+- err = snd_config_hook_load(root, config, &n, private_data);
++ if (load)
++ err = snd_config_hook_load(root, config, &n, private_data);
+ __err:
+ if (private_data)
+ snd_config_delete(private_data);
+ free(fdriver);
+ if (err < 0)
+- return err;
++ goto __fin_err;
+ }
+ } while (card >= 0);
++ snd_config_delete(loaded);
+ *dst = NULL;
+ return 0;
++__fin_err:
++ snd_config_delete(loaded);
++ return err;
+ }
+ #ifndef DOC_HIDDEN
+ SND_DLSYM_BUILD_VERSION(snd_config_hook_load_for_all_cards, SND_CONFIG_DLSYM_VERSION_HOOK);
+--
+2.30.2
+
+
+From 0e4ba2ea8c0402f12a645032a14693eb9b1278e6 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 11:09:43 +0200
+Subject: [PATCH 02/18] ucm: add _alibpref to get the private device prefix
+
+It may be useful to get the device prefix for the local configuration.
+
+Link: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1251
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ include/use-case.h | 1 +
+ src/ucm/main.c | 21 +++++++++++++++++++++
+ 2 files changed, 22 insertions(+)
+
+diff --git a/include/use-case.h b/include/use-case.h
+index ec1a97b0..7890358b 100644
+--- a/include/use-case.h
++++ b/include/use-case.h
+@@ -258,6 +258,7 @@ int snd_use_case_get_list(snd_use_case_mgr_t *uc_mgr,
+ * - _verb - return current verb
+ * - _file - return configuration file loaded for current card
+ * - _alibcfg - return private alsa-lib's configuration for current card
++ * - _alibpref - return private alsa-lib's configuration device prefix for current card
+ *
+ * - [=]{NAME}[/[{modifier}|{/device}][/{verb}]]
+ * - value identifier {NAME}
+diff --git a/src/ucm/main.c b/src/ucm/main.c
+index 361952f6..3c9ea15d 100644
+--- a/src/ucm/main.c
++++ b/src/ucm/main.c
+@@ -2138,6 +2138,25 @@ static int get_alibcfg(snd_use_case_mgr_t *uc_mgr, char **str)
+ return 0;
+ }
+
++/**
++ * \brief Get device prefix for private alsa-lib configuration
++ * \param uc_mgr Use case manager
++ * \param str Returned value string
++ * \return Zero on success (value is filled), otherwise a negative error code
++ */
++static int get_alibpref(snd_use_case_mgr_t *uc_mgr, char **str)
++{
++ const size_t l = 9;
++ char *s;
++
++ s = malloc(l);
++ if (s == NULL)
++ return -ENOMEM;
++ snprintf(s, l, "_ucm%04X", uc_mgr->ucm_card_number);
++ *str = s;
++ return 0;
++}
++
+ /**
+ * \brief Get current - string
+ * \param uc_mgr Use case manager
+@@ -2193,6 +2212,8 @@ int snd_use_case_get(snd_use_case_mgr_t *uc_mgr,
+
+ } else if (strcmp(identifier, "_alibcfg") == 0) {
+ err = get_alibcfg(uc_mgr, (char **)value);
++ } else if (strcmp(identifier, "_alibpref") == 0) {
++ err = get_alibpref(uc_mgr, (char **)value);
+ } else if (identifier[0] == '_') {
+ err = -ENOENT;
+ } else {
+--
+2.30.2
+
+
+From 9621d0bff2e60b43e329ffa5059ab19f2914ec14 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 11:21:54 +0200
+Subject: [PATCH 03/18] ucm: fix _alibpref string (add '.' delimiter to the
+ end)
+
+Fixes: 0e4ba2ea ("ucm: add _alibpref to get the private device prefix")
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/ucm/main.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/ucm/main.c b/src/ucm/main.c
+index 3c9ea15d..c9b37b68 100644
+--- a/src/ucm/main.c
++++ b/src/ucm/main.c
+@@ -2146,13 +2146,13 @@ static int get_alibcfg(snd_use_case_mgr_t *uc_mgr, char **str)
+ */
+ static int get_alibpref(snd_use_case_mgr_t *uc_mgr, char **str)
+ {
+- const size_t l = 9;
++ const size_t l = 10;
+ char *s;
+
+ s = malloc(l);
+ if (s == NULL)
+ return -ENOMEM;
+- snprintf(s, l, "_ucm%04X", uc_mgr->ucm_card_number);
++ snprintf(s, l, "_ucm%04X.", uc_mgr->ucm_card_number);
+ *str = s;
+ return 0;
+ }
+--
+2.30.2
+
+
+From 2a1dafdbe5932260aeb4db359ce5d630b8106889 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:26:47 +0200
+Subject: [PATCH 04/18] conf: remove dead code in snd_config_get_card()
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/confmisc.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/confmisc.c b/src/confmisc.c
+index 3663d164..a561040c 100644
+--- a/src/confmisc.c
++++ b/src/confmisc.c
+@@ -154,10 +154,10 @@ int snd_config_get_card(const snd_config_t *conf)
+ long v;
+ int err;
+
+- if ((err = snd_config_get_integer(conf, &v)) < 0) {
++ if (snd_config_get_integer(conf, &v) < 0) {
+ if ((err = snd_config_get_string(conf, &str)) < 0) {
+- snd_config_get_id(conf, &id);
+- SNDERR("Invalid field %s", id);
++ if (snd_config_get_id(conf, &id) >= 0)
++ SNDERR("Invalid field %s", id);
+ return -EINVAL;
+ }
+ err = snd_card_get_index(str);
+--
+2.30.2
+
+
+From 013ec607db9de11b682f2b85d843be062ca0d046 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:28:32 +0200
+Subject: [PATCH 05/18] control: remap - fix uninitialized value in
+ parse_map_vindex()
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/control/control_remap.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/control/control_remap.c b/src/control/control_remap.c
+index f3d65010..17c6558a 100644
+--- a/src/control/control_remap.c
++++ b/src/control/control_remap.c
+@@ -1040,7 +1040,7 @@ static int parse_map_vindex(struct snd_ctl_map_ctl *mctl, snd_config_t *conf)
+
+ snd_config_for_each(i, next, conf) {
+ snd_config_t *n = snd_config_iterator_entry(i);
+- long idx, chn;
++ long idx = -1, chn = -1;
+ const char *id;
+ if (snd_config_get_id(n, &id) < 0)
+ continue;
+--
+2.30.2
+
+
+From 2fee6af9b6e157475159d284af8de1e879bb7a36 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:35:44 +0200
+Subject: [PATCH 06/18] pcm: direct - fix pcmp error path in
+ _snd_pcm_direct_new()
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/pcm/pcm_direct.c | 21 ++++++++++++---------
+ 1 file changed, 12 insertions(+), 9 deletions(-)
+
+diff --git a/src/pcm/pcm_direct.c b/src/pcm/pcm_direct.c
+index 0e5e0421..361805bd 100644
+--- a/src/pcm/pcm_direct.c
++++ b/src/pcm/pcm_direct.c
+@@ -2126,24 +2126,20 @@ int _snd_pcm_direct_new(snd_pcm_t **pcmp, snd_pcm_direct_t **_dmix, int type,
+ dmix->type = type;
+
+ ret = snd_pcm_new(pcmp, type, name, stream, mode);
+- if (ret < 0) {
+-_err_nosem:
+- free(dmix->bindings);
+- free(dmix);
+- return ret;
+- }
++ if (ret < 0)
++ goto _err_nosem;
+
+ while (1) {
+ ret = snd_pcm_direct_semaphore_create_or_connect(dmix);
+ if (ret < 0) {
+ SNDERR("unable to create IPC semaphore");
+- goto _err_nosem;
++ goto _err_nosem_free;
+ }
+ ret = snd_pcm_direct_semaphore_down(dmix, DIRECT_IPC_SEM_CLIENT);
+ if (ret < 0) {
+ snd_pcm_direct_semaphore_discard(dmix);
+ if (--fail_sem_loop <= 0)
+- goto _err_nosem;
++ goto _err_nosem_free;
+ continue;
+ }
+ break;
+@@ -2153,10 +2149,17 @@ _err_nosem:
+ if (ret < 0) {
+ SNDERR("unable to create IPC shm instance");
+ snd_pcm_direct_semaphore_up(dmix, DIRECT_IPC_SEM_CLIENT);
+- goto _err_nosem;
++ goto _err_nosem_free;
+ } else {
+ *_dmix = dmix;
+ }
+
++ return ret;
++_err_nosem_free:
++ snd_pcm_free(*pcmp);
++ *pcmp = NULL;
++_err_nosem:
++ free(dmix->bindings);
++ free(dmix);
+ return ret;
+ }
+--
+2.30.2
+
+
+From eb95cad4e22a0bf2577f1fa4a3f6fd18caed3362 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:37:53 +0200
+Subject: [PATCH 07/18] pcm: remove extra NULL checks in snd_pcm_dmix_open()
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/pcm/pcm_dmix.c | 11 ++++-------
+ 1 file changed, 4 insertions(+), 7 deletions(-)
+
+diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c
+index 8747450f..608593f1 100644
+--- a/src/pcm/pcm_dmix.c
++++ b/src/pcm/pcm_dmix.c
+@@ -998,7 +998,7 @@ int snd_pcm_dmix_open(snd_pcm_t **pcmp, const char *name,
+ snd_config_t *root, snd_config_t *sconf,
+ snd_pcm_stream_t stream, int mode)
+ {
+- snd_pcm_t *pcm = NULL, *spcm = NULL;
++ snd_pcm_t *pcm, *spcm = NULL;
+ snd_pcm_direct_t *dmix;
+ int ret, first_instance;
+
+@@ -1154,12 +1154,9 @@ int snd_pcm_dmix_open(snd_pcm_t **pcmp, const char *name,
+ } else
+ snd_pcm_direct_semaphore_up(dmix, DIRECT_IPC_SEM_CLIENT);
+ _err_nosem:
+- if (dmix) {
+- free(dmix->bindings);
+- free(dmix);
+- }
+- if (pcm)
+- snd_pcm_free(pcm);
++ free(dmix->bindings);
++ free(dmix);
++ snd_pcm_free(pcm);
+ return ret;
+ }
+
+--
+2.30.2
+
+
+From 01a45aec6fcd5a5378a5b5e0ae0f9dacde2068e4 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:39:32 +0200
+Subject: [PATCH 08/18] pcm: remove extra NULL checks in snd_pcm_dsnoop_open()
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/pcm/pcm_dsnoop.c | 13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+diff --git a/src/pcm/pcm_dsnoop.c b/src/pcm/pcm_dsnoop.c
+index fb1b02c2..2c3b9f43 100644
+--- a/src/pcm/pcm_dsnoop.c
++++ b/src/pcm/pcm_dsnoop.c
+@@ -564,8 +564,8 @@ int snd_pcm_dsnoop_open(snd_pcm_t **pcmp, const char *name,
+ snd_config_t *root, snd_config_t *sconf,
+ snd_pcm_stream_t stream, int mode)
+ {
+- snd_pcm_t *pcm = NULL, *spcm = NULL;
+- snd_pcm_direct_t *dsnoop = NULL;
++ snd_pcm_t *pcm, *spcm = NULL;
++ snd_pcm_direct_t *dsnoop;
+ int ret, first_instance;
+
+ assert(pcmp);
+@@ -708,12 +708,9 @@ int snd_pcm_dsnoop_open(snd_pcm_t **pcmp, const char *name,
+ snd_pcm_direct_semaphore_up(dsnoop, DIRECT_IPC_SEM_CLIENT);
+
+ _err_nosem:
+- if (dsnoop) {
+- free(dsnoop->bindings);
+- free(dsnoop);
+- }
+- if (pcm)
+- snd_pcm_free(pcm);
++ free(dsnoop->bindings);
++ free(dsnoop);
++ snd_pcm_free(pcm);
+ return ret;
+ }
+
+--
+2.30.2
+
+
+From 74c6382df6cf18b801659d8c5c53407a7ea1f02b Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:46:46 +0200
+Subject: [PATCH 09/18] pcm: remove extra NULL checks in snd_pcm_dshare_open()
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/pcm/pcm_dshare.c | 13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+diff --git a/src/pcm/pcm_dshare.c b/src/pcm/pcm_dshare.c
+index 0f5238a6..a918512b 100644
+--- a/src/pcm/pcm_dshare.c
++++ b/src/pcm/pcm_dshare.c
+@@ -690,8 +690,8 @@ int snd_pcm_dshare_open(snd_pcm_t **pcmp, const char *name,
+ snd_config_t *root, snd_config_t *sconf,
+ snd_pcm_stream_t stream, int mode)
+ {
+- snd_pcm_t *pcm = NULL, *spcm = NULL;
+- snd_pcm_direct_t *dshare = NULL;
++ snd_pcm_t *pcm, *spcm = NULL;
++ snd_pcm_direct_t *dshare;
+ int ret, first_instance;
+ unsigned int chn;
+
+@@ -851,12 +851,9 @@ int snd_pcm_dshare_open(snd_pcm_t **pcmp, const char *name,
+ } else
+ snd_pcm_direct_semaphore_up(dshare, DIRECT_IPC_SEM_CLIENT);
+ _err_nosem:
+- if (dshare) {
+- free(dshare->bindings);
+- free(dshare);
+- }
+- if (pcm)
+- snd_pcm_free(pcm);
++ free(dshare->bindings);
++ free(dshare);
++ snd_pcm_free(pcm);
+ return ret;
+ }
+
+--
+2.30.2
+
+
+From eabadf545c51d4c88c5f359db73726ec3ac653ba Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:49:29 +0200
+Subject: [PATCH 10/18] pcm: softvol - fix early exit in add_tlv_info()
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/pcm/pcm_softvol.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/pcm/pcm_softvol.c b/src/pcm/pcm_softvol.c
+index e2bdd31a..eea322ca 100644
+--- a/src/pcm/pcm_softvol.c
++++ b/src/pcm/pcm_softvol.c
+@@ -711,13 +711,13 @@ static int add_tlv_info(snd_pcm_softvol_t *svol, snd_ctl_elem_info_t *cinfo,
+ unsigned int *old_tlv, size_t old_tlv_size)
+ {
+ unsigned int tlv[4];
+- if (sizeof(tlv) <= old_tlv_size && memcmp(tlv, old_tlv, sizeof(tlv)) == 0)
+- return 0;
+ tlv[SNDRV_CTL_TLVO_TYPE] = SND_CTL_TLVT_DB_SCALE;
+ tlv[SNDRV_CTL_TLVO_LEN] = 2 * sizeof(int);
+ tlv[SNDRV_CTL_TLVO_DB_SCALE_MIN] = (int)(svol->min_dB * 100);
+ tlv[SNDRV_CTL_TLVO_DB_SCALE_MUTE_AND_STEP] =
+ (int)((svol->max_dB - svol->min_dB) * 100 / svol->max_val);
++ if (sizeof(tlv) <= old_tlv_size && memcmp(tlv, old_tlv, sizeof(tlv)) == 0)
++ return 0;
+ return snd_ctl_elem_tlv_write(svol->ctl, &cinfo->id, tlv);
+ }
+
+--
+2.30.2
+
+
+From cf3846d46053b23006e6a9042b586fc78e81af55 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:50:17 +0200
+Subject: [PATCH 11/18] timer: remove dead code in _snd_timer_hw_open()
+
+---
+ src/timer/timer_hw.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/timer/timer_hw.c b/src/timer/timer_hw.c
+index cfb77463..fe4e40bb 100644
+--- a/src/timer/timer_hw.c
++++ b/src/timer/timer_hw.c
+@@ -330,8 +330,6 @@ int _snd_timer_hw_open(snd_timer_t **timer, char *name,
+ SNDERR("Unexpected field %s", id);
+ return -EINVAL;
+ }
+- if (card < 0)
+- return -EINVAL;
+ return snd_timer_hw_open(timer, name, dev_class, dev_sclass, card, device, subdevice, mode);
+ }
+ SND_DLSYM_BUILD_VERSION(_snd_timer_hw_open, SND_TIMER_DLSYM_VERSION);
+--
+2.30.2
+
+
+From 200d18cda7a700607c21ad5dc9faaea2a1e27dbd Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:51:13 +0200
+Subject: [PATCH 12/18] ucm: fix error path in execute_cfgsave()
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/ucm/main.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/ucm/main.c b/src/ucm/main.c
+index c9b37b68..42fdaa1d 100644
+--- a/src/ucm/main.c
++++ b/src/ucm/main.c
+@@ -605,8 +605,10 @@ static int execute_cfgsave(snd_use_case_mgr_t *uc_mgr, const char *filename)
+ uc_error("unable to open file '%s': %s", file, snd_strerror(err));
+ goto _err;
+ }
+- if (!config || snd_config_is_empty(config))
++ if (!config || snd_config_is_empty(config)) {
++ snd_output_close(out);
+ goto _err;
++ }
+ if (with_root) {
+ snd_output_printf(out, "%s ", root);
+ err = _snd_config_save_node_value(config, out, 0);
+--
+2.30.2
+
+
+From 9b71d53bde21c8bb0d900c17863664e12753d844 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:52:12 +0200
+Subject: [PATCH 13/18] ucm: fix use after free in if_eval_regex_match()
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/ucm/ucm_cond.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/ucm/ucm_cond.c b/src/ucm/ucm_cond.c
+index 59d1a155..adb0ecd9 100644
+--- a/src/ucm/ucm_cond.c
++++ b/src/ucm/ucm_cond.c
+@@ -160,11 +160,12 @@ static int if_eval_regex_match(snd_use_case_mgr_t *uc_mgr, snd_config_t *eval)
+ if (err < 0)
+ return err;
+ err = regcomp(&re, s, options);
+- free(s);
+ if (err) {
+ uc_error("Regex '%s' compilation failed (code %d)", s, err);
++ free(s);
+ return -EINVAL;
+ }
++ free(s);
+
+ err = uc_mgr_get_substituted_value(uc_mgr, &s, string);
+ if (err < 0) {
+--
+2.30.2
+
+
+From 7764e3e621a4c8a52327833d44e32c8b6fe3a131 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:53:24 +0200
+Subject: [PATCH 14/18] ucm: fix if_eval_path() - access NULL pointer
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/ucm/ucm_cond.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ucm/ucm_cond.c b/src/ucm/ucm_cond.c
+index adb0ecd9..0ed0b690 100644
+--- a/src/ucm/ucm_cond.c
++++ b/src/ucm/ucm_cond.c
+@@ -272,7 +272,7 @@ static int if_eval_control_exists(snd_use_case_mgr_t *uc_mgr, snd_config_t *eval
+
+ static int if_eval_path(snd_use_case_mgr_t *uc_mgr, snd_config_t *eval)
+ {
+- const char *path, *mode = NULL;
++ const char *path, *mode = "";
+ int err, amode = F_OK;
+
+ if (uc_mgr->conf_format < 4) {
+--
+2.30.2
+
+
+From 7fcb1aadd56e94f03e51c4747e72d77279151c22 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:56:01 +0200
+Subject: [PATCH 15/18] ucm: find_exec() - fix memory leak (dir)
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/ucm/ucm_exec.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/ucm/ucm_exec.c b/src/ucm/ucm_exec.c
+index a22df8fe..1cdb2633 100644
+--- a/src/ucm/ucm_exec.c
++++ b/src/ucm/ucm_exec.c
+@@ -73,6 +73,7 @@ static int find_exec(const char *name, char *out, size_t len)
+ || !(st.st_mode & S_IEXEC))
+ continue;
+ snd_strlcpy(out, bin, len);
++ closedir(dir);
+ return 1;
+ }
+ closedir(dir);
+--
+2.30.2
+
+
+From 26ab7fc3e4cba416cf51aa0fb48fdddaa0d861ee Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:58:04 +0200
+Subject: [PATCH 16/18] ucm: fix possible NULL pointer dereference in
+ uc_mgr_exec()
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/ucm/ucm_exec.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/ucm/ucm_exec.c b/src/ucm/ucm_exec.c
+index 1cdb2633..d83206d0 100644
+--- a/src/ucm/ucm_exec.c
++++ b/src/ucm/ucm_exec.c
+@@ -185,7 +185,11 @@ int uc_mgr_exec(const char *prog)
+ return -EINVAL;
+
+ prog = argv[0];
+- if (argv[0][0] != '/' && argv[0][0] != '.') {
++ if (prog == NULL) {
++ err = -EINVAL;
++ goto __error;
++ }
++ if (prog[0] != '/' && prog[0] != '.') {
+ if (!find_exec(argv[0], bin, sizeof(bin))) {
+ err = -ENOEXEC;
+ goto __error;
+--
+2.30.2
+
+
+From 64a6d4d1e827732bef7c68e1e6d2cb6863b4597c Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 19:59:10 +0200
+Subject: [PATCH 17/18] ucm: check error value in parse_lookup_query()
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/ucm/ucm_subs.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/ucm/ucm_subs.c b/src/ucm/ucm_subs.c
+index c56730c5..0bc4e63f 100644
+--- a/src/ucm/ucm_subs.c
++++ b/src/ucm/ucm_subs.c
+@@ -224,7 +224,11 @@ static snd_config_t *parse_lookup_query(const char *query)
+ uc_error("unable to create memory input buffer");
+ return NULL;
+ }
+- snd_config_top(&config);
++ err = snd_config_top(&config);
++ if (err < 0) {
++ snd_input_close(input);
++ return NULL;
++ }
+ err = snd_config_load(config, input);
+ snd_input_close(input);
+ if (err < 0) {
+--
+2.30.2
+
+
+From 30d1d256e792fbabf14c57efb98c489541b19f37 Mon Sep 17 00:00:00 2001
+From: Jaroslav Kysela <perex@perex.cz>
+Date: Wed, 2 Jun 2021 20:01:08 +0200
+Subject: [PATCH 18/18] ucm: fix out-of-array access in
+ rval_device_lookup_init()
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
+---
+ src/ucm/ucm_subs.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ucm/ucm_subs.c b/src/ucm/ucm_subs.c
+index 0bc4e63f..20905c3f 100644
+--- a/src/ucm/ucm_subs.c
++++ b/src/ucm/ucm_subs.c
+@@ -489,7 +489,7 @@ static int rval_device_lookup_init(snd_use_case_mgr_t *uc_mgr,
+ uc_error("Missing device type!");
+ return -EINVAL;
+ }
+- for (t = types; t; t++)
++ for (t = types; t->name; t++)
+ if (strcasecmp(t->name, s) == 0)
+ return t->init(iter, config);
+ uc_error("Device type '%s' is invalid", s);
+--
+2.30.2
+
diff --git a/.gear/rules b/.gear/rules
new file mode 100644
index 00000000..48de7f62
--- /dev/null
+++ b/.gear/rules
@@ -0,0 +1,3 @@
+copy: .gear/*.patch
+tar: v@version@:.
+diff: v@version@:. .
diff --git a/.gear/tags/92b7901e91970934918b1b06a774793f4c57da7b b/.gear/tags/92b7901e91970934918b1b06a774793f4c57da7b
new file mode 100644
index 00000000..aee5c3c0
--- /dev/null
+++ b/.gear/tags/92b7901e91970934918b1b06a774793f4c57da7b
@@ -0,0 +1,214 @@
+object 9f16fa572947044468695e956a654d4ea07f264f
+type commit
+tag v1.2.5
+tagger Jaroslav Kysela <perex@perex.cz> 1622454708 +0200
+
+Release v1.2.5
+
+Core
+ - Release v1.2.5
+ - control: add missing src/conf/ctl/Makefile.am
+ - ucm: add LibraryConfig support
+ - control: remap plugin - initial version
+ - configure: bumb version to 1.2.5pre1 (for CI tests)
+Config API
+ - conf: add snd_config_make_path() function
+ - conf: add snd_config_is_empty() function
+ - conf: add snd_config_merge() function
+ - conf: introduce snd_config_get_card() function
+Control API
+ - control: remap - add no-op when the remapping is not active
+ - control: remap - don't allow I/O on renamed IDs
+ - ucm: add LibraryConfig support
+ - control: add empty plugin
+ - control: remap plugin - add docs
+ - control: doc - create controls plugin page
+ - control: remap plugin - initial version
+ - control: add _snd_ctl_open_child()
+ - control: shm - add missing continue to _snd_ctl_shm_open()
+ - ucm: move __snd_ctl_ascii_elem_id_parse prototype to control_local.h
+ - control: add __snd_ctl_add_elem_set() helper
+ - control: add snd_ctl_elem_id_compare_numid() function
+ - control: rename snd_ctl_elem_id_compare() to snd_ctl_elem_id_compare_set()
+ - control: fix the subdevice fields comparison in snd_ctl_elem_id_compare()
+ - control: better docs for snd_ctl_elem_id_compare()
+ - control: add snd_ctl_elem_id_compare() function
+ - control: snd_ctl_ascii_elem_id_get() - do not show unset numid
+ - conf: introduce snd_config_get_card() function
+ - control: improve snd_ctl_add_*_elem_set functions (access flags)
+ - control: fix iformation -> information typos
+Control Plugin API
+ - control: remap plugin - add docs
+ - control: doc - create controls plugin page
+HWDEP API
+ - conf: introduce snd_config_get_card() function
+I/O API
+ - output: Add snd_output_buffer_steal() function
+Mixer API
+ - mixer: simple - Fix "Capture Volume" and "Capture Switch" being seen as global controls
+ - mixer: simple - use for loop in base_len()
+ - mixer: simple - Unify simple_none: base_len() exception handling
+PCM API
+ - pcm: hw - correct the comment in snd_pcm_hw_state()
+ - pcm: hw - fix again snd_pcm_hw_state() when the driver was disconnected
+ - pcm: hw - fix snd_pcm_hw_state()
+ - pcm: fix open in direct plugins - wrong pointer assignment
+ - pcm: direct - move the direct struct init to _snd_pcm_direct_new()
+ - pcm: dshare - fix shared memory pointer check
+ - ucm: add LibraryConfig support
+ - pcm: empty plugin - fix the docs
+ - pcm: softvol - improve TLV data check for new configs
+ - pcm: fix snd_pcm_plugin_status()
+ - conf: introduce snd_config_get_card() function
+ - pcm: softvol - make snd_pcm_parse_control_id private
+ - pcm: softvol - do not set TLV access flags for the switch
+ - pcm: pcm_ioplug - fix the avail_update mmap capture copy issue
+ - pcm: share: Pass appl_ptr and hw_ptr in snd_pcm_status()
+ - pcm: null: Pass appl_ptr and hw_ptr in snd_pcm_status()
+ - pcm: ioplug: Pass appl_ptr and hw_ptr in snd_pcm_status()
+ - pcm: direct: Fix the missing appl_ptr update
+ - pcm: dmix/dshare - delay calculation fixes and cleanups
+ - pcm_plugin: set the initial hw_ptr/appl_ptr from the child pcm
+ - pcm: rate - fix the capture delay values
+ - pcm: rate - use pcm_frame_diff() on related places
+ - pcm: plugin - fix status code for capture
+ - pcm: rate - use pcm_frame_diff() in snd_pcm_rate_playback_internal_delay()
+ - pcm: ioplug - fix the delay calculation for old plugins
+ - pcm: rate - tidy up snd_pcm_rate_avail_update()
+ - pcm: ioplug - fix the delay calculation in the status callback
+ - Revert "pcm_plugin: fix delay"
+ - pcm: plugin - optimize sync in snd_pcm_plugin_status()
+ - pcm: plugin - tidy snd_pcm_plugin_avail_update()
+ - pcm: plugin status - revert the recent changes
+ - pcm: plugin status - fix the return value (regression)
+ - pcm: fix __snd_pcm_state() return value
+ - pcm_multi: remove dead assignment from _snd_pcm_multi_open
+ - pcm: remove dead assignments from snd_pcm_rate_(commit_area|grab_next_period)
+ - pcm: Fix a typo in SND_PCM_AUDIO_TSTAMP_TYPE_LAST definition
+ - pcm: Add snd_pcm_audio_tstamp_type_t constants
+ - pcm: set the snd_pcm_ioplug_status() tstamp field
+ - pcm: snd_pcm_mmap_readi - fix typo in comment
+RawMidi API
+ - ucm: add LibraryConfig support
+ - conf: introduce snd_config_get_card() function
+ - rawmidi: fix memory leak in snd_rawmidi_virtual_open
+Sequencer API
+ - seq: fix snd_seq_parse_address()
+ - ucm: add LibraryConfig support
+Timer API
+ - timer: fix sizeof operator mismatch in snd_timer_query_hw_open
+Topology API
+ - topology/pcm.c: remove duplicated AC97 hw format
+ - topology: fix 'parse_tuple_set() - remove dead condition code'
+ - topology: sort_config() cleanups - use goto for the error path
+ - topology: parse_tuple_set() - remove dead condition code
+ - topology: tplg_decode_pcm() - add missing log argument (compress)
+ - topology: tplg_add_widget_object() - do not use invalid elem_ctl
+ - topology: tplg_pprint_integer() fix coverity uninitalized variable error
+ - topology: use inclusive language in documentation
+ - topology: use inclusive language for fsync
+ - topology: use inclusive language for bclk
+Use Case Manager API
+ - ucm: compound_merge - use snd_config_merge()
+ - ucm: recognize first '-' character as ignore error for exec/shell
+ - ucm: cfg-save - allow to save the sub-tree including root keys
+ - ucm: libconfig - merge not override items
+ - ucm: libconfig parser - fix memory leaks
+ - ucm: add cfg-save command
+ - ucm: fix memory leak in execute_cset()
+ - ucm: parse LibraryConfig also in the toplevel file
+ - ucm: fix regexec() REG_NOMATCH state handling for define regex
+ - ucm: add exec sequence command
+ - ucm: Fix sysw sequence command not working when requesting to ignore errors
+ - ucm: fix the local ucm control device name caching
+ - ucm: limit the master config scan to conf.virt.d
+ - ucm: fixed find-device substitution (non-continuous PCM devices)
+ - ucm: allow to escape the trailing variable substitution character
+ - ucm: find-device / pcm - the ctl_list may be empty
+ - ucm: add missing uc_mgr_card_close() call to snd_use_case_mgr_open()
+ - ucm: cosmetic code reshuffle in rval_lookup_main()
+ - ucm: fix uc_mgr_has_local_config()
+ - ucm: rewrite device value only when the local config exists
+ - ucm: return error if fixedboot_list is empty
+ - ucm: return error if boot_list is empty
+ - ucm: ucm_filename() - avoid double //
+ - ucm: handle better the system() call
+ - ucm: add LibraryConfig support
+ - ucm: add ${ConfLibDir} substitution
+ - ucm: add ctl-remove sequence command to delete controls from UCM
+ - ucm: add cset-new sequence command to create new controls from UCM
+ - ucm: move __snd_ctl_ascii_elem_id_parse prototype to control_local.h
+ - ucm: add Path condition type
+ - ucm: rename sysset to sysw
+ - ucm: warn about unknown sequence commands
+ - ucm: implement sysset sequence command
+ - ucm: ucm_main.c - cosmetic tab cleanups
+ - ucm: add _fboot / FixedBootSequence
+ - ucm: fix two error messages
+ - ucm: add ${find-card} and ${find-device} substitutions
+ - ucm: uc_mgr_substitute_tree() fix use after free
+ - ucm: fix possible memory leak in parse_verb_file()
+ - ucm: fix bad frees in get_list0 and get_list20
+/Makefile.am
+ - Makefile: Add README.md to EXTRA_DIST
+/include/Makefile.am
+ - include: try to fix the out-of-source-tree build
+ - include: fix out-of-source-tree build
+ - include: fix SND_LIB_VER() macro
+ - include: add SND_LIB_VER() macro
+ - control: remap plugin - add docs
+Configuration
+ - conf: snd_config_merge() - substitute non-compound config handles
+ - conf: snd_config_merge() - merge (concat) correctly arrays
+ - conf: return count of items in snd_config_is_array()
+ - conf: print quoted string more wisely
+ - ucm: cfg-save - allow to save the sub-tree including root keys
+ - conf: fix snd_config_merge() - merge schema
+ - conf: load the card specific configurations to the config sub-tree
+ - conf: add snd_config_make_path() function
+ - conf: add snd_config_is_empty() function
+ - conf: _snd_config_evaluate - remove 'delete compound members' call
+ - conf: fix snd_config_substitute() - memory leak
+ - conf: fix snd_config_merge() - double free in overwrite mode
+ - alsa: conf - use card number roots for device redirects
+ - conf: extend load_for_all_cards hook (id/value table)
+ - control: add missing src/conf/ctl/Makefile.am
+ - conf: usb - correct 'SB Omni Surround 5.1' iec958 device
+ - conf: USB - add "Cmedia Audio" to USB-Audio.pcm.iec958_device
+ - Remove non-existent SPDIF output on Dell AE515
+ - conf: No SPDIF on Plantronics 3220 headset
+ - conf: add snd_config_merge() function
+ - conf: add /var/lib/alsa/conf.d directory lookup
+ - conf: add /var/lib/alsa/card<NUMBER>.conf.d directory lookups
+ - conf: extend hook load_for_all_cards
+ - conf: make ctl.default and sysdefault devices more universal
+ - conf: Fix invalid free at parse_args()
+ - conf: fix memory leak on the error path in parse_args()
+ - conf: snd_config_save() - print arrays as [] not the internal representation
+ - conf: improve the tabulator level prints
+ - conf: introduce snd_config_get_card() function
+ - conf: HDA-Intel: increase the max number of HDMI/DP output to 11
+ - conf: USB - add "Xonar U7 MKII" to USB-Audio.pcm.iec958_device
+ - conf: fix return code in _snd_config_load_with_include
+ - confmisc: fix memory leak in snd_func_concat
+ - conf: fix get_hexachar() return value
+ - conf: fix use after free in _snd_config_load_with_include
+Documentation
+ - control: doc - create controls plugin page
+Dynamic Loader helpers
+ - dlmisc: fix snd_plugin_dir locking for not DL_ORIGIN_AVAILABLE
+ - dlmisc: the snd_plugin_dir_set / snd_plugin_dir must be declared even for \!DL_ORIGIN_AVAILABLE
+I/O subsystem
+ - output: Add snd_output_buffer_steal() function
+Kernel Headers
+ - topology: use inclusive language for fsync
+ - topology: use inclusive language for bclk
+Test/Example code
+ - test: audio_time - fix timestamp2ns() and usage()
+ - test/audio_time: Make use of SND_PCM_AUDIO_TSTAMP_TYPE constants
+Utils
+ - utils/alsa.m4: another quick fix for the brackets
+ - utils/alsa.m4: a quick fix for missing end brackets
+ - utils/alsa.m4: update for newer autoconf.
+
+Signed-off-by: Jaroslav Kysela <perex@perex.cz>
diff --git a/.gear/tags/list b/.gear/tags/list
new file mode 100644
index 00000000..8a3f32d4
--- /dev/null
+++ b/.gear/tags/list
@@ -0,0 +1 @@
+92b7901e91970934918b1b06a774793f4c57da7b v1.2.5
diff --git a/asound.conf.sonicvibes_2 b/asound.conf.sonicvibes_2
new file mode 100644
index 00000000..cae792ea
--- /dev/null
+++ b/asound.conf.sonicvibes_2
@@ -0,0 +1,54 @@
+pcm.!default {
+ type plug
+ slave.pcm "asymed"
+}
+
+pcm.asymed {
+ type asym
+ playback.pcm "swmixer"
+ capture.pcm "mixin"
+}
+
+pcm.dsp0 {
+ type plug
+ slave.pcm "asymed"
+}
+
+pcm.swmixer {
+ type dmix
+ ipc_key 1234
+ slowptr yes
+ slave {
+ pcm "hw:0,0"
+ period_time 0
+ period_size 1024
+ buffer_size 4096
+ #rate 48000
+ rate 44100
+ }
+}
+
+ctl.dmixer {
+ type hw
+ card 0
+}
+
+pcm.mixin {
+ type dsnoop
+ ipc_key 5978293 # must be unique for all dmix plugins!!!!
+ ipc_key_add_uid yes
+ slave {
+ pcm "hw:0,0"
+ channels 2
+ period_size 1024
+ buffer_size 4096
+ #rate 48000
+ rate 44100
+ periods 0
+ period_time 0
+ }
+ bindings {
+ 0 0
+ 0 1
+ }
+}
diff --git a/libalsa.spec b/libalsa.spec
new file mode 100644
index 00000000..8d290c16
--- /dev/null
+++ b/libalsa.spec
@@ -0,0 +1,602 @@
+%def_with doc
+%def_without python
+
+Name: libalsa
+Version: 1.2.5
+Release: alt1.1
+Epoch: 1
+
+Summary: Advanced Linux Sound Architecture (ALSA) library
+License: LGPLv2.1
+Group: System/Libraries
+
+Source: %name-%version.tar
+Patch0: %name-%version-%release.patch
+Patch1: 0001-Restore-loading-usr-share-alsa-alsa.conf.d.patch
+# latest upstream fixes
+# FIXME! remove this after 1.2.5.1!
+Patch2: alsa-git.patch
+Url: http://www.alsa-project.org
+
+# tse3 still depends on that, argh
+Provides: libalsa2 = %version
+Obsoletes: libalsa2 < %version
+
+# for fourth-party software
+Provides: alsa-lib = %version
+
+# factored out from alsa-lib.git
+Requires: alsa-ucm-conf
+Requires: alsa-topology-conf
+
+# Automatically added by buildreq on Mon Dec 26 2016
+# optimized out: perl python-base python-modules
+%{?_with_doc:BuildRequires: doxygen}
+
+# for smixer plugins, see commit a668a94238dc67b19ae187b52a161e027d79ee5d
+%{?_with_python:BuildRequires: python-dev}
+
+%define pkgdocdir %_docdir/%name-%version
+%define modutils_oss /etc/modutils.d/oss
+%define modules_conf /etc/modules.conf
+%define modprobe_old %_sysconfdir/modprobe.d/alsa-modindex
+%define modprobe_conf %modprobe_old.conf
+
+%define _unpackaged_files_terminate_build 1
+
+%description
+Advanced Linux Sound Architecture (ALSA) libs. Modularized
+architecture with support for a large range of ISA and PCI cards.
+Fully compatible with OSS/Lite (kernel sound drivers), but
+contains many enhanced features.
+
+%package -n aserver
+Summary: Sound server for alsa
+Group: Sound
+Requires: %name = %epoch:%version-%release
+
+%description -n aserver
+Sound server for ALSA
+
+%package devel
+Summary: Development environment for Advanced Linux Sound Architecture (ALSA)
+Group: Development/C
+Requires: %name = %epoch:%version-%release
+Provides: libalsa2-devel = %version
+Obsoletes: libalsa2-devel < %version
+
+%description devel
+Advanced Linux Sound Architecture (ALSA) libs. Modularized
+architecture with support for a large range of ISA and PCI cards.
+Fully compatible with OSS/Lite (kernel sound drivers), but
+contains many enhanced features.
+
+This is the development environment to compile ALSA applications.
+
+%if_with doc
+%package docs
+Summary: Documentation for Advanced Linux Sound Architecture (ALSA)
+Group: Development/Documentation
+BuildArch: noarch
+
+%description docs
+Advanced Linux Sound Architecture (ALSA) Developer Documentation
+(C library reference)
+%endif
+
+%prep
+%setup
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+# Replace "include" with "__include__" in public header files
+# to make them compilable by "gcc -ansi" again.
+find include -type f -print0 |
+ xargs -r0 grep -FZl ' inline ' -- |
+ xargs -r0 sed -i 's/ inline / __inline__ /g' --
+
+%build
+%autoreconf
+%configure \
+ --with-configdir=%_datadir/alsa \
+ %{?!_with_python:--disable-python} \
+ --disable-static
+%make_build
+%{?_with_doc:%make doc}
+
+%install
+%makeinstall_std
+
+find %buildroot%_libdir -name \*.la -delete
+
+install -pDm644 asound.conf.sonicvibes_2 %buildroot%_datadir/alsa/cards/SonicVibes.conf
+
+mkdir -p %buildroot%pkgdocdir
+%if_with doc
+install -pm644 NOTES MEMORY-LEAK TODO %buildroot%pkgdocdir/
+cp -a doc/doxygen/html %buildroot%pkgdocdir/
+%endif
+
+mkdir -p %buildroot%_sysconfdir/modprobe.d
+cat << __EOF__ >> %buildroot%modprobe_conf
+## spare index=0 for a hotplug soundcard (if any)
+#options snd-usb-audio index=0
+
+## offset HDMI output compared to onboard audio (#28648)
+#options snd_hda_codec_hdmi index=2,3
+#options snd_hda_intel index=2,3
+
+#options snd_intel8x0 index=2
+#options snd_via82xx index=2
+#options snd-bt87x index=3
+#options snd_intel8x0m index=4
+#options snd-atiixp-modem index=4
+#options snd-via82xx-modem index=4
+
+## get PC speaker out of the way
+options snd_pcsp index=10
+__EOF__
+
+install -d %buildroot%_localstatedir/alsa
+
+%pre
+[ ! -f %modutils_oss ] || {
+ grep -q "^above snd-" %modules_conf && {
+ echo '*** %modutils_oss found:'
+ echo '*** commenting out "above/below snd-*-oss" lines in %modules_conf'
+ subst 's/^above snd-.* snd-.*-oss$/#&/' %modules_conf ||:
+ } ||:
+}
+
+%post
+# newer module-init-tools barf at files missing .conf suffix
+# (and rightfully so)
+rm -f %modprobe_old~
+for suffix in "" .rpmnew .rpmsave; do
+ [ -f "%modprobe_old$suffix" ] && {
+ echo '*** migrating configuration, please check:'
+ mv -v "%modprobe_conf" "%modprobe_old.rpmorig"
+ mv -v "%modprobe_old$suffix" "%modprobe_conf"
+ exit 0
+ } ||:
+done
+
+%files
+%_libdir/*.so.*
+%if_with python
+%dir %_libdir/alsa-lib
+%_libdir/alsa-lib/smixer
+%endif
+%config(noreplace) %modprobe_conf
+%_datadir/alsa
+%dir %_localstatedir/alsa
+
+%files devel
+%_includedir/sys/*
+%_includedir/alsa
+%_includedir/asoundlib.h
+%_libdir/*.so
+%_pkgconfigdir/alsa.pc
+%_pkgconfigdir/alsa-topology.pc
+%_datadir/aclocal/*
+
+%if_with doc
+%files docs
+%dir %pkgdocdir
+%pkgdocdir/[D-Z]*
+%pkgdocdir/html
+%endif
+
+%files -n aserver
+%_bindir/aserver
+
+%changelog
+* Sat Jun 05 2021 L.A. Kostis <lakostis@altlinux.ru> 1:1.2.5-alt1.1
+- Apply latest fixes from git (before 1.2.5.1 will be released).
+
+* Tue Jun 01 2021 Michael Shigorin <mike@altlinux.org> 1:1.2.5-alt1
+- 1.2.5
+
+* Wed Oct 21 2020 Michael Shigorin <mike@altlinux.org> 1:1.2.4-alt1
+- 1.2.4
+
+* Thu Jul 09 2020 Michael Shigorin <mike@altlinux.org> 1:1.2.3.2-alt1
+- 1.2.3.2
+
+* Sat Jun 20 2020 Michael Shigorin <mike@altlinux.org> 1:1.2.3.1-alt1
+- 1.2.3.1
+
+* Wed Jun 10 2020 Michael Shigorin <mike@altlinux.org> 1:1.2.3-alt1
+- 1.2.3
+
+* Thu Feb 20 2020 Michael Shigorin <mike@altlinux.org> 1:1.2.2-alt1
+- 1.2.2
+
+* Mon Dec 02 2019 Michael Shigorin <mike@altlinux.org> 1:1.2.1.2-alt1
+- 1.2.1.2
+- better License: tag spelling
+
+* Fri Nov 22 2019 Michael Shigorin <mike@altlinux.org> 1:1.2.1.1-alt1
+- 1.2.1.1
+- fix License: tag spelling
+- fix doc knob
+- E2K: drop lcc 1.21 support
+
+* Mon Nov 18 2019 Michael Shigorin <mike@altlinux.org> 1:1.2.1-alt1
+- 1.2.1
+- R: alsa-ucm-conf, alsa-topology-conf (maintained separately now)
+- added alsa-topology.pc to -devel subpackage
+
+* Tue May 14 2019 Dmitry V. Levin <ldv@altlinux.org> 1:1.1.9-alt2
+- NMU.
+- Packaged %_includedir/asoundlib.h introduced in 1.1.9 to fix builds
+ of packages that use asoundlib.h header file.
+
+* Mon May 13 2019 Michael Shigorin <mike@altlinux.org> 1:1.1.9-alt1
+- 1.1.9
+
+* Mon Feb 18 2019 Mikhail Novosyolov <mikhailnov@altlinux.org> 1:1.1.8-alt2
+- Patch: restore loading /usr/share/alsa/alsa.conf.d/* (Closes: 35790)
+
+* Thu Jan 24 2019 Michael Shigorin <mike@altlinux.org> 1:1.1.8-alt1
+- 1.1.8
+
+* Wed Oct 17 2018 Michael Shigorin <mike@altlinux.org> 1:1.1.7-alt1
+- 1.1.7
+
+* Sun Sep 09 2018 Michael Shigorin <mike@altlinux.org> 1:1.1.6-alt2
+- E2K: explicitly link with -lcxa
+
+* Wed Apr 04 2018 Michael Shigorin <mike@altlinux.org> 1:1.1.6-alt1
+- 1.1.6
+
+* Wed Nov 22 2017 Michael Shigorin <mike@altlinux.org> 1:1.1.5-alt1
+- 1.1.5
+
+* Mon Jun 12 2017 Michael Shigorin <mike@altlinux.org> 1:1.1.4.1-alt1
+- 1.1.4.1
+
+* Mon May 29 2017 Michael Shigorin <mike@altlinux.org> 1:1.1.4-alt1
+- 1.1.4
+
+* Tue Dec 27 2016 Michael Shigorin <mike@altlinux.org> 1:1.1.3-alt3
+- disabed python support by default (asked by glebfm@)
+
+* Mon Dec 26 2016 Michael Shigorin <mike@altlinux.org> 1:1.1.3-alt2
+- 1.1.3
+- BOOTSTRAP: added doc, python knobs
+ + enabled python support by default too
+
+* Thu Dec 22 2016 Michael Shigorin <mike@altlinux.org> 1:1.1.3-alt1
+- 1.1.3
+
+* Thu Oct 06 2016 Michael Shigorin <mike@altlinux.org> 1:1.1.2-alt1
+- 1.1.2
+
+* Mon Jun 20 2016 Michael Shigorin <mike@altlinux.org> 1:1.1.1-alt1
+- 1.1.1
+
+* Tue Feb 02 2016 Michael Shigorin <mike@altlinux.org> 1:1.1.0-alt1.1.1
+- added %_localstatedir/alsa (thx aris@)
+
+* Mon Dec 07 2015 Michael Shigorin <mike@altlinux.org> 1:1.1.0-alt1.1
+- added snd-hda-codec-hdmi to alsa-modindex.conf too (see #28648)
+
+* Mon Nov 09 2015 Michael Shigorin <mike@altlinux.org> 1:1.1.0-alt1
+- 1.1.0
+
+* Fri Feb 27 2015 Michael Shigorin <mike@altlinux.org> 1:1.0.29-alt1
+- 1.0.29
+
+* Wed Jun 18 2014 Michael Shigorin <mike@altlinux.org> 1:1.0.28-alt1
+- 1.0.28
+
+* Wed Apr 30 2014 Michael Shigorin <mike@altlinux.org> 1:1.0.27.2-alt1
+- 1.0.27.2
+
+* Tue Apr 16 2013 Dmitry V. Levin <ldv@altlinux.org> 1:1.0.27-alt3
+- libalsa-alsa: replaced "include" with "__include__", to make
+ header files compilable by "gcc -ansi" as they were in 1.0.26.
+
+* Sat Apr 13 2013 Michael Shigorin <mike@altlinux.org> 1:1.0.27-alt2
+- retag
+
+* Sat Apr 13 2013 Michael Shigorin <mike@altlinux.org> 1:1.0.27-alt1
+- 1.0.27
+
+* Sat Mar 09 2013 Michael Shigorin <mike@altlinux.org> 1:1.0.26-alt3
+- alsa-modindex.conf: promote USB audio, demote HDMI audio example
+ (closes: #28648)
+
+* Fri Sep 07 2012 Michael Shigorin <mike@altlinux.org> 1:1.0.26-alt2
+- retag
+
+* Thu Sep 06 2012 Michael Shigorin <mike@altlinux.org> 1:1.0.26-alt1
+- 1.0.26
+- %_datadir/alsa/pulse.conf is no more autoloaded
+ (moved to %_datadir/alsa/alsa.conf.d/pulse.conf
+ in corresponding alsa-plugins package)
+
+* Tue Oct 04 2011 Michael Shigorin <mike@altlinux.org> 1:1.0.24.1-alt4
+- renamed %modprobe_old
+ to %modprobe_conf
+ for newer module-init-tools to be happy (thx led@)
+
+* Fri Jun 10 2011 Michael Shigorin <mike@altlinux.org> 1:1.0.24.1-alt3
+- added compat Provides: alsa-lib (zerg@)
+
+* Fri Feb 18 2011 Michael Shigorin <mike@altlinux.org> 1:1.0.24.1-alt2
+- retag (thx at@)
+
+* Wed Feb 16 2011 Michael Shigorin <mike@altlinux.org> 1:1.0.24.1-alt1
+- 1.0.24.1
+
+* Sun Feb 13 2011 Alexey Tourbin <at@altlinux.ru> 1:1.0.23-alt6
+- rebuilt for debuginfo
+
+* Thu Jan 13 2011 Michael Shigorin <mike@altlinux.org> 1:1.0.23-alt5
+- /etc/modprobe.d/alsa-modindex back (see also #24914)
+
+* Fri Nov 26 2010 Michael Shigorin <mike@altlinux.org> 1:1.0.23-alt4
+- rebuilt for set versions
+
+* Thu Oct 21 2010 Michael Shigorin <mike@altlinux.org> 1:1.0.23-alt3
+- rebuild
+- minor spec cleanup
+
+* Thu Apr 22 2010 Valery Inozemtsev <shrek@altlinux.ru> 1:1.0.23-alt2
+- post release fixes
+
+* Sun Apr 18 2010 Valery Inozemtsev <shrek@altlinux.ru> 1:1.0.23-alt1
+- 1.0.23
+
+* Thu Dec 24 2009 Valery Inozemtsev <shrek@altlinux.ru> 1:1.0.22-alt1
+- 1.0.22
+
+* Fri Sep 11 2009 Valery Inozemtsev <shrek@altlinux.ru> 1.0.21a-alt1
+- 1.0.21a
+
+* Tue Sep 01 2009 Valery Inozemtsev <shrek@altlinux.ru> 1.0.21-alt1
+- 1.0.21
+
+* Sun May 17 2009 Valery Inozemtsev <shrek@altlinux.ru> 1.0.20-alt2
+- configure: fixed check libtool version
+
+* Thu May 07 2009 Valery Inozemtsev <shrek@altlinux.ru> 1.0.20-alt1
+- 1.0.20
+
+* Mon Jan 19 2009 Valery Inozemtsev <shrek@altlinux.ru> 1.0.19-alt1
+- 1.0.19
+
+* Sat Nov 22 2008 Valery Inozemtsev <shrek@altlinux.ru> 1.0.18-alt2
+- removed obsolete %%post_ldconfig/%%postun_ldconfig calls
+
+* Wed Oct 29 2008 Valery Inozemtsev <shrek@altlinux.ru> 1.0.18-alt1
+- 1.0.18
+
+* Mon Sep 08 2008 Valery Inozemtsev <shrek@altlinux.ru> 1.0.17a-alt2
+- marked %_sysconfdir/modprobe.d/alsa-modindex is %%config(noreplace) (close #17034)
+
+* Fri Aug 15 2008 Valery Inozemtsev <shrek@altlinux.ru> 1.0.17a-alt1
+- 1.0.17a
+
+* Sun Aug 03 2008 Valery Inozemtsev <shrek@altlinux.ru> 1.0.17-alt2
+- IEC958 definition for consumer status channel update
+
+* Mon Jul 14 2008 Valery Inozemtsev <shrek@altlinux.ru> 1.0.17-alt1
+- 1.0.17
+
+* Fri May 30 2008 Valery Inozemtsev <shrek@altlinux.ru> 1.0.16-alt2
+- build without python (close #15626)
+
+* Thu May 01 2008 Valery Inozemtsev <shrek@altlinux.ru> 1.0.16-alt1
+- 1.0.16
+
+* Sun Jan 27 2008 Valery Inozemtsev <shrek@altlinux.ru> 1.0.15-alt1
+- 1.0.15
+- disabled static by defaults
+- spec cleanup
+- update build dependencies
+
+* Fri Aug 17 2007 Valery Inozemtsev <shrek@altlinux.ru> 1.0.14a-alt2.1
+- NMU:
+ + fixed linear<->float conversion in PCM plugin
+ + adapted alsa-modindex for module-init-tools
+
+* Thu Jun 28 2007 Michael Shigorin <mike@altlinux.org> 1.0.14a-alt2
+- removed linux-libc-headers build requirement to facilitate
+ build on ARM (thanks kas@ for investigation)
+
+* Mon Jun 11 2007 Michael Shigorin <mike@altlinux.org> 1.0.14a-alt1
+- 1.0.14a
+- build fixes (muchos gracios, icesik@)
+- removed stale patches (weren't applied anyways)
+- added dmix configuration for Sonic Vibes by zerg@ (#5003)
+
+* Mon Oct 16 2006 Michael Shigorin <mike@altlinux.org> 1.0.13-alt1
+- 1.0.13
+
+* Sat Sep 02 2006 Michael Shigorin <mike@altlinux.org> 1.0.12-alt1
+- 1.0.12
+- changed BuildPreReq: kernel-headers-std to linux-libc-headers
+ (thanks shrek@ for success story and lakostis@ for reminders)
+
+* Wed Apr 19 2006 Michael Shigorin <mike@altlinux.org> 1.0.11-alt1
+- 1.0.11
+- alsalisp no more installed, see changelog
+
+* Wed Apr 05 2006 Michael Shigorin <mike@altlinux.org> 1.0.11-alt0.4
+- 1.0.11rc4
+
+* Sat Mar 04 2006 Michael Shigorin <mike@altlinux.org> 1.0.11-alt0.3
+- 1.0.11rc3; should fix #9181 (apps hang when using dmix)
+ + thanks Artem G. Delendik <u2u/nm.ru> for thorough investigation
+- removed patch4 (applied already)
+
+* Sat Dec 10 2005 Michael Shigorin <mike@altlinux.org> 1.0.10-alt2
+- added ALSA CVS patch for dmix:
+ fixed ipc_gid initialization when gid specified as number
+ + thanks Sergey Vlasov (vsu@) for a bounce/explanation
+- added overlooked %_libdir/alsa-lib/smixer/
+- fixed a silly typo which barred inclusion of
+ %_sysconfdir/modutils.d/alsa-modindex into a package
+- spec *cleanup*
+
+* Wed Nov 16 2005 Michael Shigorin <mike@altlinux.org> 1.0.10-alt1
+- 1.0.10
+- removed patch2 (merged upstream)
+
+* Wed Oct 19 2005 Michael Shigorin <mike@altlinux.org> 1.0.9-alt7
+- updated docs Group:
+
+* Mon Oct 17 2005 Michael Shigorin <mike@altlinux.org> 1.0.9-alt7
+- fixed small typo in %post (rather cosmetic)
+
+* Tue Oct 04 2005 Michael Shigorin <mike@altlinux.org> 1.0.9-alt6
+- applied changes proposed in #8133 to avoid %pre failure;
+ thanks Anton Farygin (rider@) for alert/fix
+
+* Mon Oct 03 2005 Michael Shigorin <mike@altlinux.org> 1.0.9-alt5
+- attempt to workaround #8096 just in case it still applies
+ ("Too deep recursion in module dependencies!")
+- see also http://wiki.sisyphus.ru/admin/Sound/ModuleLoadProblem
+
+* Fri Sep 16 2005 Michael Shigorin <mike@altlinux.org> 1.0.9-alt4
+- removed superfluous COPYING (standard license mentioned
+ in package header data), thanks to Alexey Tourbin (at@)
+ for absolute symlink warning
+
+* Mon Jul 11 2005 Michael Shigorin <mike@altlinux.org> 1.0.9-alt3
+- added modutils file to let shift on-board AC97 codec drivers
+ after "real" hardware ones, if any; also some more stuff from FAQ
+ (should be properly fixed within hotplug and/or alsa)
+
+* Fri Jul 08 2005 Michael Shigorin <mike@altlinux.org> 1.0.9-alt2
+- added CVS patches (name clash; ALSA bug #1139)
+- thanks Vitaly Lipatov (lav@) for alerting and Sergey Vlasov (vsu@)
+ for identifying the problem and handing over the patches
+
+* Thu Jun 23 2005 Michael Shigorin <mike@altlinux.org> 1.0.9-alt1
+- 1.0.9
+- added separate docs subpackage (#5935)
+
+* Thu Jun 09 2005 Michael Shigorin <mike@altlinux.ru> 1.0.9-alt0
+- 1.0.9
+
+* Thu Apr 28 2005 Michael Shigorin <mike@altlinux.ru> 1.0.8-alt2
+- #6697 (license fix)
+
+* Thu Jan 13 2005 Michael Shigorin <mike@altlinux.ru> 1.0.8-alt1
+- 1.0.8
+- enabled static library build by default (#5580)
+
+* Mon Nov 29 2004 Michael Shigorin <mike@altlinux.ru> 1.0.7-alt1
+- 1.0.7 (err...)
+
+* Sat Jun 26 2004 Michael Shigorin <mike@altlinux.ru> 1.0.5-alt2
+- tiny spec cleanup/rebuild
+
+* Mon May 31 2004 Michael Shigorin <mike@altlinux.ru> 1.0.5-alt1
+- 1.0.5
+
+* Sat Apr 03 2004 Michael Shigorin <mike@altlinux.ru> 1.0.4-alt1
+- 1.0.4
+
+* Sun Mar 21 2004 Michael Shigorin <mike@altlinux.ru> 1.0.3b-alt1
+- 1.0.3b
+- added kernel-headers-std build dep
+
+* Sat Mar 06 2004 Michael Shigorin <mike@altlinux.ru> 1.0.3a-alt1
+- 1.0.3a
+
+* Tue Mar 02 2004 Michael Shigorin <mike@altlinux.ru> 1.0.3-alt1
+- 1.0.3
+
+* Thu Jan 29 2004 Michael Shigorin <mike@altlinux.ru> 1.0.2-alt2
+- 1.0.2, Final Upload by ALSA Project (TM) 20040129 18:35 +0200
+- thanks to Sergey Vlasov (vsu@) for alerting about re-uploads
+
+* Wed Jan 28 2004 Michael Shigorin <mike@altlinux.ru> 1.0.2-alt1
+- 1.0.2
+- upstream merged patch0, patch1 (alt-fpic and shm-leak)
+
+* Tue Jan 20 2004 Michael Shigorin <mike@altlinux.ru> 1.0.1-alt3
+- added patch by Adam Tla/lka <atlka pg gda pl> to fix shared
+ memory leak; thanks to Sergey Vlasov (vsu@)
+- added %_bindir/alsalisp to devel subpackage
+
+* Mon Jan 19 2004 Michael Shigorin <mike@altlinux.ru> 1.0.1-alt2
+- spec facelift/cleanup by Mikhail Zabaluev (mhz@):
+ * doxygen'erated docs, license files installed the right way;
+ * build deps refresh/cleanup
+- translated package info
+
+* Sun Jan 18 2004 Mikhail Zabaluev <mhz@altlinux.ru> 1.0.1-alt1.1
+- build doxygen docs, package them plus readme files and symlinked license
+- spec cleanup
+- buildreq (WTF was this mawk thing?)
+- builds fine without alsa-driver-headers (?)
+
+* Sun Jan 11 2004 Michael Shigorin <mike@altlinux.ru> 1.0.1-alt1
+- 1.0.1
+- WARNING: API has changed in 1.0.x, things may break
+- removed *.la
+- don't package static libs by default
+
+* Tue Nov 11 2003 Michael Shigorin <mike@altlinux.ru> 0.9.8-alt2
+- fixed -fPIC-related trouble:
+ * %optflags_shared
+ * patch by Dmitry V. Levin (ldv@)
+
+* Wed Oct 22 2003 Michael Shigorin <mike@altlinux.ru> 0.9.8-alt1
+- 0.9.8
+
+* Fri Sep 26 2003 Michael Shigorin <mike@altlinux.ru> 0.9.7-alt1
+- 0.9.7
+
+* Wed Jul 30 2003 Michael Shigorin <mike@altlinux.ru> 0.9.6-alt1
+- 0.9.6
+
+* Tue Jul 15 2003 Michael Shigorin <mike@altlinux.ru> 0.9.5-alt1
+- 0.9.5
+
+* Tue Jul 08 2003 Michael Shigorin <mike@altlinux.ru> 0.9.4-alt2
+- fixed forcibly broken BuildRequires as kernel-source-alsa-std got fixed
+ (alsa-driver-headers >= %%version)
+
+* Mon Jun 23 2003 Michael Shigorin <mike@altlinux.ru> 0.9.4-alt1
+- 0.9.4
+- renamed to libalsa
+
+* Wed Apr 02 2003 Michael Shigorin <mike@altlinux.ru> 0.9.2-alt0.1
+- 0.9.2 (unofficial build)
+
+* Tue Feb 04 2003 Rider <rider@altlinux.ru> 0.9.0rc7-alt1
+- 0.9.0rc7
+
+* Tue Nov 26 2002 Konstantin Volckov <goldhead@altlinux.ru> 0.9.0rc6-alt1
+- 0.9.0rc6
+- REbuilt in new environment
+
+* Mon Jun 10 2002 Konstantin Volckov <goldhead@altlinux.ru> 0.9.0rc1-alt2
+- Removed requires to virtual kernel alsa
+
+* Fri Jun 07 2002 Konstantin Volckov <goldhead@altlinux.ru> 0.9.0rc1-alt1
+- 0.9.0rc1
+
+* Thu Feb 28 2002 Konstantin Volckov <goldhead@altlinux.ru> 0.9.0beta12-alt1
+- 0.9.0beta12
+
+* Wed Dec 26 2001 Konstantin Volckov <goldhead@altlinux.ru> 0.9.0beta10a-alt1
+- 0.9.0beta10a
+
+* Tue Nov 20 2001 Konstantin Volckov <goldhead@altlinux.ru> 0.9.0beta9-alt1
+- 0.9.0beta9
+
+* Fri Oct 12 2001 Konstantin Volckov <goldhead@altlinux.ru> 0.9.0beta8a-alt1
+- 0.9.0beta8a
+- Fixed requires
+- Fixed filelists
+
+* Fri Sep 21 2001 Konstantin Volckov <goldhead@altlinux.ru> 0.9.0beta7-alt1
+- First build for Sisyphus