Skip to content

Build on Debian or Ubuntu

Ryan edited this page Jul 31, 2023 · 15 revisions

Introduction

Building the pulseaudio modules is a two-stage process:-

  1. Extract internal development files from the pulseaudio server build
  2. Build the xrdp pulseaudio modules using the files obtained from stage 1

Step 1 is a complicated process. For Debian/Ubuntu however, some convenience scripts have been provided to make this process much simpler.

The internal files obtained from step 1 are OS-version specific. If your version of pulseaudio is changed during a significant upgrade, you may need to re-run the entire process.

See also these 3rd part repositories which contain files which may make the process easier for you. These repositories are not affiliated to this project:-

Convenience scripts

The convenience scripts can be found in the top-level scripts directory of the distribution.

By default, running either of these scripts results in the pulseaudio development files being written to ~/pulseaudio.src.

If you are running a release version of this software, be aware that later versions of the scripts may be available on the master development branch.

scripts/install_pulseaudio_sources_apt.sh

This is a low-level script which gets hold of the required pulseaudio development files by installing the pulseaudio server and configuring it

The script installs all the pulseaudio build dependencies on the source machine.

Use this script if you are a pulseaudio developer, or want to get hold of the required files as quickly as possible.

scripts/install_pulseaudio_sources_apt_wrapper.sh

This is a higher-level script which calls install_pulseaudio_sources_apt.sh in a way which makes it possible to remove all the dependencies when the build has finished.

This process is much slower than calling install_pulseaudio_sources_apt.sh, particularly on machines using older hard drive technology. However, it doesn't pollute the hard drive with dependencies you may never need again.

In general, this is the script to use. This document assumes you are using this script.

Some platforms may require parameters to be passed to this script. If you get messages about missing packages, this may apply to you. See below for more details.

Build process

Prerequisites and assumptions

  • The user you are using must have sudo access.

  • These instructions assume you are working in the user's home directory. They have not been tested in other locations.

  • Some build tools and package development tools are required to build the pulseaudio module itself. Make sure these tools are installed:-

    sudo apt install build-essential dpkg-dev libpulse-dev git autoconf libtool

Obtaining the pulseaudio module

cd ~
git clone https://github.com/neutrinolabs/pulseaudio-module-xrdp.git
cd pulseaudio-module-xrdp

Getting the internal pulseaudio development files

Run the required convenience script. As this uses sudo, you may be prompted once or twice for your password:-

   $ scripts/install_pulseaudio_sources_apt_wrapper.sh 
   - Creating focal build root. Log file in /var/tmp/pa-build-xuser-debootstrap.log
   [sudo] password for xuser: <enter password>
   - Creating schroot config file /etc/schroot/chroot.d/pa-build-xuser.conf
   - Copying /etc/apt/sources.list to the root
   - Copying the wrapped script to the root
   - Building PA sources. Log file in /var/tmp/pa-build-xuser-schroot.log
   - Removing schroot config file and build root
   - All done. Configure PA xrdp module with PULSE_DIR=/home/xuser/pulseaudio.src
   

Build the xrdp pulseaudio module

If you use Debian/Ubuntu's default shell, run following commands:

./bootstrap && ./configure PULSE_DIR=~/pulseaudio.src 
make

If you use zsh, run following commands:

./bootstrap && ./configure PULSE_DIR=$HOME/pulseaudio.src
make

Installation

See the README for installation instructions.

Building on some Debian derivatives

Some derivatives of Debian or Ubuntu use either their own mirrors (e.g. Raspberry PI OS), or their own distribution codenames (e.g. Linux Mint).

When using the install_pulseaudio_sources_apt_wrapper.sh script, it may be necessary to tell the script which mirror (and keyfile) to use to obtain packages, or the codename of the base distribution.

The following systems are known to require additional parameters to use this script successfully.

System Derived from? Use this command
Raspberry PI OS Debian bullseye
./install_pulseaudio_sources_apt_wrapper.sh \
--mirror=http://raspbian.raspberrypi.org/raspbian \
--keyring=/etc/apt/trusted.gpg
Linux Mint 20.04 (uma) Ubuntu Focal
./install_pulseaudio_sources_apt_wrapper.sh \
--suite=focal
Clone this wiki locally