Cabbage Logo
Back to Cabbage Site

Building Cabbage again/Juce version

That’s the thing. They ARE in the same dir now:
My home folder has:
cabbage-develop/Builds/LinuxMakefile/ In this dir resides the file buildCabbage, that has lines like:
…/…/…/JUCE/extras/Projucer/Builds/LinuxMakefile/build/Projucer --resave …/…/CabbageIDE.jucer
that is 3 directories back, so into my Home folder.
My home folder also has:
~/JUCE/extras/Projucer/Builds/LinuxMakefile/build, where the file Projucer resides (or should that be a dir?
But wait, I had named the file Producer.sh, renamed it to Producer and now Cabbage starts to build…

There are still errors building cabbage:

Compiling CabbageKeyboardDisplay.cpp
…/…/Source/Utilities/CabbageColourProperty.cpp: In member function ‘virtual void ColourPropertyComponent::mouseDown(const juce::MouseEvent&)’:
…/…/Source/Utilities/CabbageColourProperty.cpp:58:43: error: cannot convert ‘ColourPallete*’ to ‘std::unique_ptrjuce::Component
58 | CallOutBox::launchAsynchronously (colourSelector, getScreenBounds(), nullptr);
| ^~~~~~~~~~~~~~
| |
| ColourPallete*

and near the end:

make: *** [MakeCabbageLite:247: build/intermediate/Release/CabbageColourProperty_a06c91be.o] Error 1
make: *** Waiting for unfinished jobs…
In file included from …/…/Source/StandaloneLite/StandaloneFilterApp.cpp:2:
…/…/Source/StandaloneLite/StandaloneFilterWindow.h: In member function ‘const juce::String StandaloneFilterWindow::getInstrumentname()’:
…/…/Source/StandaloneLite/StandaloneFilterWindow.h:449:21: warning: control reaches end of non-void function [-Wreturn-type]
449 | StringArray csdLines;
| ^~~~~~~~
cp: cannot stat ‘./build/CabbageLite’: No such file or directory
Copying over docs and icons…
/usr/bin/ld: /tmp/ccCY9oWC.o: in function Csound::LoadPlugins(char const*)': testCsoundFile.cpp:(.text._ZN6Csound11LoadPluginsEPKc[_ZN6Csound11LoadPluginsEPKc]+0x27): undefined reference to csoundLoadPlugins’
collect2: error: ld returned 1 exit status

You’re close now! That colour change error is a result of some recent changes. I’ll need to update the source. Can you clone the cabbage repo into your home folder so you can pull from the develop branch? It will make things simpler in the long run too once you’re up and running.

I just finished the job by also running installCabbage. it looked alright, but when I load my fluidGUI.csd, I am plaged by these errors again:
WARNING: could not open library ‘/usr/local/lib/csound/plugins64-6.0/libserial.so’ (/usr/local/lib/csound/plugins64-6.0/libserial.so: undefined symbol: __pow_finite)
WARNING: could not open library ‘/usr/local/lib/csound/plugins64-6.0/libstkops.so’ (libstk-4.5.0.so: cannot open shared object file: No such file or directory)
WARNING: could not open library ‘/usr/local/lib/csound/plugins64-6.0/libquadbezier.so’ (/usr/local/lib/csound/plugins64-6.0/libquadbezier.so: undefined symbol: __sqrt_finite)
WARNING: could not open library ‘/usr/local/lib/csound/plugins64-6.0/libemugens.so’ (/usr/local/lib/csound/plugins64-6.0/libemugens.so: undefined symbol: __pow_finite)
WARNING: could not open library ‘/usr/local/lib/csound/plugins64-6.0/libscugens.so’ (/usr/local/lib/csound/plugins64-6.0/libscugens.so: undefined symbol: __exp_finite)
WARNING: could not open library ‘/usr/local/lib/csound/plugins64-6.0/libfluidOpcodes.so’ (libfluidsynth.so.1: cannot open shared object file: No such file or directory)
WARNING: could not open library ‘/usr/local/lib/csound/plugins64-6.0/libbeosc.so’ (/usr/local/lib/csound/plugins64-6.0/libbeosc.so: undefined symbol: __fmod_finite)
WARNING: could not open library ‘/usr/local/lib/csound/plugins64-6.0/libbuchla.so’ (/usr/local/lib/csound/plugins64-6.0/libbuchla.so: undefined symbol: __pow_finite)
WARNING: could not open library ‘/usr/local/lib/csound/plugins64-6.0/libgtf.so’ (/usr/local/lib/csound/plugins64-6.0/libgtf.so: undefined symbol: __exp_finite)
WARNING: could not open library ‘/usr/local/lib/csound/plugins64-6.0/libexciter.so’ (/usr/local/lib/csound/plugins64-6.0/libexciter.so: undefined symbol: __sqrt_finite)
WARNING: could not open library ‘/usr/local/lib/csound/plugins64-6.0/libsterrain.so’ (/usr/local/lib/csound/plugins64-6.0/libsterrain.so: undefined symbol: __pow_finite)

Are you sure you ran sudo make install when building Csound? And also sudo ldconfig?

Btw, installCabbage is not much good if there isn’t a Cabbage to install? I assume you build/install folder is empty? Or what did build?

[edit] I just build here on Linux from the dev branch and I got no build errors. Can you try checking out the develop branch and building that?

Yes I did that.

The build/intermediate/Release folder has files from today
Under LinuxMakeFile I started Cabbage.desktop and that run, but with the error in my file I described. BTW, other csd’s run OK, so maybe it is a corruption in my specific csd…
BTW, I am using a recent dev branch all the time…

I’ve no idea what you get these warnings. If you are running the Cabbage you built yourself then there shouldn’t be any such warning. Comments out these lines from the buildCabbage script:

Comment out this line too:

Then rerun buildCabbage. That should build everything it can and place it into the install folder. You should be able to run Cabbage from there. Simply cd in the command line to that folder and run ./Cabbage Let me know what happens. (it might be ./cabbage, I’m not sure)

There is no Cabbage file in the install folder, only Cabbage.Desktop, but that is from yesterday.
In install/Desktop there is a Cabbage.Desktop from today. I can run that by double clicking but the problem with my file remain. BTW this Cabbage.desktop points to /usr/bin/Cabbage

BTW, it looks like a corruption in my specific csd file. When I create a new one it’s ok

It seems to me like the cabbage you are running is the older version. If there is no cabbage binary in the install/bin folder then it wasn’t built.

I ran the build again, redirecting std out and std error to the attached file. You can see that there are some error regarding directories.
Only object files in the ‘intermediate’ dir are created…

outfile.txt (92.5 KB)

My first reply to this thread states you need to use JUCE 5.4.3. One of the first things your error messages tell me is that you are using JUCE 6.0.4.

…we are going around in circles…

Oops, I thought I did that. Now, compiling this version I get some nasty errors:

richard@richard-ESPRIMO-C910:~/JUCE-5.4.3/extras/Projucer/Builds/LinuxMakefile$ sudo make
[sudo] password for richard:
Compiling jucer_AutoUpdater.cpp
In file included from …/…/…/…/modules/juce_graphics/juce_graphics.h:121,
from …/…/…/…/modules/juce_gui_basics/juce_gui_basics.h:57,
from …/…/…/…/modules/juce_analytics/juce_analytics.h:55,
from …/…/JuceLibraryCode/…/JuceLibraryCode/JuceHeader.h:17,
from …/…/Source/Application/…/Application/jucer_Headers.h:29,
from …/…/Source/Application/jucer_AutoUpdater.cpp:27:
…/…/…/…/modules/juce_graphics/colour/juce_PixelFormats.h: In member function ‘juce::uint8& juce::PixelARGB::getAlpha()’:
…/…/…/…/modules/juce_graphics/colour/juce_PixelFormats.h:116:77: error: cannot bind packed field ‘((juce::PixelARGB*)this)->juce::PixelARGB::.juce::PixelARGB::::comps[3]’ to ‘juce::uint8&’ {aka ‘unsigned char&’}
116 | e uint8& getAlpha() noexcept { return comps [indexA]; }

Something is wrong here. The projucer builds out of the box every time.

Try a make clean and make once more…

Tried that, the same result…

I got an answer from the JUCE forum that it has to do with the version of GCC I am using (9.3.0)
What are you using?
Here is the answer BTW:

AFAIK, these errors come from building with GCC 9.

You can either cherry-pick https://github.com/juce-framework/JUCE/commit/4e0adb2af8b424c43d22bd431011c9a6c57d36b6 or use an older version of GCC.

I hope this helps!

Ouch. I’m not sure what version I’m using, whatever the distro installed when I ran apt-get build essentials. Is it the same with Juce 5.4.7? Can you try that one?