Cabbage Logo
Back to Cabbage Site

Building Cabbage 2 on ubuntu

Hello,
I’ve just downloaded from git (master branch) but I cannot build it, made some progress by installing libcurl3-dev (not listed in dependancies needed) and JUCE in my home directory but this is how far I got (sorry for the italian messages):

Compiling include_juce_opengl.cpp
Compiling include_juce_video.cpp
Linking Cabbage - App
build/intermediate/Release/CabbageDocumentWindow_3af539ae.o: nella funzione "CabbageDocumentWindow::CabbageDocumentWindow(juce::String, juce::String)":
CabbageDocumentWindow.cpp:(.text+0x38dd): riferimento non definito a "PluginExporter::exportPlugin(juce::String, juce::File, juce::String)"
CabbageDocumentWindow.cpp:(.text+0x3e3e): riferimento non definito a "PluginExporter::exportPlugin(juce::String, juce::File, juce::String)"
build/intermediate/Release/CabbageDocumentWindow_3af539ae.o: nella funzione "CabbageDocumentWindow::perform(juce::ApplicationCommandTarget::InvocationInfo const&)":
CabbageDocumentWindow.cpp:(.text+0x51d0): riferimento non definito a "PluginExporter::exportPlugin(juce::String, juce::File, juce::String)"
CabbageDocumentWindow.cpp:(.text+0x56ac): riferimento non definito a "PluginExporter::exportPlugin(juce::String, juce::File, juce::String)"
build/intermediate/Release/CabbagePluginEditor_4348213a.o: nella funzione "CabbagePluginEditor::insertStringSequencer(juce::ValueTree)":
CabbagePluginEditor.cpp:(.text+0x2cdd): riferimento non definito a "CabbageStringSequencer::CabbageStringSequencer(juce::ValueTree, CabbagePluginEditor*)"
collect2: error: ld returned 1 exit status
MakeCabbageIDE:142: set di istruzioni per l'obiettivo "build/Cabbage" non riuscito
make: *** [build/Cabbage] Errore 1
cp: impossibile eseguire stat di './build/Cabbage': File o directory non esistente
./buildCabbage: riga 36: ../../../JUCE/extras/Projucer/Builds/LinuxMakefile/build/Projucer: File o directory non esistente
mv: impossibile eseguire stat di 'Makefile': File o directory non esistente
Cleaning CabbagePluginEffect
make: ***  Nessuna regola per generare l'obiettivo "../../JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp", necessario per "build/intermediate/Release/include_juce_audio_plugin_client_VST2_dd551e08.o".  Arresto.
make: *** Attesa per i processi non terminati....
cp: impossibile eseguire stat di './build/CabbagePlugin.so': File o directory non esistente
./buildCabbage: riga 43: ../../../JUCE/extras/Projucer/Builds/LinuxMakefile/build/Projucer: File o directory non esistente
mv: impossibile eseguire stat di 'Makefile': File o directory non esistente
Cleaning CabbagePluginSynth
make: ***  Nessuna regola per generare l'obiettivo "../../JuceLibraryCode/include_juce_audio_plugin_client_VST2.cpp", necessario per "build/intermediate/Release/include_juce_audio_plugin_client_VST2_dd551e08.o".  Arresto.
make: *** Attesa per i processi non terminati....
cp: impossibile eseguire stat di './build/CabbagePlugin.so': File o directory non esistente
./buildCabbage: riga 50: ../../../JUCE/extras/Projucer/Builds/LinuxMakefile/build/Projucer: File o directory non esistente
mv: impossibile eseguire stat di 'Makefile': File o directory non esistente
make: MakeCabbageLite: File o directory non esistente
make: ***  Nessuna regola per generare l'obiettivo "MakeCabbageLite".  Arresto.
make: MakeCabbageLite: File o directory non esistente
make: ***  Nessuna regola per generare l'obiettivo "MakeCabbageLite".  Arresto.
cp: impossibile eseguire stat di './build/CabbageLite': File o directory non esistente

My machine is Ubuntu 16.04, with csound 6.09.1 built from sources.
Any Idea?

Thank you in advance

Did you build the Projucer in the JUCE dir? There is a makefile there that will build it for you. You may need to modify the buildCabbage script to point to the Projucer binary. For what it’s worth, you can see the steps travis takes to build Cabbage on Linux each time a commit is made here. Let me know if you continue to have problems.

Problem solved by cloning Juce from git repository, building it again and moving the sources from subdirectories to my home (so I didn’t change the addresses in the build file), it was only a problem of relative phats.
It seems that with jack driver produce more xruns (compared to cabbage 1), maybe I need to improve some settings but I have discovered that even if I change num buffer and/or buffer size in jack, the cabbage audio settings “Audio Buffer size” offer me only the “256 samples (5.8 ms)” choice; is it normal?

Glad you got it sorted :wink:

It seems that the Jack interface provided by JUCE only lets you match the buffer settings currently being used by Jack. This could well be normal behaviour, I’m not all that well up on Jack.

Changing Jack’s buffer size should also set the buffer size in Cabbage. I just tried here. With Jack set to 256 samples I can only select 256 samples in Cabbage. If I change Jack to 64, Cabbage also selects 64. Perhaps you need to restart Jack?

Yes, changing the buffer size in jack affects the buffer size in cabbage, but the number of buffer of jack are not taken in account by cabbage: if i have 512 samples in jack but i change the number of buffer from 2 to 3 or 4… cabbage shows only 512 and relative ms number. Maybe It’s correct, I don’t know.

One other problem during compilation process is that I got only CabbageLite, I didn’t found CabbageIDE anywhere in my build, If I comment out these lines in the buildCabbage script:

make -f MakeCabbageLite clean CONFIG=Release
make -f MakeCabbageLite -j6 CONFIG=Release
cp ./build/CabbageLite CabbageBuild/Cabbage

I (obvoiusly) don’t have CabbageLite but CabbageIDE is built and working

One more question, Is the gentable widget changed from version 1? I can’t get my older files to display it.

I’m not sure either, but this is how it has always worked for me. And I can get pretty good latency?

You can just edit that last line to look like this:
cp ./build/CabbageLite CabbageBuild/CabbageLite
It’s a typo. It’s fixed in git, but the latest tip has some other changes that might be a little unstable. best to simply edit the build script for now.

The basic widget is the same, some identifiers have changed so it could be a colour issue. Can you send me on a basic test that fails?

Great, renaming worked, now I have both. If you are changing stuff I’d like to advise you that only one .desktop file is created (for Cabbage, not CabbageLite).

This is one file where gentable was working in cabbage 1, now it’s not displayed.
TPZ_Luppario.csd (26.6 KB)

That looks like an issue with macros. I’ll try to find a fix. Give me a moment…

p.s thanks for the heads up on the .desktop file…

I have a fix for the macro issue. It actually forced me to make some bigger changes and improvements to the macro system, which I’d been putting off.

I’m sure @t_grey will be very nervous about this as his entire Cabbage empire is built on a foundation of macros! I hope I don’t cause it to tumble to the ground :grin:

Oh dear! :scream:

Tho honestly I don’t mind at all working through the problems if you don’t… especially if it’s in support of “bigger changes and improvements”. I’ll look forward to testing a fresh beta when it’s ready.

I assume this also includes the fix for macros included in the csoundcode section of an xml plant? (discussed over here: Slugs on Ver. 2.0.27a on OSX [resolved]) I hadn’t commented on that because you called it fixed… I figured you had the same thought I did; Macros in that area shouldn’t be expanded by cabbage at all anyway, but the entire block just inserted sanitized into the csound project and left for it to expand at “run time”.

Sorry, I don’t want destroy an empire just to run my crappy code!
When will be avaliable on github?

Don’t worry, my empire is built on crappy code!

Leave it with me. I’m not quite there yet. I’ll let you both know when I’ve something to show.

Crappiness will wait :grin:

1 Like

@rorywalsh I am guessing these issues may affect building Cabbage2 on Arch Linux as well?

No, the latest tip should be working fine. I have pushed any of this stuff to git.

I’m well and truly down the rabbit hole with this one. I should have something for you to test out soon. Thanks for your patience.

Ok @vallste, if you pull from the latest master and rebuild you should be good to go.

@alcomposer, what problems are you having building on Arch? Perhaps you could start a new thread?

@t_grey, don’t worry, the changes to the macro system shouldn’t affect anything you’ve done (apart from point 4 maybe), in summary:

  1. users can now place them where they like in the line as long as they come after the widget type.
  2. Cabbage no longer reorders identifiers when working with the GUI editor.
  3. The GUI editor now works fine with macros and won’t overwrite them.
  4. To override an identifier in a macro text simply add the identifier after the macro appears. This is different to what was there before, but is much easier to implement and I think it’s more intuitive too considering identifiers are read from left to right.

I’m just in the process of updating the docs.

@rorywalsh Im able to build Csound but it doesn’t build with MIDI ALSA Midi on Arch. (mainly wanting to build to test aftouch FL(0.0) as opposed to FL(127.0))
Wanting to know if there are any special libraries to install, but Arch tends to install mainly DEV versions?

Sorry, are you talking about Csound or Cabbage?