DISTRHO / Cardinal

Virtual modular synthesizer plugin
https://cardinal.kx.studio/
GNU General Public License v3.0
2.22k stars 153 forks source link

Headless build does not enable OSC correctly (aarch64) #560

Closed riban-bw closed 1 year ago

riban-bw commented 1 year ago

Building an aarch64 headless will create standalone executeables that do not properly enable OSC control.

See issue #557 for details of build process but in summary:

sudo apt install tmux build-essential git libdbus-1-dev libgl1-mesa-dev liblo-dev libmagic-dev libsndfile1-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev python3 libarchive-dev libjansson-dev libsamplerate0-dev libspeexdsp-dev libdbus-1-dev libgl1-mesa-dev liblo-dev libmagic-dev libsndfile1-dev libx11-dev libxcursor-dev libxext-dev libxrandr-dev cmake wget
git clone --recursive https://github.com/DISTRHO/Cardinal.git
cd Cardinal
make -j4 HEADLESS=true SYSDEPS=true STATIC_BUILD=true # intermediate step required due to build issue https://github.com/DISTRHO/Cardinal/issues/557
make -j4 HEADLESS=true SYSDEPS=true # Rebuild stand alone executables fixing issue connecting to audio server (jack/alsa)
sudo make install

Running Cardinal results in:

[0.000 info CardinalCommon.cpp:545 Initializer] Cardinal JACK/Standalone 23.07, compatible with Rack version 2.3.0
[0.000 info CardinalCommon.cpp:546 Initializer] Linux 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64
[0.000 info CardinalCommon.cpp:547 Initializer] Binary filename: 
[0.000 info CardinalCommon.cpp:549 Initializer] Bundle path: (null)
[0.001 info CardinalCommon.cpp:555 Initializer] System directory: /usr/local/share/cardinal
[0.001 info CardinalCommon.cpp:556 Initializer] User directory: /home/dietpi/Documents/Cardinal
[0.001 info CardinalCommon.cpp:557 Initializer] Template patch: /home/dietpi/Documents/Cardinal/templates/main.vcv
[0.001 info CardinalCommon.cpp:558 Initializer] System template patch: /usr/local/share/cardinal/patches/templates/main.vcv
[0.001 info CardinalCommon.cpp:572 Initializer] Initializing plugins
[0.067 info CardinalCommon.cpp:575 Initializer] Initializing plugin browser DB
[0.075 info CardinalCommon.cpp:637 loadSettings] Loading settings
[0.075 info Rack/src/settings.cpp:512 load] Loading settings /home/dietpi/.config/Cardinal/main.json
[0.076 info CardinalCommon.cpp:590 Initializer] OSC Remote control is available on request
[0.080 info Rack/src/patch.cpp:273 load] Loading patch /home/dietpi/Documents/Cardinal/templates/main.vcv
[0.080 info Rack/src/patch.cpp:273 load] Loading patch /usr/local/share/cardinal/patches/templates/main.vcv
[0.080 info Rack/src/patch.cpp:339 loadAutosave] Loading autosave /tmp/Cardinal.0001/patch.json
[0.081 info Rack/src/patch.cpp:486 fromJson] Patch was made with Rack 2.1, current Rack version is 2.3.0
[0.081 info Rack/src/window/Svg.cpp:28 loadFile] Loaded SVG /usr/local/share/cardinal/ComponentLibrary/PJ301M.svg
[0.082 info Rack/src/app/RackWidget.cpp:327 fromJson] Creating module widget DISTRHO Text Editor
[0.082 info Rack/src/app/RackWidget.cpp:327 fromJson] Creating module widget DISTRHO Host MIDI
[0.082 info Rack/src/app/RackWidget.cpp:327 fromJson] Creating module widget DISTRHO Host Time
[0.082 info Rack/src/app/RackWidget.cpp:327 fromJson] Creating module widget DISTRHO Host Parameters
[0.082 info Rack/src/app/RackWidget.cpp:327 fromJson] Creating module widget DISTRHO Host CV
[0.082 info Rack/src/app/RackWidget.cpp:327 fromJson] Creating module widget DISTRHO Audio 8

It is expected that OSC is enabled and IP port open but logging shows:

OSC Remote control is available on request

riban-bw commented 1 year ago

This is due to the use of STATIC_BUILD which undefines CARDINAL_INIT_OSC_THREAD. So I need to find a way to build without the intermediate step in #557.

For now I have removed the undefine from CardinalCommon.cpp and see UDP port 2228 available. OSC here I come...

falkTX commented 1 year ago

this is an invalid issue, static build is an internal macro not for public use, it skips the use of things that would make a glibc static build impossible (which means jack support and liblo/osc/network stuff).

a static build failing to use network things is just expected, it is what it is intended to do after all.

the issue should be about solving the build problem, lets keep discussion on that. this ticket by itself is invalid, and thus I will close that now