Building Rack with pipewire fails

hello, i try to build Rack on fedora with pipewire. this implies, that there is no jack, only an emulation with pipewire. because the majority of my audio software works and compiles, it seems, that something is wrong with rack building. Can anybody help out, whats going on. one idea is, that the jack library sits in /usr/lib64/pipewire. is it possible, to let configure check in this library path?

Regards

here is the message: checking for jack_client_open in -ljack… no configure: error: JACK support requires the jack library! make[1]: *** [Makefile:201: lib/librtmidi.a] Fehler 1 make[1]: Verzeichnis „/home/held/src/Rack/dep“ wird verlassen make: *** [Makefile:100: dep] Fehler 2

I don’t know much about packaging on Fedora but on Ubuntu you’d probably need the libjack-dev package (or whatever it’s actually called) rather than the actual jack package. The dependencies for ubuntu:

unzip git gdb curl cmake libx11-dev libglu1-mesa-dev libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev zlib1g-dev libasound2-dev libgtk2.0-dev libgtk-3-dev libjack-jackd2-dev jq zstd libpulse-dev

hmmh, that does not work on fedora, because jack package including dev is emulated with pipewire-jack. if i want to install a jack-server / library, i have to uninstall pipewire complete. Because the emulation could not live beside each other. i tried the flatpak of rack also, but there is no jack. this is usually a signal of a not correctly build. i have read this… any ideas?

You could use the regular package provided by VCV, that certainly has jack and pipewire jack support and you could at least see if Jack works in that - if Jack doesn’t exist there for you then it’s an issue with your system/configs I think.

I’m surprised this doesn’t work though and wonder if something is amiss, I’ve built a few things without jack installed and haven’t had any problems like this on arch (there are no dev packages there either). As far as I’m aware, pipewire links to all the things that jack used to provide so there should be libraries there to build from, although not 100% sure about this.

rtmidi uses cmake - it’s not well integrated with pkgconfig it seems

pkgconf jack --libs should return the right path for the pipewire supplied libjack

I’m guessing the make dep for rtmidi has to be modified to include the path.

or something like this, manually builting rtmidi:
cd dep/rtmidi/build
cmake -DAUDIOAPI=jack -DJACK_LIBRARY=/usr/lib64/pipewire-0.3/jack/libjack.so …

similar to some degree: does not detect jack if provided by pipewire-jack-audio-connection-kit-devel · Issue #5678 · supercollider/supercollider · GitHub (Sorry, I don’t have a fix, I have no fedora install right now)

2 Likes

thank you for this info! i tried it, but with no luck. but it seems, that jack is found and a function inside jack not. is this true? perhaps old code?

– Found PkgConfig: /usr/bin/pkg-config (found version “1.8.0”) – Checking for module ‘jack’ – Found jack, version 1.9.17 – Looking for jack_port_rename – Looking for jack_port_rename - not found – Found ALSA: /usr/lib64/libasound.so (found version “1.2.8”) – Performing Test CMAKE_HAVE_LIBC_PTHREAD – Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success – Found Threads: TRUE
– Compiling with support for: jack alsa – Configuring done – Generating done CMake Warning: Manually-specified variables were not used by the project:

AUDIOAPI
JACK_LIBRARY

Sorry, I gave up for now.

thanks for your ideas. will wait, if anyone manage it to run Rack with pipewire.

Regards

I’ve just built Rack on Arch with pipewire and it’s working fine for me, I can see alsa, pipewire and jack outputs.

Fedora 37 Workstation:
I got it to continue building by making a link to libjack.so somewhere ld looks:
hint: ld -ljack --verbose


Here is what I did on a clean Fedora 37 workstation install:

sudo dnf group install "C Development Tools and Libraries" "Development Tools"
sudo dnf install cmake mesa-libGLU-devel libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel perl-FindBin.noarch pipewire-jack-audio-connection-kit-devel alsa-lib-devel pulseaudio-libs-devel libstdc++-static discount

sudo ln -s /usr/lib64/pipewire-0.3/jack/libjack.so.0 /usr/lib64/libjack.so

mkdir ~/github
cd ~/github
git clone http://github.com/vcvrack/Rack
cd Rack/
git submodule update --init --recursive
make -j4 dep
make -j4
cd plugins
git clone http://github.com/vcvrack/Fundamental
cd Fundamental
make -j4
make dist
cd ../..
make dist

cd dist/Rack2Free
./Rack&

Rack 2.2.1 Free on Fedora 37 Workstation using the pipewire jack connection. (in a Virtualbox on Windows 11)

hello again, some good and bad news :frowning:

i successfully build rack here with fedora 36. the link helps to find jack. but unfortunately the audio and midi connections are not shown or strange:

  1. after starting rack, only alsa devices are shown. this is strange, because rack should display ports inside pipewire. usually all alsa devices are shown in pipewire, because they are emulated.
  2. if i connect my bluetooth headphone, it is shown as jack device inside pipewire, but no alsa devices anymore.

does anyone knows how to dig into?

regards

did you have these installed ?

yes, i use them for most audio software compiling. i’m not a developer, but i think, that rack is using some low-level functions from jack / alsa. because usually alsa is not available, if pipewire is activiated. other software is just show up in qpwgraph with ports. temporally i compiled rack without alsa support. result is, that alsa is not available (sure), but no ports in pipewire, especially no output ports. input-ports are shown from mutter??? does it help?

Hi @karlderletzte, I don’t know anything about pipewire (or development for it), but I thought I would post this in case it is helpful. What version of the C++ compiler are you using?

I ran into problems building Rack that can load most plugins. It turns out the problem was I was using g++ older than version 12.2.0, which caused more than half of my installed plugins to fail to load. I know this is not the same as your problem, but… maybe it’s useful?

I ended up building g++ 12.2.0 from source. Then I used that to build Rack. Now I have a fully functional VCV Rack built from source.

Also, have you looked in your log.txt for any clues you can post here?

hi, gcc is 12.2.1 which log.txt do you mean?

When you run Rack, it creates a log in its user folder. On Linux it is usually in $HOME/.Rack2/log.txt.

ok, isee. here is the log after start jack with jack. log.txt (25.7 KB)

and here is the screenshot from pipewire.

as you can see, no ports from rack :frowning:

hope it helps

Hmm, I didn’t see anything interesting in the log file. Maybe someone else knows more about this?

Did you make any audio connections in an audio module ?

no audio module.

audio module - Alsa + device selected:

audio module - Pulsewire + device selected:

audio module - Jack device selected:

hello, this is exactly the problem here. if you see, there are no vcv ports.

i dont know why. no errors during compiling and log shows nothing sprecial :frowning: