BenV's notes

Pulseaudio, slackware and udev

by on Sep.11, 2009, under Software

Yesterday I found a release notice in the pulseaudio mailinglist announcing version 0.9.16.
Today, I found another release note in the mailinglist that announced pulseaudio version 0.9.17. Gee, another fuckup? (but that’s part of the release process I guess ;))

Anyway, I decided to upgrade my 0.9.15 installation since it still glitches every now and then.
With glitches I mean “The music played by mpd suddenly sounds as if you have quad damage in quake 3 arena and filter out most of the music frequencies”. You know, when you shoot a quad damage rocket through a hallway, that kind of sound. Restarting pulseaudio always fixes this. (I’ve been running into this glitch ever since I started using pulse). Seems to occur randomly though… sometimes when the server is busy, sometimes when switching from a .mod file to a .mp3 file, sometimes just when the lights turn on. You know the kind of glitch.
Other than I kind of enjoy pulseaudio, even though it’s a struggle to get going. It does allow our server to stream to other servers and stuff like that, which is very cute. Oh, and per application volume levels and mixing etc… also good.
This pulseaudio installation runs on our local server — in daemon/server mode — btw, on which we have connected our amplifier and speakers as to enlighten our office/game room/throne chamber.

So for compiling version 0.9.16 the first thing I ran into was libsndfile that was outdated. Version 1.0.17 was too old, so I ran slackbuild on the new libsndfile v1.0.20.tar.gz. Out came a package, upgrade, voila.
Next, I noticed the pulseaudio configure output telling me:

Enable udev: no
Enable HAL->udev compat: no

I kinda wondered why, since my system definately runs udev. In config.log we find:

configure:26464: checking for UDEV
configure:26471: $PKG_CONFIG --exists --print-errors " libudev >= 143 "
Requested 'libudev >= 143' but version of libudev is 141
configure:26474: $? = 1
configure:26487: $PKG_CONFIG --exists --print-errors " libudev >= 143 "
Requested 'libudev >= 143' but version of libudev is 141
configure:26490: $? = 1
Requested 'libudev >= 143' but version of libudev is 141
configure:26517: result: no

Aha.
New challenge!
Let’s see if we can grab the official slackware udev sources and get them to run a newer package! Today the latest udev is udev version 1.4.6.
So I changed the udev.Slackbuild to pick version 1.4.6

--- udev.SlackBuild.org 2009-09-11 14:55:14.000000000 +0200
+++ udev.SlackBuild 2009-07-15 06:08:30.000000000 +0200
@@ -21,9 +21,9 @@
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

-VERSION=${VERSION:-146}
+VERSION=${VERSION:-141}
ARCH=${ARCH:-i486}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-3}

NUMJOBS=${NUMJOBS:-" -j7 "}

Running udev.Slackbuild now soon brought another set of issues to my attention. The first being that the slackware patch for the rule generator breaks.
Without looking too much at the script I simply manually patched it and created a new diff. Here it is:
[Download not found]

Running the slackbuild now gave me a new error:

In file included from extras/scsi_id/scsi_serial.c:27:
/usr/include/scsi/scsi.h:145: error: expected specifier-qualifier-list before 'u8'
/usr/include/scsi/scsi.h: In function 'scsi_varlen_cdb_length':
/usr/include/scsi/scsi.h:156: error: 'struct scsi_varlen_cdb_hdr' has no member named 'additional_cdb_length'
make[2]: *** [extras/scsi_id/scsi_serial.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

It never takes me long to realize that this error stems from the new kernel I installed earlier. (did I mention that linux 2.6.31 is released? ;)).
Google brought me this, which informs us about something that should have been in 2.6.31 if you ask me. Fine, we’ll fix it ourselves.
Another slackbuild run takes us past this error and gives us a new udev package. Inspecting the new package I noticed a /libexec directory that shouldn’t be in the root of the package. Meh, probably explains the configure: WARNING: unrecognized options: --with-libdir-name.
So we change the udev.Slackbuild again with some new configure options (stolen from their own INSTALL file):

--- udev.SlackBuild.org 2009-07-15 06:08:30.000000000 +0200
+++ udev.SlackBuild 2009-09-11 16:07:19.000000000 +0200
@@ -55,9 +55,12 @@
./configure \
--prefix=/usr \
--exec-prefix=/ \
+ --sbindir=/sbin \
+ --libdir=/lib${LIBDIRSUFFIX} \
+ --with-rootlibdir=/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--mandir=/usr/man \
- --with-libdir-name=lib${LIBDIRSUFFIX} \
+ --libexecdir=/lib/udev \
--build=$ARCH-slackware-linux

make $NUMJOBS || make || exit 1

Btw, can someone explain to me why I always manage to fuck up the file order to diff? (my patches normally come out reversed ;))
Here’s the complete file if you want it:
[Download not found]

So after building and upgrading the package, it even restarted without glitches. Woei.
Back to pulseaudio!

Running configure now correctly informs us about udev being YES. HAL->udev compat still said “no” though. I don’t care for now, let’s see if it works.
My slackbuild.pl ran the make part and showed a ton of “leer coden, mongool” warnings (people should simply disable warnings if they don’t handle them if you ask me).
Regardless of the warnings the compilation completed and I now have a shiny new package.
After upgrading and restarting pulseaudio, there’s even sound coming out of my speakers when I hinted mpd to play. Woei.




:, , , ,

Leave a Reply

You must be logged in to post a comment.