aboutsummaryrefslogtreecommitdiffstats
path: root/main/alsa-utils/alsa.initd
diff options
context:
space:
mode:
authorSören Tempel <soeren+git@soeren-tempel.net>2015-08-14 14:30:41 +0200
committerNatanael Copa <ncopa@alpinelinux.org>2015-08-14 15:05:15 +0200
commitf2f7f861ea7bff46c7497cba87d0796868a7ea53 (patch)
treec69fd1f29a6041d5f764bffb9e164eb0a8e9465d /main/alsa-utils/alsa.initd
parent009d29ba1f11b72991cfd64c0da2b0ae1c340cb5 (diff)
downloadaports-f2f7f861ea7bff46c7497cba87d0796868a7ea53.tar.bz2
aports-f2f7f861ea7bff46c7497cba87d0796868a7ea53.tar.xz
main/alsa-utils: update openrc service
Use the latest and greatest OpenRC ALSA service from the Gentoo portage tree. This new service no longer supports any modular auto(un)loading of ALSA core modules, which shouldn't be a problem since the load_modules() function didn't even work before.
Diffstat (limited to 'main/alsa-utils/alsa.initd')
-rw-r--r--main/alsa-utils/alsa.initd160
1 files changed, 15 insertions, 145 deletions
diff --git a/main/alsa-utils/alsa.initd b/main/alsa-utils/alsa.initd
index 059c08b57b..9a68a27161 100644
--- a/main/alsa-utils/alsa.initd
+++ b/main/alsa-utils/alsa.initd
@@ -1,140 +1,24 @@
-#!/sbin/openrc-run
-# $Header: /var/cvsroot/gentoo-x86/media-sound/alsa-utils/files/alsasound.initd-r4,v 1.1 2009/08/02 11:27:26 ssuominen Exp $
-# Copyright 2007 Gentoo Foundation
+#!/sbin/runscript
+# $Id$
+# Copyright 1999-2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
alsastatedir=/var/lib/alsa
alsascrdir=/etc/alsa.d
+alsahomedir=/var/run/alsasound
extra_commands="save restore"
depend() {
need localmount
- after bootmisc modules isapnp coldplug hotplug hwdrivers
-}
-
-load_modules() {
- # List of drivers for each card.
- local DRIVERS="$(modprobe | sed -n -e 's/^alias \(snd-card-[[:digit:]]\+\) .*/\1/p')"
-
- # Fall back on the automated aliases if we don't have ALSA configured properly...
- if [ -z "${DRIVERS}" ] && \
- ( [ ! -r /proc/asound/cards ] || grep -q ' no soundcards ' /proc/asound/cards 2>/dev/null ) ; then
- ewarn "Could not detect custom ALSA settings. Loading all detected alsa drivers."
- DRIVERS="$(modprobe | sed -n -e '/^alias pci:.* snd.*/ s/^alias pci:[^ ]* \(.*\)/\1/p' | sort | uniq)"
- if [ -z "${DRIVERS}" ] ; then
- eerror "Unable to find any ALSA drivers. Have you compiled alsa-drivers correctly?"
- fi
- fi
-
- if [ "${ENABLE_OSS_EMUL}" = "yes" ] ; then
- DRIVERS="${DRIVERS} $(modprobe -l | sed -n -e '/snd.*oss/ s:.*\/\([[:alnum:]_-]\+\).ko:\1:p')"
- fi
-
- # We want to ensure snd-seq is loaded as it is needed for things like
- # timidity even if we don't use a real sequencer.
- DRIVERS="${DRIVERS} $(modprobe -l | sed -n -e '/snd.seq\./ s:.*\/\([[:alnum:]_-]\+\).ko:\1:p')"
-
- # We want to ensure snd-ioctl32 is loaded as it is needed for 32bit
- # compatibility
- DRIVERS="${DRIVERS} $(modprobe -l | sed -n -e '/snd.ioctl32\./ s:.*\/\([[:alnum:]_-]\+\).ko:\1:p')"
-
- local DRIVER= DMOD=
- for DRIVER in ${DRIVERS} ; do
- [ "${DRIVER}" = "off" ] && continue
- DMOD="$(echo "${DRIVER}" | sed -e 's/-/_/g')"
- if ! grep -q "^${DMOD} " /proc/modules ; then
- ebegin "Loading: ${DRIVER}"
- modprobe ${DRIVER}
- eend $?
- fi
- done
-
- if [ -f /proc/asound/seq/drivers ] ; then
- local SEQUENCERS="$(sed -n -e 's/\([^,]*\),empty,.*/\1/p' /proc/asound/seq/drivers)"
- local SEQUENCER
- for SEQUENCER in ${SEQUENCERS} ; do
- DMOD="$(echo "${SEQUENCER}" | sed -e 's/-/_/g')"
- if ! grep -q "^${DMOD} " /proc/modules ; then
- ebegin "Loading: ${SEQUENCER}"
- modprobe ${SEQUENCER}
- eend $?
- fi
- done
- fi
-
- for DRIVER in ${DRIVERS}
- do
- local TMP=${DRIVER##snd-}
- TMP=${TMP##snd_}
- if [ -x "${alsascrdir}/${TMP}" ] ; then
- ebegin "Running: ${alsascrdir}/${TMP}"
- "${alsascrdir}/${TMP}"
- eend $?
- fi
- done
-
- if [ ! -d /proc/asound ] || grep -q ' no soundcards ' /proc/asound/cards ; then
- eerror "ERROR: Failed to load necessary drivers"
- return 1
- fi
-}
-
-unload_modules_24() {
- local LOADED_MODULES="$(lsmod | sed -n -e 's/^\(snd[^ ]*\) .*/\1/p')"
- local MODULE
- for MODULE in ${LOADED_MODULES} ; do
- rmmod "${MODULE}"
- done
- rmmod soundcore 2>/dev/null
- rmmod gameport 2>/dev/null
-
- lsmod | grep -vq '^snd'
-}
-
-unload_modules_recursive() {
- local revdeps="$(lsmod | sed -n -e "s/,/ /g" -e "s/^$1 *[0-9]* *[0-9]* \(.*\)/\1/p")"
-
- for module in ${revdeps} ; do
- unload_modules_recursive "${module}"
- done
-
- vebegin "Unloading: $1"
- rmmod --wait "$1"
- veend $?
-}
-
-unload_modules_26() {
- # First of all, remove the snd module and all the modules depending
- # on it, this should remove already most of ALSA modules.
- lsmod | grep -q "^snd[[:space:]]" && unload_modules_recursive snd
-
- # Then find the remaining ones, and handle them too.
- for module in $(lsmod | sed -n -e 's/^\(snd[^ ]*\) .*/\1/p'); do
- unload_modules_recursive "${module}"
- done
-
- lsmod | grep -vq "^snd"
-}
-
-terminate() {
- #
- # Kill processes holding open sound devices
- #
- # DEVS=`find /dev/ -follow -type c -maxdepth 1 -print 2>/dev/null | xargs ls -dils | grep "1*1[46]," | cut -d: -f2 | cut -d" " -f2; echo /proc/asound/dev/*`
- local ossdevs="/dev/admmidi* /dev/adsp* /dev/amidi* /dev/audio* /dev/dmfm* \
- /dev/dmmidi* /dev/dsp* /dev/dspW* /dev/midi0* /dev/mixer* /dev/music \
- /dev/patmgr* /dev/sequencer* /dev/sndstat"
- local alsadevs="/proc/asound/dev/* /dev/sound/* /dev/snd/*"
- fuser -k ${ossdevs} ${alsadevs} >/dev/null 2>/dev/null
-
- # remove all sequencer connections if any
- [ -f /proc/asound/seq/clients ] && type aconnect >/dev/null 2>/dev/null && aconnect --removeall
+ after bootmisc modules isapnp coldplug hotplug
}
restore() {
ebegin "Restoring Mixer Levels"
+ checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1
+
if [ ! -r "${alsastatedir}/asound.state" ] ; then
ewarn "No mixer config in ${alsastatedir}/asound.state, you have to unmute your card!"
eend 0
@@ -148,7 +32,7 @@ restore() {
[ -e /dev/snd/controlC${cardnum} ] || sleep 2
[ -e /dev/snd/controlC${cardnum} ] || sleep 2
[ -e /dev/snd/controlC${cardnum} ] || sleep 2
- alsactl -f "${alsastatedir}/asound.state" restore ${cardnum} \
+ alsactl -E HOME="${alsahomedir}" -I -f "${alsastatedir}/asound.state" restore ${cardnum} \
|| ewarn "Errors while restoring defaults, ignoring"
done
@@ -158,7 +42,7 @@ restore() {
local procfile=${ossfile##${alsastatedir}/oss}
procfile="$(echo "${procfile}" | sed -e 's,_,/,g')"
if [ -e /proc/asound/"${procfile}"/oss ] ; then
- cat "${ossfile}" > /proc/asound/"${procfile}"/oss
+ cat "${ossfile}" > /proc/asound/"${procfile}"/oss
fi
done
@@ -168,8 +52,10 @@ restore() {
save() {
ebegin "Storing ALSA Mixer Levels"
+ checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1
+
mkdir -p "${alsastatedir}"
- if ! alsactl -f "${alsastatedir}/asound.state" store; then
+ if ! alsactl -E HOME="${alsahomedir}" -f "${alsastatedir}/asound.state" store; then
eerror "Error saving levels."
eend 1
return 1
@@ -187,19 +73,7 @@ save() {
}
start() {
- if [ -f /proc/modules ] && [ "${LOAD_ON_START}" = "yes" ]; then
- ebegin "Loading ALSA modules"
- eindent
- load_modules
- eoutdent
- eend $? || return 1
- fi
-
- if [ ! -d /proc/asound ]; then
- eerror "ALSA failed to load."
- eend 1
- return 1
- elif [ "${RESTORE_ON_START}" = "yes" ]; then
+ if [ "${RESTORE_ON_START}" = "yes" ]; then
restore
fi
@@ -207,12 +81,8 @@ start() {
}
stop() {
- if [ ! -d /proc/asound ] ; then
- eerror "ALSA is not loaded"
- return 0
+ if [ "${SAVE_ON_STOP}" = "yes" ]; then
+ save
fi
-
- [ "${SAVE_ON_STOP}" = "yes" ] && save
-
return 0
}