PulseAudio in Gentoo, another update

I think it’s worth to provide this status update, as I’m not revbumping (for obvious reasons) pulseaudio every time I do a change, so it’s easier to follow the changes here rather than checking the ChangeLog and the patches.

First of all, I want to thanks once again Lennart for helping me with defining the setup installed with PulseAudio ebuild, without him I wouldn’t have been able to come to the current point (that is working pretty fine for me at least).

The main change since last update is that the access group is changed from audio to pulse-access, to follow what next versions of PulseAudio will do. This actually meant that I had to logout and logint o apply the changes to my own user 😉

Also, I’ve fixed the init script so that it does not gives a chmod error when pulseaudio failed to start, when I added a few more options to the daemon itself.

Another big, but really big, thing, is that now PulseAudio installs by default with a setup proper for a per-user pulseaudio daemon run, as recommended when there aren’t reasons to use the system-wide one. I don’t change default.pa during install anymore, but rather install a side system.pa script that’s used by the init.d, where I set the correct parameters for a system-wide use. If you want to use system-wide pulseaudio you can copy /etc/pulse/client.conf.system to /etc/pulse/client.conf or to ~/.pulse/client.conf for the user you want to use the system-wide pulseaudio with. No other change is needed to switch from the two. Of course you need to configure default.pa or system.pa as you need on your system.

On the FreeBSD front, Lennart added me as porter, and I’m really honoured. I also gave him another patch today that adds support for auto-detection of dsp devices on FreeBSD (where they have a slightly different naming scheme), while tonight I left him a message with another to fix the esdcompat script (see later on this blog) – although I just noticed it’s broken and I want to fix before going to sleep. This means that PulseAudio currently works transparently on both Gentoo Linux and Gentoo/FreeBSD, and it’s available for vanilla users so that it works from SVN at least (I’ll see if I’m able to get a look to the SVN version before 0.9.3 release to make sure that nothing was added that breaks on FreeBSD).

Now, the other interesting thing is the ESounD wrapping support, that was up to now ignored. The problem was that to work, /usr/bin/esd needed to be symlinked to esdcompat, the wrapper that do the job of passing control to PulseAudio rather than esound, but if I install that symlink from media-sound/pulseaudio, it would conflict with media-sound/esound, disallowing merging them together. At the same time, libesd is needed even for this wrapping, as PulseAudio does not provide also library wrapping. Debian handled this with alternatives, Lennart told me, so I ended up asking help to our eselect gurus, and thanks to Ciaran I’m now able to provide you an esd eselect module (actually, the module is 99% Ciaran’s vi.eselect with the exclusion of the four lines needed to display the implementation name rather than the link name). Unfortunately this required a new revision for esound, a new ebuild for the eselect module, blocks all over, and dependencies set accordingly. Not an easy task but now it’s done.

Note: the support for esd wrapping using a system-wide PulseAudio daemon is not working, I could have done tonight I if I stayed awake, but I don’t think it’s the case as I’m starting confusing myself. I’ll fix that tomorrow.

Now for everybody who joked about the number of ebuilds I added to portage being negative in the past (when I removed stuff from media-video, that is), I’d like you to look at what I’ve added recently 😛 This PulseAudio puzzle is something reeeeally long to complete. I think I never used package.mask as much as I’m doing lately. I suppose this is also because I’m using the maintree for the job rather than an overlay, but with the kind of experiments here needed, I find history important, shows the user what the risks are (by p.masking) and after all I do want tests and bugs.

I’m afraid arches will hate me when I’ll ask them to do the re-keywording tho 🙂