DISTRHO / Cardinal

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

Fails to build on aarch64 #557

Closed riban-bw closed 1 year ago

riban-bw commented 1 year ago

I have tried to compile from git origin/main https://github.com/DISTRHO/Cardinal/commit/a51cb460bc958b60c7b40c0d27943a136fe1f49b. After a long (many hours) compile, linking fails with lots of errors about undefined reference, e.g.

/usr/bin/ld: ../../plugins/plugins.a(HostParameters.cpp.o): in function `CardinalParameterPJ301MPort::onDragEnd(rack::widget::Widget::DragEndEvent const&)':
HostParameters.cpp:(.text._ZN27CardinalParameterPJ301MPort9onDragEndERKN4rack6widget6Widget12DragEndEventE[_ZN27CardinalParameterPJ301MPort9onDragEndERKN4rack6widget6Widget12DragEndEventE]+0x24): undefined reference to `CardinalDISTRHO::handleHostParameterDrag(CardinalDISTRHO::CardinalPluginContext const*, unsigned int, bool)'

I have tried building with make SYSDEPS=true HEADLESS=true on Raspberry Pi running dietpi aarch64 OS. I also tried with SYSDEPS=true although am not convinced this has not picked up the previous (partial) build.

riban-bw commented 1 year ago

This seems to happen when building standalone module. The failed linking messages appear after this:

Compiling DistrhoPluginMain.cpp (JACK)
Creating JACK standalone for Cardinal
/usr/bin/ld: ../../build/Cardinal/MenuBar.cpp.o: in function `rack::app::createMenuBar()':
MenuBar.cpp:(.text._ZN4rack3app13createMenuBarEv+0x0): multiple definition of `rack::app::createMenuBar()'; ../../build/Cardinal/CardinalPlugin.cpp.o:CardinalPlugin.cpp:(.text._ZN4rack3app13createMenuBarEv+0x0): first defined here
falkTX commented 1 year ago

I saw your other issue, does this mean you solved this? Obviously I cant reproduce this, otherwise it would show up on the CI side too. And I am using a aarch64/arm64 system too, built Cardinal from scratch just fine now.

riban-bw commented 1 year ago

This is separate to the other issue. I have managed to get a partial build but every attempt to build bombs out before completion. I managed to get some executables after some combination of build parameters but the build did not complete without errors. I am running a build now and will report success / failure...

falkTX commented 1 year ago

changing the build args after an initial build is not supported. you cant set SYSDEPS to one value, then change it to another mid way through the build. it sucks but if you want to tweak build flags you need a full rebuild every time.

riban-bw commented 1 year ago

Yes I have found that so do a make clean before building with different parameters. Current attempt is:

make -j 4 HEADLESS=true CFLAGS=-DCARDINAL_INIT_OSC_THREAD=true

Let's see how this goes...

falkTX commented 1 year ago

well those custom flags like that can easily lead to issues. liblo/osc is enabled by default on headless builds, please dont set cardinal compiler macros yourself manually.

riban-bw commented 1 year ago

The last time I tried to build headless, running the executable, e.g. CardinalNative showed OSC disabled in this build, hence the attempt to enable it.

falkTX commented 1 year ago

well it is better to investigate that case. your current build is going to fail on the mini variant that cannot have OSC enabled.

riban-bw commented 1 year ago

Okay - restarting build with make -j 4 HEADLESS=true. I will report the result in a few hours...

riban-bw commented 1 year ago

Yep! Same result.

...
/usr/bin/ld: ../../carla/build/modules/Release/native-plugins.a(distrho-wobblejuice.cpp.o):(.data.rel.ro._ZTVN12dWobbleJuice2UIE[_ZTVN12dWobbleJuice2UIE]+0x38): undefined reference to `CardinalDGL::TopLevelWidget::onCharacterInput(CardinalDGL::Widget::CharacterInputEvent const&)'
/usr/bin/ld: ../../carla/build/modules/Release/native-plugins.a(distrho-wobblejuice.cpp.o):(.data.rel.ro._ZTVN12dWobbleJuice2UIE[_ZTVN12dWobbleJuice2UIE]+0x40): undefined reference to `CardinalDGL::TopLevelWidget::onMouse(CardinalDGL::Widget::MouseEvent const&)'
/usr/bin/ld: ../../carla/build/modules/Release/native-plugins.a(distrho-wobblejuice.cpp.o):(.data.rel.ro._ZTVN12dWobbleJuice2UIE[_ZTVN12dWobbleJuice2UIE]+0x48): undefined reference to `CardinalDGL::TopLevelWidget::onMotion(CardinalDGL::Widget::MotionEvent const&)'
/usr/bin/ld: ../../carla/build/modules/Release/native-plugins.a(distrho-wobblejuice.cpp.o):(.data.rel.ro._ZTVN12dWobbleJuice2UIE[_ZTVN12dWobbleJuice2UIE]+0x50): undefined reference to `CardinalDGL::TopLevelWidget::onScroll(CardinalDGL::Widget::ScrollEvent const&)'
collect2: error: ld returned 1 exit status
collect2: error: ld returned 1 exit status
make[2]: *** [../../dpf/Makefile.plugins.mk:483: ../../bin/Cardinal] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [../../dpf/Makefile.plugins.mk:526: ../../bin/Cardinal.lv2/Cardinal.so] Error 1
collect2: error: ld returned 1 exit status
make[2]: *** [../../dpf/Makefile.plugins.mk:680: ../../bin/Cardinal.clap/Cardinal.clap] Error 1
collect2: error: ld returned 1 exit status
make[2]: *** [../../dpf/Makefile.plugins.mk:658: ../../bin/Cardinal.vst3/Contents/aarch64-linux/Cardinal.so] Error 1
make[2]: Leaving directory '/home/dietpi/Cardinal/src/Cardinal'
make[1]: *** [Makefile:128: all] Error 2
make[1]: Leaving directory '/home/dietpi/Cardinal/src'
make: *** [Makefile:135: cardinal] Error 2

The plugins are compiled:

Cardinal.clap Cardinal.lv2 Cardinal.vst Cardinal.vst3 CardinalFX.lv2 CardinalFX.vst3 CardinalMini.lv2 CardinalSynth.lv2 CardinalSynth.vst3

but it fails to compile the executeables.

falkTX commented 1 year ago

remove carla/build folder and try again, this is 99% sure just some leftover old objects that were not clean during "make clean" stage

riban-bw commented 1 year ago

Nope! make clean does remove Cardinal\carla\build and if I remove it after the failed build and run make clean again I get the same result.

riban-bw commented 1 year ago

I built with make HEADLESS=true STATIC_BUILD=true SYSDEPS=true and it seemed to build without errors. The final stages seemed to involve launching Cardinal several times to create manifests, etc. But the standalone apps will not connect to audio devices (alsa / jack). Using jalv to host the LV2 does seem to work. I wonder whether STATIC_BUILD stops the audio interface from working?

It feels like various combinations of build parameters edge me closer to a working build but am yet to find the magical incantation to make it work...

Subsequent to above build, I ran make HEADLESS=true SYSDEPS=true which completed without error. Now Cardinal standalone will start and connect to jack. I see a lot of warnings during startup, e.g.

libjack.so.0 loaded successfully!
[0.001 info CardinalCommon.cpp:545 Initializer] Cardinal JACK/Standalone 23.07, compatible with Rack version 2.3.0
[0.001 info CardinalCommon.cpp:546 Initializer] Linux 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64
[0.001 info CardinalCommon.cpp:547 Initializer] Binary filename: /home/dietpi/Cardinal/bin/Cardinal
[0.001 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.002 info CardinalCommon.cpp:557 Initializer] Template patch: /home/dietpi/Documents/Cardinal/templates/main.vcv
[0.002 info CardinalCommon.cpp:558 Initializer] System template patch: /usr/local/share/cardinal/patches/templates/main.vcv
System directory "/usr/local/share/cardinal" does not exist.
Make sure Cardinal was downloaded and installed correctly.
[0.002 info CardinalCommon.cpp:572 Initializer] Initializing plugins
Manifest file /usr/local/share/cardinal/PluginManifests/Cardinal.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Fundamental.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/21kHz.json does not exist
...
Manifest file /usr/local/share/cardinal/PluginManifests/ZZC.json does not exist
[0.009 info CardinalCommon.cpp:575 Initializer] Initializing plugin browser DB
[0.009 info CardinalCommon.cpp:637 loadSettings] Loading settings
[0.009 info Rack/src/settings.cpp:512 load] Loading settings /home/dietpi/.config/Cardinal/main.json
[0.010 info CardinalCommon.cpp:590 Initializer] OSC Remote control is available on request
[0.010 info Rack/src/patch.cpp:273 load] Loading patch /home/dietpi/Documents/Cardinal/templates/main.vcv
[0.011 info Rack/src/patch.cpp:273 load] Loading patch /usr/local/share/cardinal/patches/templates/main.vcv
[Cardinal] osdialog_message called 0 0 Could not load system template patch, clearing rack: Unarchiver could not open archive /usr/local/share/cardinal/patches/templates/main.vcv: Failed to open '/usr/local/share/cardinal/patches/templates/main.vcv'

I wonder whether this relates to having had installed Cardinal from deb packages before building. I subsequently removed the deb install but still see these warnings.

I am fairly sure that running make HEADLESS=true SYSDEPS=true on a fresh git clone will fail but running with STATIC_BUILD=true first completes without errors.

falkTX commented 1 year ago

I am fairly sure that running make HEADLESS=true SYSDEPS=true on a fresh git clone will fail but running with STATIC_BUILD=true first completes without errors.

there are builds from scratch for every commit I push, so this cannot be the case. I also built from scratch yesterday on a Linux arm64 machine and there were no issues, so really do not know why things get so complicated here.

your run logs do not seem to match the build you made by the way, for example when using HEADLESS=true the osc part is always on but on your case the logs say OSC Remote control is available on request which only happens on regular non-headless builds.

regarding the missing files, you need to pass PREFIX=... during build stage, not just install stage. this is stated on the build docs

riban-bw commented 1 year ago

I did not specify PREFIX at all and did not run install. I am running all from the bin directory within the source/build directory.

I am not doing anything clever here. I just started again from scratch:

git clone --recursive https://github.com/DISTRHO/Cardinal.git
cd Cardinal
make HEADLESS=true SYSDEPS=true

I expect this to fail again unless maybe some thing I have done or installed had fixed some of it.

Yes! I saw that OSC wasn't enabled fully. When I can get a build to work then I will move on to getting OSC working (with your help).

falkTX commented 1 year ago

do you maybe have CIBUILD set as environment variable? local builds without CI stuff enabled will always find the resources because they are path hardcoded to the current source location, so that cant possibly fail. It is how I run Cardinal 99% of the time

so I dont know, something does not make sense here

riban-bw commented 1 year ago

I don't have CIBUILD set but let's concentrate on the fact that the souce will not build without a lot of effort...

The clean git checkout and build failed again with undefined references, i.e. the object code containing the functions is either not being compiled or not being linked to. Taking one example:

/usr/bin/ld: ../../carla/build/modules/Release/native-plugins.a(distrho-vectorjuice.cpp.o): in functiondVectorJuice::PluginWindow::~PluginWindow()': distrho-vectorjuice.cpp:(.text._ZN12dVectorJuice12PluginWindowD2Ev[_ZN12dVectorJuice12PluginWindowD5Ev]+0x28): undefined reference to CardinalDGL::puglBackendLeave(CardinalDGL::PuglViewImpl*)'

puglBackendLeave is defined or declared in the following places:

carla/source/modules/dgl/src/pugl.cpp carla/source/modules/dgl/src/pugl.hpp dpf/dgl/src/pugl.mm dpf/dgl/src/pugl.cpp dpf/dgl/src/pugl.hpp

The command that is failing is the building of the Jack Standalone:

g++ ../../build/Cardinal/CardinalPlugin.cpp.o ../../build/Cardinal/CardinalCommon.cpp.o ../../build/Cardinal/CardinalRemote.cpp.o ../../build/Cardinal/common.cpp.o ../../build/Cardinal/RemoteNanoVG.cpp.o ../../build/Cardinal/RemoteWindow.cpp.o ../../build/Cardinal/DistrhoPluginMain_JACK.cpp.o -Wall -Wextra -pipe -MD -MP -fno-gnu-unique -fPIC -DPIC -DNDEBUG -O3 -ffast-math -fdata-sections -ffunction-sections -fvisibility=hidden -I/home/dietpi/Cardinal-test/Cardinal/include -I/home/dietpi/Cardinal-test/Cardinal/include/simd-compat -I/home/dietpi/Cardinal-test/Cardinal/deps/sysroot/include -DCARDINAL_SYSDEPS  -pthread -I/home/dietpi/Cardinal-test/Cardinal/src/Rack/dep/simde -DSIMDE_ACCURACY_PREFERENCE=0 -DSIMDE_FAST_CONVERSION_RANGE -DSIMDE_FAST_MATH -DSIMDE_FAST_NANS -DSIMDE_FAST_ROUND_MODE -DSIMDE_FAST_ROUND_TIES -DSIMDE_X86_SSE4_1_H -DSIMDE_X86_SSE4_2_H -Wno-unused-parameter -Wno-unused-variable -Wno-attributes -DARCH_LIN -DHEADLESS -I/home/dietpi/Cardinal-test/Cardinal/dpf/dgl/src/nanovg -I/home/dietpi/Cardinal-test/Cardinal/dpf/distrho -I/home/dietpi/Cardinal-test/Cardinal/src -I/home/dietpi/Cardinal-test/Cardinal/src/Rack/include -I/home/dietpi/Cardinal-test/Cardinal/src/Rack/include/dsp -I/home/dietpi/Cardinal-test/Cardinal/src/Rack/dep/filesystem/include -I/home/dietpi/Cardinal-test/Cardinal/src/Rack/dep/fuzzysearchdatabase/src -I/home/dietpi/Cardinal-test/Cardinal/src/Rack/dep/glfw/include -I/home/dietpi/Cardinal-test/Cardinal/src/Rack/dep/nanosvg/src -I/home/dietpi/Cardinal-test/Cardinal/src/Rack/dep/oui-blendish -I/home/dietpi/Cardinal-test/Cardinal/src/Rack/dep/pffft -I/home/dietpi/Cardinal-test/Cardinal/src/Rack/dep/tinyexpr -DHAVE_JACK -DHAVE_LIBLO -DHAVE_OPENGL -DDGL_OPENGL -DHAVE_DGL -DHAVE_X11 -DHAVE_XCURSOR -DHAVE_XEXT -DHAVE_XSYNC -DHAVE_XRANDR  -I/usr/include/dbus-1.0 -I/usr/lib/aarch64-linux-gnu/dbus-1.0/include  -DHAVE_DBUS  -DHAVE_X11  -DHAVE_XCURSOR  -DHAVE_XEXT -DHAVE_XSYNC  -DHAVE_XRANDR -DHAVE_OPENGL -DPRIVATE=  -std=gnu++11 -fvisibility-inlines-hidden -fexceptions -DDISTRHO_NAMESPACE=CardinalDISTRHO -DDGL_NAMESPACE=CardinalDGL -DNVG_DISABLE_SKIPPING_WHITESPACE -DNVG_FONT_TEXTURE_FLAGS=NVG_IMAGE_NEAREST -DDGL_WINDOWS_ICON_ID=401 -DDGL_USE_NANOVG_FBO -fno-finite-math-only -fno-strict-aliasing -U_GLIBCXX_ASSERTIONS -Wp,-U_GLIBCXX_ASSERTIONS -Wno-format-security -faligned-new -Wno-abi -I. -I../../dpf/distrho -I../../dpf/dgl -DCARDINAL_PLUGIN_PREFIX='"/usr/local"' -fdata-sections -ffunction-sections -Wl,-O1,--as-needed,--gc-sections -Wl,--strip-all  -Wl,--no-undefined -fexceptions -ldl -pthread -ldl  ../../plugins/plugins-headless.a ../rack-headless.a /home/dietpi/Cardinal-test/Cardinal/deps/surge-build/src/common/libsurge-common.a /home/dietpi/Cardinal-test/Cardinal/deps/surge-build/src/common/libjuce_dsp_rack_sub.a /home/dietpi/Cardinal-test/Cardinal/deps/surge-build/libs/airwindows/libairwindows.a /home/dietpi/Cardinal-test/Cardinal/deps/surge-build/libs/eurorack/libeurorack.a /home/dietpi/Cardinal-test/Cardinal/deps/surge-build/libs/fmt/libfmt.a /home/dietpi/Cardinal-test/Cardinal/deps/surge-build/libs/sqlite-3.23.3/libsqlite.a /home/dietpi/Cardinal-test/Cardinal/deps/surge-build/libs/sst/sst-plugininfra/libsst-plugininfra.a /home/dietpi/Cardinal-test/Cardinal/deps/surge-build/libs/sst/sst-plugininfra/libs/filesystem/libfilesystem.a /home/dietpi/Cardinal-test/Cardinal/deps/surge-build/libs/sst/sst-plugininfra/libs/strnatcmp/libstrnatcmp.a /home/dietpi/Cardinal-test/Cardinal/deps/surge-build/libs/sst/sst-plugininfra/libs/tinyxml/libtinyxml.a /home/dietpi/Cardinal-test/Cardinal/deps/sysroot/lib/libquickjs.a ../../carla/build/plugin/Release/carla-host-plugin.cpp.o ../../carla/build/modules/Release/carla_engine_plugin.a ../../carla/build/modules/Release/carla_plugin.a ../../carla/build/modules/Release/native-plugins.a ../../carla/build/modules/Release/audio_decoder.a ../../carla/build/modules/Release/jackbridge.min.a ../../carla/build/modules/Release/lilv.a ../../carla/build/modules/Release/rtmempool.a ../../carla/build/modules/Release/water.a ../../carla/build/modules/Release/ysfx.a ../../carla/build/modules/Release/zita-resampler.a  -lsndfile    -lsndfile    -llo -lpthread  -ldl -lm -lrt -lmagic  -pthread -lrt -ldl -pthread -lrt  ../../deps/aubio/libaubio.a -lfftw3f -ljansson -larchive -lsamplerate -lspeexdsp  -llo -lpthread     -o ../../bin/Cardinal

We see that it is linking ../../carla/build/modules/Release/native-plugins.a. If I nm ../../carla/build/modules/Release/native-plugins.a we see the function puglBackendLeave is called several times so what lib or object file resolves this dependency?

So it looks like pugl provides this, either from carla or from dpf/dgl. dpf/dgl seems only to be used for includes in this compile/linker command so we must be using the carla libs...

So it looks like the standalone version uses carla as a host for the plugin but carla is not being (fully?) built? So I manually build carla:

cd carla
make HEADLESS=true SYSDEPS=true

but that fails with undefined references too, e.g.

/usr/bin/ld: ../../build/modules/Release/carla_plugin.a(CarlaPluginJack.cpp.o):(.data.rel.ro._ZTVN12CarlaBackend15CarlaPluginJackE[_ZTVN12CarlaBackend15CarlaPluginJackE]+0x250): undefined reference to `CarlaBackend::CarlaPlugin::waitForBridgeSaveSignal()'

I know this is a lot of stuff and possibly down the wrong rabbit hole but I am trying to understand / trace back to where the issue is arising. As you say, this should not happen but it is happening consistently. It is most likely a missing dependency that is not detected sufficiently early to stop the build or it is a configuration difference between my platform and the reference platform.

You have said that the build works on your aarch64 platform. Did you build in the same way as me or did you use some other build process that maybe adds other configuration elements?

falkTX commented 1 year ago

I didnt build as headless in arm64 system, but the CI has a headless build test in x64/intel mode which should catch any failures.

the only thing I can think about here is different compiler versions, maybe headless build is broken under new gcc or something. nothing else makes sense.

riban-bw commented 1 year ago

I have started from scratch again...

This builds successfully but cannot connect to the audio server:

bin/Cardinal
Failed to create the Native audio driver, reason was:
Communication error with the JACK server.

Subsequently running:

make -j4 HEADLESS=true SYSDEPS=true 

builds without errors and creates an executable that will start and connects to jackd:

bin/Cardinal
libjack.so.0 loaded successfully!
[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: /home/dietpi/Cardinal/bin/Cardinal
[0.000 info CardinalCommon.cpp:549 Initializer] Bundle path: (null)
[0.000 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
System directory "/usr/local/share/cardinal" does not exist.
Make sure Cardinal was downloaded and installed correctly.
[0.001 info CardinalCommon.cpp:572 Initializer] Initializing plugins
Manifest file /usr/local/share/cardinal/PluginManifests/Cardinal.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Fundamental.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/21kHz.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/8Mode.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/AaronStatic.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/alefsbits.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Algoritmarte.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/AmalgamatedHarmonics.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/AnimatedCircuits.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/ArableInstruments.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/AriaModules.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/AS.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/AudibleInstruments.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Autinn.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Axioma.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/BaconPlugs.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Befaco.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Bidoo.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/BogaudioModules.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/CatroModulo.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/cf.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/ChowDSP.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/dBiz.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/DrumKit.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/ESeries.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/ExpertSleepers-Encoders.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Extratone.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/FehlerFabrik.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/forsitan-modulare.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/GlueTheGiant.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/GoodSheperd.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/GrandeModular.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/h4n4-modules.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/HamptonHarmonics.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/HetrickCV.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/ImpromptuModular.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/ihtsyn.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/JW-Modules.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/kocmoc.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/LifeFormModular.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/LilacLoop.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/LittleUtils.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/LomasModules.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/LyraeModules.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Meander.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/MindMeldModular.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/ML_modules.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/MockbaModular.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Mog.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/mscHack.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/MSM.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/myth-modules.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/nonlinearcircuits.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Orbits.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/ParableInstruments.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/PathSet.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/PinkTrombone.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Prism.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/rackwindows.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/RebelTech.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/repelzen.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/Sapphire.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/sonusmodular.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/stocaudio.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/stoermelder-packone.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/surgext.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/unless_modules.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/ValleyAudio.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/voxglitch.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/WhatTheRack.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/ZetaCarinaeModules.json does not exist
Manifest file /usr/local/share/cardinal/PluginManifests/ZZC.json does not exist
[0.006 info CardinalCommon.cpp:575 Initializer] Initializing plugin browser DB
[0.006 info CardinalCommon.cpp:637 loadSettings] Loading settings
[0.006 info Rack/src/settings.cpp:512 load] Loading settings /home/dietpi/.config/Cardinal/main.json
[0.006 info CardinalCommon.cpp:590 Initializer] OSC Remote control is available on request
[0.007 info Rack/src/patch.cpp:273 load] Loading patch /home/dietpi/Documents/Cardinal/templates/main.vcv
[0.007 info Rack/src/patch.cpp:273 load] Loading patch /usr/local/share/cardinal/patches/templates/main.vcv
[Cardinal] osdialog_message called 0 0 Could not load system template patch, clearing rack: Unarchiver could not open archive /usr/local/share/cardinal/patches/templates/main.vcv: Failed to open '/usr/local/share/cardinal/patches/templates/main.vcv'

Install:

sudo make install

Now it starts okay:

libjack.so.0 loaded successfully!
[0.000 info CardinalCommon.cpp:545 Initializer] Cardinal JACK/Standalone 23.07, compatible with Rack version 2.3.0
[0.001 info CardinalCommon.cpp:546 Initializer] Linux 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr  3 17:24:16 BST 2023 aarch64
[0.001 info CardinalCommon.cpp:547 Initializer] Binary filename: 
[0.001 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.068 info CardinalCommon.cpp:575 Initializer] Initializing plugin browser DB
[0.077 info CardinalCommon.cpp:637 loadSettings] Loading settings
[0.077 info Rack/src/settings.cpp:512 load] Loading settings /home/dietpi/.config/Cardinal/main.json
[0.077 info CardinalCommon.cpp:590 Initializer] OSC Remote control is available on request
[0.081 info Rack/src/patch.cpp:273 load] Loading patch /home/dietpi/Documents/Cardinal/templates/main.vcv
[0.082 info Rack/src/patch.cpp:273 load] Loading patch /usr/local/share/cardinal/patches/templates/main.vcv
[0.082 info Rack/src/patch.cpp:339 loadAutosave] Loading autosave /tmp/Cardinal.0001/patch.json
[0.083 info Rack/src/patch.cpp:486 fromJson] Patch was made with Rack 2.1, current Rack version is 2.3.0
[0.083 info Rack/src/window/Svg.cpp:28 loadFile] Loaded SVG /usr/local/share/cardinal/ComponentLibrary/PJ301M.svg
[0.084 info Rack/src/app/RackWidget.cpp:327 fromJson] Creating module widget DISTRHO Text Editor
[0.084 info Rack/src/app/RackWidget.cpp:327 fromJson] Creating module widget DISTRHO Host MIDI
[0.084 info Rack/src/app/RackWidget.cpp:327 fromJson] Creating module widget DISTRHO Host Time
[0.084 info Rack/src/app/RackWidget.cpp:327 fromJson] Creating module widget DISTRHO Host Parameters
[0.085 info Rack/src/app/RackWidget.cpp:327 fromJson] Creating module widget DISTRHO Host CV
[0.085 info Rack/src/app/RackWidget.cpp:327 fromJson] Creating module widget DISTRHO Audio 8

So it seems that building with STATIC_BUILD=true then subsequently building without STATIC_BUILD=true produces a (mostly) working system without build errors but trying to build without the intermediate step fails with undefined reference errors.

I hope this helps to trace the issue with building. I do now have a method of building (albeit rather convoluted). I will raise a separate issue about OSC control.

falkTX commented 1 year ago

I started a headless build from scratch on a linux arm64 system and can confirm the issue. It is very weird since:

  1. non-headless builds work fine
  2. headless builds on linux x64 also work fine

will see about fixing that sometime soon

riban-bw commented 1 year ago

Yay! Seems to have been fixed by commit 41cc57c. Thanks!