ports/124063: audio/aureal-kmod lacks proper rcNG startup script
Volodymyr Kostyrko
c.kworr at gmail.com
Wed May 28 13:00:12 UTC 2008
>Number: 124063
>Category: ports
>Synopsis: audio/aureal-kmod lacks proper rcNG startup script
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed May 28 13:00:11 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Volodymyr Kostyrko
>Release: FreeBSD 7.STABLE
>Organization:
INTS
>Environment:
FreeBSD cairn.ints.net 7.0-STABLE FreeBSD 7.0-STABLE #3: Tue May 27 10:17:19 EEST 2008 arcade at cairn.ints.net:/usr/obj/usr/src/sys/CAIRN i386
>Description:
Supplied aureal.sh lacks knobs needed for rcNG to recognize and to start it automatically.
>How-To-Repeat:
Just install the port. You end up running '/usr/local/etc/rc.d/aureal.sh start' each time you boot up.
>Fix:
I have prepared a script on my own.
Patch attached with submission follows:
#!/bin/sh
#
# PROVIDE: aureal
# BEFORE: hald
# KEYWORD: nojail
#
# Add the following line to /etc/rc.conf[.local] to enable aureal
#
# aureal_enable="YES"
#
. /etc/rc.subr
name="aureal"
rcvar=${name}_enable
load_rc_config $name
: ${aureal_enable="NO"}
start_cmd=aureal_start
stop_cmd=aureal_stop
CARD=''
aureal_detect() {
PCICONF="/usr/sbin/pciconf"
if [ -z "${CARD}" -a -x ${PCICONF} ]; then
if [ "`${PCICONF} -l 2>&- | grep 0x000312eb`" ]; then
CARD=8810
elif [ "`${PCICONF} -l 2>&- | grep 0x000112eb`" ]; then
CARD=8820
elif [ "`${PCICONF} -l 2>&- | grep 0x000212eb`" ]; then
CARD=8830
fi
fi
if [ -z "${CARD}" ]; then
echo "Unable to determine your Aureal card type -" \
"override it manually in $0" >&2
exit 255
fi
PREFIX=/usr/local
LIBDIR=${PREFIX}/lib/au88x0
DRIVERFILE=snd_au${CARD}
}
aureal_start() {
aureal_detect
if [ ! -f ${LIBDIR}/${DRIVERFILE}.ko ]; then
echo "${LIBDIR}/${DRIVERFILE} for ${CARD} not found!"
exit 64
fi
if ! kldstat -qm ${DRIVERFILE}; then
if kldload ${LIBDIR}/${DRIVERFILE}.ko; then
echo 'aureal module loaded.'
else
warn 'aureal module failed to load.'
return 1
fi
fi
if [ "$VIAKX133FIX" ]; then
pcisel=`${PCICONF} -l 2>&- | grep ^pcm0 | awk -F: '{ gsub("^[^@]*@", ""); print $1":"$2":"$3 }'`
if [ -z "$pcisel" ]; then
echo " (WARNING: Soundcard PCI selector undetermined. Unable to install VIA KX133 workaround. Starting a playback will likely to lock-up your system!)"
exit 64
fi
oldvalue=`${PCICONF} -r -b $pcisel 0x40 2>&- | sed 's/ *$//'`
echo -n " (with VIA KX133 workaround: ${pcisel},0x40: ${oldvalue} -> "
${PCICONF} -w -b $pcisel 0x40 0xff
echo -n "`${PCICONF} -r -b $pcisel 0x40 2>&- | sed 's/ *$//'`)"
fi
return 0
}
aureal_stop() {
aureal_detect
if kldstat -qm ${DRIVERFILE} && kldunload ${DRIVERFILE} ; then
echo 'aureal module unloaded.'
fi
}
run_rc_command "$1"
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list