JACK development files for Pipewire

Hello @dscheiba
FYI the fix to find JACK development files from Pipewire has been merged into develop and will also be included in 3.13.0 when released, so this shouldn’t be a problem soon. (Of course it still applies if you want to build 3.12, unfortunately).

1 Like

Thats great news to hear, thanks for the info :slight_smile: Looking forward to 3.13!

So this definitely looks like it’s about having the right package installed. I’ve run apt-cache search pipewire to look for things to try and I’ve installed the likeliest looking candidates (many of them were already installed):

  • pipewire-jack
  • pipewire-audio-client-libraries
  • pipewire-alsa
  • libspa-0.2-jack
  • libpipewire-0.3-common
  • libpipewire-0.3-dev
  • libpipewire-0.3-modules
  • pipewire-bin

And still no good I’m afraid. The missing piece is a mystery.

Uhm, sorry for my mistake. I thought this is for Fedora (where pipewire has been used for a while), and I provided the package name for Fedora, not Ubuntu, my bad.

pipewire-jack should definitely be installed for this to work.
Looking at this thread again, and at Ubuntu – Details of source package pipewire in kinetic, I’d try installing libjack-jackd2-dev. I hope it won’t pull the full jack2 in.

… no need to apologise, this thread can serve to help people installing SC with Pipewire on various distros.

libjack-jackd2-dev does not pull in anything else, and I’ve just installed SC! Thank you to everyone that helped!

The server doesn’t start :laughing: but I think that’s for another thread.

You don’t need to have a jackd2/jackdmp process running for pipewire to be working. There’s no need to manually start it. On fedora, it’s already started as a user service.

I meant the SC server won’t start, not the JACK server.

Could I have a look at the dockerfile ? Usually I do a -DCMAKE_BUILD_TYPE=Release just in case there’s an optimisation that makes everything run faster, since it doesn’t need debug symbols in there if it’s for performances only.

Here you go :slight_smile: Right now I don’t give so much about optimization but instead more on verbosity, but maybe there are ways to make it run a bit faster?

FROM alpine:3.15

ARG MAKE_JOBS=8

WORKDIR /root

# needed for pipewire
ENV XDG_RUNTIME_DIR='/root'

# although we will use pipewire instead of jack we need the
# header bindings which are not available for pipewire-jack
# so we will instead compile against native jack but replace it
# later

RUN apk add \
    jack \
    jack-dev \
    git \
    vim

# ------------------  SUPERCOLLIDER

RUN apk add \
    alsa-lib-dev \
    boost-dev  \
    boost-static  \
    cmake  \
    eudev-dev  \
    fftw-dev  \
    libsndfile-dev  \
    libxt-dev  \
    linux-headers  \
    ncurses-dev  \
    portaudio-dev  \
    readline-dev  \
    samurai  \
    yaml-cpp-dev \
    g++ \
    make

# apply submodule fix
# see https://github.com/supercollider/supercollider/issues/5695#issuecomment-1072263846
RUN git clone \
    --depth 1 \
    --branch 3.12 \
    https://github.com/SuperCollider/SuperCollider.git && \
    cd SuperCollider && \
    sed -i "s|git://|https://|g" .gitmodules && \
    git submodule update --init --recursive && \
    mkdir -p /root/SuperCollider/build

WORKDIR /root/SuperCollider

# apply patch for alpine, see
# https://github.com/supercollider/supercollider/issues/5197#issuecomment-1047188442
COPY sc-alpine.patch .
RUN apk add patch && patch < sc-alpine.patch

WORKDIR /root/SuperCollider/build
RUN cmake \
	-DCMAKE_BUILD_TYPE=Debug \
	-DSUPERNOVA=OFF \
	-DSC_ED=OFF \
	-DSC_EL=OFF \
	-DSC_VIM=ON \
	-DNATIVE=ON \
	-DSC_IDE=OFF \
	-DNO_X11=ON \
	-DSC_ABLETON_LINK=OFF \
	-DSC_QT=OFF .. && \
	cmake --build . --config Debug --target all -j${MAKE_JOBS} && \
    cmake --build . --config Debug --target install -j${MAKE_JOBS} && \
    rm -rf /root/SuperCollider

# now we replace jack with pipewire which is more stable
# in a virtualized environment than jack which resulted
# in an unstable clock and dropouts

RUN apk del \
    jack \
    jack-dev

# ------------------  PIPEWIRE

RUN apk add \
    pipewire \
    pipewire-media-session \
    pipewire-jack \
    pipewire-tools

also check out

which I want to improve in the next days

Eventually shouldn’t the compiled files be synced to the host? Also shouldn’t the docker container be the same OS version as the host?