Cabbage Logo
Back to Cabbage Site

Fail to build cabbage on RPI4

hello everyone, I have been a proud user of cabbage on mac for several years and it is a fantastic piece of software!
I am recently approaching the linux and raspberry pi world and I am not very familiar with the terminal.

i tried to build cabbage on raspberry pi 4 with no success. I followed this guide https://github.com/rorywalsh/cabbage/tree/develop/Builds/LinuxMakefile

Below I list the steps I took

  • i installed csound via apt-get (tested with csoundqt it works).

  • I have downloaded and installed JUCE and Projucer correctly

  • I downloaded the VST2 SDK from this link: https://archive.org/details/VST2SDK and put it on the right path.
    although i don’t care to export vst so i modified build script like in this post: Anyone build and used Cabbage on Raspberry Pi?

  • I cloned the cabbage github repository, started the script

I am attaching the file with the console errors

hope you can help me thanks!
cabbage_error.txt (6.4 KB)

You will need to build Csound yourself I think. Or else install apt-get csound-dev and see if that helps. You are missing the Csound header files which Cababge needs in order to build. For now I would concentrate on getting the main IDE building rather than the entire package which requires the VST2.4 SDK. Here is a stripped down makefile you can run for now instead of the main buildCabage script.

buildCabbageMin.txt (1.1 KB)

P.S. I had to add the .txt extension in order to upload it. Replace with .sh after downloading, you might also need to change the permissions…

hi rory, thanks for the reply.
i managed to build csound (despite problems with the pffft opcode). Now there is no longer the error it gave me before.
with the script you attached I don’t quite understand what happens this is what it appears but I can’t find any compiled version in the directory:

   ===========================================
======== Build Script for Cabbage =========
===========================================
In order to build Cabbage you will need to have Csound installed, and
the Projucer from version 5.0 of JUCE built and installed.
This scripts assumes that Csound is installed in the default location, i.e, includes files
should be located in /user/local/include/csound while the Csound library itself should be
located in /user/local/lib 
It is also assumes that the VST SDK is located in ~/SDKs/

./buildCabbageMin.sh: riga 15: [: ==: atteso operatore unario
JUCE v6.0.7

**********************************************************
Projucer 6.0.7  ---  Build date: Feb  1 2021
Log started: 3 Feb 2021 5:03:16pm

Linux
CPU: 0MHz  Cores: 4  3650MB
Loading project: /home/pi/Desktop/cabbage-2.5.0/CabbageIDE.jucer
Re-saving file: /home/pi/Desktop/cabbage-2.5.0/CabbageIDE.jucer
Finished saving: Linux Makefile
Finished saving: Xcode (macOS)
Finished saving: Visual Studio 2017
Finished saving: Visual Studio 2019
Finished saving: CLion [Deprecated]
Building CabbageIDE…

                                                                                     ^

building with the script ./buildCabbage the error that continuosly appears to me is this:

 ../../Source/Utilities/CabbageColourProperty.cpp: In member function ‘virtual void ColourPropertyComponent::mouseDown(const juce::MouseEvent&)’:
../../Source/Utilities/CabbageColourProperty.cpp:58:85: error: no matching function for call to ‘juce::CallOutBox::launchAsynchronously(ColourPallete*&, juce::Rectangle<int>, std::nullptr_t)’
         CallOutBox::launchAsynchronously (colourSelector, getScreenBounds(), nullptr);
                                                                                     ^
In file included from ../../JuceLibraryCode/modules/juce_gui_basics/juce_gui_basics.h:257,
                 from ../../JuceLibraryCode/modules/juce_audio_processors/juce_audio_processors.h:56,
                 from ../../Source/Utilities/.././Settings/../../JuceLibraryCode/JuceHeader.h:20,
                 from ../../Source/Utilities/.././Settings/../CabbageIds.h:23,
                 from ../../Source/Utilities/.././Settings/CabbageSettings.h:24,
                 from ../../Source/Utilities/../CabbageCommonHeaders.h:30,
                 from ../../Source/Utilities/CabbageColourProperty.h:28,
                 from ../../Source/Utilities/CabbageColourProperty.cpp:11:
../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_CallOutBox.h:116:24: note: candidate: ‘static juce::CallOutBox& juce::CallOutBox::launchAsynchronously(std::unique_ptr<juce::Component>, juce::Rectangle<int>, juce::Component*)’
     static CallOutBox& launchAsynchronously (std::unique_ptr<Component> contentComponent,
                        ^~~~~~~~~~~~~~~~~~~~
../../JuceLibraryCode/modules/juce_gui_basics/windows/juce_CallOutBox.h:116:24: note:   no known conversion for argument 1 from ‘ColourPallete*’ to ‘std::unique_ptr<juce::Component>’
../../Source/Utilities/CabbageColourProperty.cpp: In member function ‘virtual void ColourMultiPropertyComponent::mouseDown(const juce::MouseEvent&)’:
../../Source/Utilities/CabbageColourProperty.cpp:198:89: error: no matching function for call to ‘juce::CallOutBox::launchAsynchronously(ColourPallete*&, juce::Rectangle<int>, std::nullptr_t)’
             CallOutBox::launchAsynchronously (colourSelector, getScreenBounds(), nullptr);

I think it is a problem related to the JUCE project.

thanks, as always, for the support

Check out the latest dev branch of Cabbage, and make sure you are using JUCE 5.4.7. Then it should build.

yes you are right it was my fault that I was trying to build it with JUCE 6.0.7. I was finally able to build with JUCE 5.4.7!

I tested the audio with my DAC and it all works just that I can’t export the standalone. It gives me this problem:

ERROR /usr/bin/CabbagePlugin.so cannot be found? It should be in the Cabbage root folder

It seems that the CabbagePlugin.so file is missing but in the installation folder generated by the script there are the following files: Cabbage, CabbagePluginEffect.so, CabbagePluginSynth.so, opcodes.txt

my idea was to use Cabbage to create a standalone software that opens when the RPI is turned on so I needed the standalone export option

thanks Rory!

There was na issue with creating standalone binaries on Linux as far as I recall, but in your case that shouldn’t be an issue as you do not need the plugin binaries. Open the Projucer and the one of the Jucer plugin files. Then enable standalone build. Rebuild Cabbage, it should produce a standalone app now, although I don’t think it will be called CabbagePlugin.so :thinking: Try it out and let me know. I won’t be able to test anything on Linux until tomorrow.