Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37566894
en ru br
Репозитории 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
www.altlinux.org/Changes

Группа :: Система/Библиотеки
Пакет: 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
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin