Cabbage Logo
Back to Cabbage Site

Errors trying to build on x86-64 arch linux

So I’ve sorted out the nasty mess with the vst sdk(s) and have been hacking at the PKGBUILD here .

I’m trying to build cabbage master with juce master, though I’ve tried a bunch of juce versions.

I’ve removed all the patching (for now) because none of it was working, and I’m left with the following error

Source/Widgets/CabbageWidgetData.cpp:824:48: error: use of deleted function ‘juce::var::var(const void*)’
  824 |         newColours.append (new Colour (0, 0, 0));

No idea what I’m doing with juce or cabbage, I have rusty c++ skills. Seems like a variant constructor has been removed from juce? Any help appreciated.

edit: I should add I’m using manjaro, so it’s a tad behind arch proper.

another edit: it seems to be an issue with cabbage’s code v/s new c++ standards and compilers. A “deleted function” is specifically declared, in this case it seems to be a default copy constructor taking a const void* being marked “deleted” by juce, presumably when compiled with newer compilers. It’s a sensible thing to disable… Perhaps it could be fixed with some more type specification. Deleted functions and their ilk didn’t exist last time I was using c++ though, I really don’t know. Gcc is at version 9.3 on Manjaro.

Hi @lorien. This issue was fixed in the dev branch some time ago. Can you check out develop and build with it instead. I think it should work fine. Let me know how it goes :wink:

thanks @rorywalsh, but you’ll have to excuse this old timer muso who wound up in a computer science dept and knows things like cvs and svn rather than git (15 years isn’t old).

from the PKGBUILD:

source=('git+https://github.com/rorywalsh/cabbage.git#tag=develop'

fatal: ‘develop’ is not a commit and a branch ‘makepkg’ cannot be created from it

So umm what? It works with other tags…

And you’ll need to excuse me for having never set foot in a computer science department :laughing:

I think you might need something like:

source=('git+https://github.com/rorywalsh/cabbage.git#branch=develop'

Or?

it’s building…

1 Like

Incidentally the only reason I set foot in a computer science dept was because of funding cuts leading to department closures and needing to eat. Both were at La Trobe in Melbourne (which I’m sure you know of via CMJ if nothing else). Supervisors were Jim Sosnin and David Hurst.

Thanks for an awesome proggie. I’m using it to make binaural beats, very specifically binaural beats to help bash the perception of absolute pitch into my brain wirings. It’s all working fine. Cabbage seems to be by far the best kinda GUI for what I’ve been making.

It continues to build just fine aside from the numerous warnings I’d have been too ashamed to release with :wink:

That’s the computer scientist in you! I would not be at all offended if you took to spend some time to clean up all the warnings. I’d happily merge a PR :laughing:

It’s all working, thanks. I’m in the process of either sending the PKGBUILD to the maintainer or if they don’t reply taking over the package.

We shall see about cleaning it up, not sure I want to get too involved with a big c++ project, I find c++ addictive and obsessive and hence not so mentally healthy for me. Perhaps after getting to know the program better.

Thanks for the help (and for cabbage, HUGE amount of work you’ve done).

edit: just noticed one problem with my package, it’s to do with viewing the cabbage and csound manuals via the help menu. How does one build the cabbage manual? Looks like I’ll have to patch CabbageSettings.cpp to get the csound manual working

That would be really great. I can send Eugene (ech) a mail and ask him to reach out to you.

I totally understand!

The Cabbage manual can be found here. It’s a bit of a pain to build as it’s tied to the website source.

This would assume that the Csound manual is installed to a standard directory on Linux? Is it? If so then we can simply add a default value in the Cabbage settings. You can always set the Csound manual directory within Cabbage. It can be set in the settings window.

Thanks again for the help with this. It’s very much appreciated.

I’ve already emailed Eugene as well as posting on the cabbage aur package page, so no need to reach out.

On the arch based distros the csound manual is at /usr/share/doc/csound-doc/html/ , there’s a pdf version in csound-doc as well as an html folder. Inside the html folder is an index.html, the manual is split into html files for each entry. No idea how it’s packaged in other distros, but likely the same.

I have done a little patching with sed, Eugine’s PKGBUILD for some bizarre reason was trying to find the VST_SDK location in the Projucer binary and patching the binary, it wasn’t actually doing anything because it’s cabbage that needs to know the location. I just loop over the .jucer files and replace instances of ~/SDKs/VST_SDK/VST3_SDK with /usr/include/vst36 which is where the AUR vstsdk package places it. So it’s a nice easy to build package that doesn’t need manually making ~/SDKs/VST_SDK/VST3_SDK.

One more thing: I notice in CabbageSettings.cpp there’s a theme directory is specified, should I be copying theme files into the package?

Yeah. Did you look at the cabbageInstall script?

Thanks for that, I feel stupid, ha. But glad I asked, because I can point out you have a mismatch in your default theme directory on Linux between CabageSettings.cpp and the install script. CabageSettings.cpp is looking for /usr/share/cabbage/Themes/modern-darkBG whereas the install script is placing all themes in /usr/share/cabbage. I’ll put all themes from the source in /usr/share/cabbage/Themes.

edit: found a few issues

  • There’s a problem with the csound manual, when I try launching it from the help menu nothing happens except the app loses focus. Very odd as the cabbage manual opens perfectly in firefox. I’ve double checked the csound doc folder and things, and the csound docs are working perfectly in csoundQT. I notice that there’s both an index.html and an indexframes.html in /usr/share/doc/csound-doc/html . Before I’d pointed it to the html directory cabbage would just crash, now it loses focus.
  • exporting a standalone application doesn’t work. The error is “/usr/bin/CabbagePlugin.so cannot be found? It should be in the Cabbage root folder”. CabbagePlugin.so isn’t being built
  • By default almost all linux distros these days use pulseaudio. Cabbage going into pulse has terrible glitching issues, even on a low latency kernel with all the realtime stuff setup properly. I mean glitches with 100ms buffers… I suspect you need to enable realtime priority in csound. The issue vanishes when running with jack that sorts out realtime priority.

Another edit: Arch and manjaro users can now build this, Eugine granted me co-maintainer rights and I’ve uploaded all my changes. I’m not happy with how I’ve pasted html onto the end of /usr/share/doc/csound-doc , it’s flaky, I have a bit more figuring out to do, this is the first time I’ve ever used sed.

Another edit: sorted out the csound manual issue. For some reason in my KDE the index.html file from the csound docs is showing up an an xhtml file and opening in Kate (text editor), that’s why it was losing focus and not opening in firefox. I edited the mime times and set xhtml to open in firefox and it’s all good.

Sounds good.

This feature is rather experimental and needs some attention. I haven’t got around to testing on Linux but will do soon.

That’s good to hear. I will fire up my Linux box a little later if I get a chance and go through some of these things.

Tell me about it. I’ve never been able to get any kind of decent sound with Pulseaudio. It’s Jack all the way.

Couple more things: I’ve looked into how the csound docs are built on arch. They aren’t. The pdf and the html are downloaded from the csound site when building csound. I’ve seen different packaging between different distros, but quite a while ago. It’s very likely standardised now, so I suggest change your code to look for the csound manual in /usr/share/doc/csound-doc/html and I’ll get rid of my sed hack.

Blue manages to get pulse being nearly glitch free, but you have to check a “realtime” checkbox, don’t remember where anymore and don’t have it installed. You could ask Steven Yi if it’s hard to find and you are interested. But jack and pulse are changing to pipewire soon (designed to be compatible with both), so maybe if you ignore it the problem will go away.

I"m not so sure it is. But I will take a look.

I’m a big fan of giving problems a chance to go away on their own!