diff --git a/alsa-utils.spec b/alsa-utils.spec index a6c4b5d..1512b75 100644 --- a/alsa-utils.spec +++ b/alsa-utils.spec @@ -4,7 +4,7 @@ Summary: Advanced Linux Sound Architecture (ALSA) utilities Name: alsa-utils Version: 1.0.18 -Release: 1%{?prever_dot}%{?dist} +Release: 2%{?prever_dot}%{?dist} License: GPLv2+ Group: Applications/Multimedia URL: http://www.alsa-project.org/ @@ -15,6 +15,7 @@ Source10: alsa.rules Source11: alsactl.conf Patch0: alsa-utils-1.0.18-alsaconf.patch Patch1: alsactl-fix-card-parsing.patch +Patch1: alsactl-add-ignore-option.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: alsa-lib-devel >= %{version} BuildRequires: ncurses-devel @@ -54,8 +55,8 @@ mkdir -p $RPM_BUILD_ROOT/%{_sbindir} ln -s ../../sbin/alsactl $RPM_BUILD_ROOT/%{_sbindir}/alsactl # Move /usr/share/alsa/init to /lib/alsa/init -mkdir -p -m 755 %{buildroot}/%{_lib}/alsa -mv %{buildroot}%{_datadir}/alsa/init %{buildroot}/%{_lib}/alsa +mkdir -p -m 755 %{buildroot}/lib/alsa +mv %{buildroot}%{_datadir}/alsa/init %{buildroot}/lib/alsa # Link /lib/alsa/init to /usr/share/alsa/init back ln -s ../../../lib/alsa/init %{buildroot}%{_datadir}/alsa/init @@ -67,6 +68,7 @@ touch %{buildroot}/etc/asound.state # Install alsa-info.sh script install -p -m 755 %{SOURCE6} %{buildroot}/usr/bin/alsa-info +ln -s alsa-info.sh %{buildroot}/usr/bin/alsa-info %clean %{__rm} -rf $RPM_BUILD_ROOT @@ -78,7 +80,7 @@ install -p -m 755 %{SOURCE6} %{buildroot}/usr/bin/alsa-info %config /etc/alsa/* /bin/* /sbin/* -/%{_lib}/alsa/init/* +/lib/alsa/init/* %{_bindir}/* %{_sbindir}/* %{_datadir}/alsa/ @@ -87,8 +89,18 @@ install -p -m 755 %{SOURCE6} %{buildroot}/usr/bin/alsa-info %dir /etc/alsa/ %ghost /etc/asound.state +%post +if [ -s /etc/alsa/asound.state -a ! -s /etc/asound.state ] ; then + mv /etc/alsa/asound.state /etc/asound.state +fi %changelog +* Thu Sep 18 2008 Jaroslav Kysela 1.0.18-2.rc3 +- fixed /lib/alsa/init path for x86_64 (was /lib64/alsa/init) +- added /etc/alsa/asound.state -> /etc/asound.state shift to %post section +- fix udev rules (ommited /dev/ prefix for the alsactl utility) +- added --ignore option for alsactl (added also to upstream) + * Thu Sep 11 2008 Jaroslav Kysela 1.0.18-1.rc3 - updated to 1.0.18rc3 - updated alsa-info.sh script to 0.4.51 diff --git a/alsa.rules b/alsa.rules index 748db95..87a5279 100644 --- a/alsa.rules +++ b/alsa.rules @@ -1,4 +1,4 @@ ACTION=="add", SUBSYSTEM=="sound", KERNEL=="controlC*", \ - RUN+="/sbin/alsactl -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf --initfile=/lib/alsa/init/00main restore $name" + RUN+="/sbin/alsactl -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf --initfile=/lib/alsa/init/00main restore /dev/$name" ACTION=="remove", SUBSYSTEM=="sound", KERNEL=="controlC*", \ - RUN+="/sbin/alsactl -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf store $name" + RUN+="/sbin/alsactl -E ALSA_CONFIG_PATH=/etc/alsa/alsactl.conf store /dev/$name" diff --git a/alsactl-add-ignore-option.patch b/alsactl-add-ignore-option.patch new file mode 100644 index 0000000..ac7a88c --- /dev/null +++ b/alsactl-add-ignore-option.patch @@ -0,0 +1,126 @@ +From f63ff476f3538f519ac8ff0acd4acdab29889ad5 Mon Sep 17 00:00:00 2001 +From: Jaroslav Kysela +Date: Thu, 18 Sep 2008 09:40:02 +0200 +Subject: [PATCH] alsactl: Add -g,--ignore option to ignore 'No soundcards found' error + +Signed-off-by: Jaroslav Kysela +--- + alsactl/alsactl.1 | 5 +++++ + alsactl/alsactl.c | 10 ++++++++-- + alsactl/alsactl.h | 1 + + alsactl/state.c | 16 ++++++++++++---- + 4 files changed, 26 insertions(+), 6 deletions(-) + +diff --git a/alsactl/alsactl.1 b/alsactl/alsactl.1 +index d7f30f6..b038a82 100644 +--- a/alsactl/alsactl.1 ++++ b/alsactl/alsactl.1 +@@ -51,6 +51,11 @@ Used with restore command. Try to restore the matching control elements + as much as possible. This option is set as default now. + + .TP ++\fI\-g, \-\-ignore\fP ++Used with store and restore commands. Do not show 'No soundcards found' ++and do not set an error exit code when soundcards are not installed. ++ ++.TP + \fI\-P, \-\-pedantic\fP + Used with restore command. Don't restore mismatching control elements. + This option was the old default behavior. +diff --git a/alsactl/alsactl.c b/alsactl/alsactl.c +index 57957bf..f846316 100644 +--- a/alsactl/alsactl.c ++++ b/alsactl/alsactl.c +@@ -34,6 +34,7 @@ + + int debugflag = 0; + int force_restore = 1; ++int ignore_nocards = 0; + char *command; + char *statefile = NULL; + +@@ -48,7 +49,8 @@ static void help(void) + printf(" -f,--file # configuration file (default " SYS_ASOUNDRC ")\n"); + printf(" -F,--force try to restore the matching controls as much as possible\n"); + printf(" (default mode)\n"); +- printf(" -P,--pedantic don't restore mismatching controls (old default)\n"); ++ printf(" -g,--ignore ignore 'No soundcards found' error\n"); ++ printf(" -P,--pedantic do not restore mismatching controls (old default)\n"); + printf(" -r,--runstate # save restore and init state to this file (only errors)\n"); + printf(" default settings is 'no file set'\n"); + printf(" -R,--remove remove runstate file at first, otherwise append errors\n"); +@@ -75,6 +77,7 @@ int main(int argc, char *argv[]) + {"env", 1, NULL, 'E'}, + {"initfile", 1, NULL, 'i'}, + {"force", 0, NULL, 'F'}, ++ {"ignore", 0, NULL, 'g'}, + {"pedantic", 0, NULL, 'P'}, + {"runstate", 0, NULL, 'r'}, + {"remove", 0, NULL, 'R'}, +@@ -99,7 +102,7 @@ int main(int argc, char *argv[]) + while (1) { + int c; + +- if ((c = getopt_long(argc, argv, "hdvf:FE:i:Pr:R", long_option, NULL)) < 0) ++ if ((c = getopt_long(argc, argv, "hdvf:FgE:i:Pr:R", long_option, NULL)) < 0) + break; + switch (c) { + case 'h': +@@ -111,6 +114,9 @@ int main(int argc, char *argv[]) + case 'F': + force_restore = 1; + break; ++ case 'g': ++ ignore_nocards = 1; ++ break; + case 'E': + if (putenv(optarg)) { + fprintf(stderr, "environment string '%s' is wrong\n", optarg); +diff --git a/alsactl/alsactl.h b/alsactl/alsactl.h +index 408b145..44d27f1 100644 +--- a/alsactl/alsactl.h ++++ b/alsactl/alsactl.h +@@ -1,5 +1,6 @@ + extern int debugflag; + extern int force_restore; ++extern int ignore_nocards; + extern char *command; + extern char *statefile; + +diff --git a/alsactl/state.c b/alsactl/state.c +index 554020b..576721a 100644 +--- a/alsactl/state.c ++++ b/alsactl/state.c +@@ -1507,8 +1507,12 @@ int save_state(const char *file, const char *cardname) + break; + if (card < 0) { + if (first) { +- error("No soundcards found..."); +- return -ENODEV; ++ if (ignore_nocards) { ++ return 0; ++ } else { ++ error("No soundcards found..."); ++ return -ENODEV; ++ } + } + break; + } +@@ -1606,8 +1610,12 @@ int load_state(const char *file, const char *initfile, const char *cardname) + break; + if (card < 0) { + if (first) { +- error("No soundcards found..."); +- return -ENODEV; ++ if (ignore_nocards) { ++ return 0; ++ } else { ++ error("No soundcards found..."); ++ return -ENODEV; ++ } + } + break; + } +-- +1.6.0.GIT +