Cabbage Logo
Back to Cabbage Site

Obsolete dependency on debian Sid

I’am on Debian Sid. when l launch Cabbage, i receive a error message. libjavascriptcoregtk-4.0 is no more provided by Sid (for amd64 architecture) and is replace by libjavascriptcoregtk-4.1-0 or libjavascriptcoregtk-6.0-1.
I tryed to recompile Cabbage but it seems that CabbageManual.zip could not be download with the message ‘Connection to cabbageaudio.com timed out. (connect timeout=None)’. I’am a bit lost !

Thanks for your help.

Can you try again? I think there was an issue with the server. The zip you need should be accessible from here:
https://cabbageaudio.com/beta/CabbageManual.zip
If clicking that works, then you should be able to run the build script again. Let me know how it goes :+1:

It’s ok now, thank you. But the construction script build.py reference explicitly libjavascriptcoregtk-4.0. I going try to change this.

I let you know if it work…

build.py try to download https://cabbageaudio.com/beta/heads.zip but this file is missing and process hang. Could you help me !

When I click on that link it download the zip for me. It’s strange that it’s dire not work for you? :thinking:

Strange I can access the file, but process stop with the same message :

 File "/usr/lib/python3/dist-packages/requests/adapters.py", line 553, in send
    raise ConnectTimeout(e, request=request)
requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='cabbageaudio.com', port=80): Max retries exceeded with url: /beta/heads.zip (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x7ff842faffd0>, 'Connection to cabbageaudio.com timed out. (connect timeout=None)'))

My compiling environnment is set up with deboostrap on Debian Bookworm for now…

Are you trying to build from the develop bench? If not, can you try?

The Linux CI build is building fine.
https://dev.azure.com/rorywalsh/cabbage/_build/results?buildId=2764&view=logs&j=0da5d1d9-276d-5173-c4c4-9d4d4ed14fdb
I wonder if it might be a network issue on your end? Either way, try out the dev branch and let me know.

Thank you for your help. Things have progressed well. My debootstrap build environment is very minimal and I need to add some additional dependencies (git and software-properties-common). To make sure I master the build process, I work with Debian bookworm, and the development version of cabbage. The compilation fails. Here are the logs without the warnings which are not interesting :

===========================================================
 Running CMake for Cabbage(Release)
===========================================================

-- The C compiler identification is GNU 12.2.0
-- The CXX compiler identification is GNU 12.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PkgConfig: /usr/bin/pkg-config (found version "1.8.1") 
-- Checking for module 'alsa'
--   Found alsa, version 1.2.8
-- Checking for module 'freetype2'
--   Found freetype2, version 24.3.18
-- Checking for module 'libcurl'
--   Found libcurl, version 7.88.1
-- Checking for modules 'webkit2gtk-4.0;gtk+-x11-3.0'
--   Found webkit2gtk-4.0, version 2.44.2
--   Found gtk+-x11-3.0, version 3.24.38
-- Configuring juceaide
-- Building juceaide
-- Exporting juceaide
-- Checking for module 'gtk+-3.0'
--   Found gtk+-3.0, version 3.24.38
-- Checking for module 'webkit2gtk-4.0'
--   Found webkit2gtk-4.0, version 2.44.2
-- Configuring done
-- Generating done
CMake Warning:
  Manually-specified variables were not used by the project:

    CustomStandalone
    JucePlugin_ManufacturerCode


-- Build files have been written to: /taime/cabbage-develop/build
===========================================================
 Building Cabbage(Release)
===========================================================

[0/2] Re-checking globbed directories...
[3/98] Building CXX object CMakeFiles/Cabbage.dir/Source/Opcodes/CabbageProfilerOpcodes.cpp.o
FAILED: CMakeFiles/Cabbage.dir/Source/Opcodes/CabbageProfilerOpcodes.cpp.o 
/usr/bin/c++ -DBluetooth=0 -DCabbageManufacturer=\"CabbageAudio\" -DCabbagePro=0 -DCabbage_IDE_Build=1 -DJUCE_APPLICATION_NAME_STRING=\"Cabbage\" -DJUCE_APPLICATION_VERSION_STRING=\"2.9.233\" -DJUCE_ASIO=1 -DJUCE_DISPLAY_SPLASH_SCREEN=0 -DJUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1 -DJUCE_MODAL_LOOPS_PERMITTED=1 -DJUCE_MODULE_AVAILABLE_juce_audio_basics=1 -DJUCE_MODULE_AVAILABLE_juce_audio_devices=1 -DJUCE_MODULE_AVAILABLE_juce_audio_formats=1 -DJUCE_MODULE_AVAILABLE_juce_audio_plugin_client=1 -DJUCE_MODULE_AVAILABLE_juce_audio_processors=1 -DJUCE_MODULE_AVAILABLE_juce_audio_utils=1 -DJUCE_MODULE_AVAILABLE_juce_core=1 -DJUCE_MODULE_AVAILABLE_juce_cryptography=1 -DJUCE_MODULE_AVAILABLE_juce_data_structures=1 -DJUCE_MODULE_AVAILABLE_juce_events=1 -DJUCE_MODULE_AVAILABLE_juce_graphics=1 -DJUCE_MODULE_AVAILABLE_juce_gui_basics=1 -DJUCE_MODULE_AVAILABLE_juce_gui_extra=1 -DJUCE_MODULE_AVAILABLE_juce_opengl=1 -DJUCE_MODULE_AVAILABLE_juce_product_unlocking=1 -DJUCE_PLUGINHOST_AU=1 -DJUCE_PLUGINHOST_VST3=1 -DJUCE_PLUGINHOST_VST=1 -DJUCE_STANDALONE_APPLICATION=1 -DJUCE_USE_CURL=0 -DJUCE_VST3_CAN_REPLACE_VST2=0 -DJUCE_WEB_BROWSER=0 -DJucePlugin_ProducesMidiOutput=1 -DJucePlugin_WantsMidiInput=1 -DLINUX=1 -DNDEBUG=1 -DPluginDesc=\"CabbagePlugin\" -DUse_Native_File_Browser=1 -DWebUI=1 -D_NDEBUG=1 -I/taime/cabbage-develop/build/Cabbage_artefacts/JuceLibraryCode -I/usr/local/include/csound -I/usr/include/csound -I/taime/cabbage-develop/JUCE/modules -isystem /usr/include/webkitgtk-4.0 -isystem /taime/cabbage-develop/JUCE/modules/juce_audio_processors/format_types/VST3_SDK -isystem /root/SDKs/VST_SDK/VST3_SDK -isystem /usr/include/freetype2 -isystem /usr/include/libpng16 -isystem /usr/include/gtk-3.0 -isystem /usr/include/pango-1.0 -isystem /usr/include/glib-2.0 -isystem /usr/lib/x86_64-linux-gnu/glib-2.0/include -isystem /usr/include/harfbuzz -isystem /usr/include/libmount -isystem /usr/include/blkid -isystem /usr/include/fribidi -isystem /usr/include/cairo -isystem /usr/include/pixman-1 -isystem /usr/include/gdk-pixbuf-2.0 -isystem /usr/include/gio-unix-2.0 -isystem /usr/include/atk-1.0 -isystem /usr/include/at-spi2-atk/2.0 -isystem /usr/include/at-spi-2.0 -isystem /usr/include/dbus-1.0 -isystem /usr/lib/x86_64-linux-gnu/dbus-1.0/include -isystem /usr/include/libsoup-2.4 -isystem /usr/include/libxml2 -O3 -DNDEBUG -pthread -O3 -flto -Wall -Wextra -Wstrict-aliasing -Wuninitialized -Wunused-parameter -Wsign-compare -Woverloaded-virtual -Wreorder -Wsign-conversion -Wunreachable-code -Wzero-as-null-pointer-constant -Wcast-align -Wno-implicit-fallthrough -Wno-maybe-uninitialized -Wno-missing-field-initializers -Wno-ignored-qualifiers -Wswitch-enum -Wredundant-decls -Wpedantic -Wno-strict-overflow -MD -MT CMakeFiles/Cabbage.dir/Source/Opcodes/CabbageProfilerOpcodes.cpp.o -MF CMakeFiles/Cabbage.dir/Source/Opcodes/CabbageProfilerOpcodes.cpp.o.d -o CMakeFiles/Cabbage.dir/Source/Opcodes/CabbageProfilerOpcodes.cpp.o -c /taime/cabbage-develop/Source/Opcodes/CabbageProfilerOpcodes.cpp

...


In file included from /usr/local/include/csound/csoundCore.h:36,
                 from /usr/local/include/csound/csdl.h:111,
                 from /usr/local/include/csound/plugin.h:32,
                 from /taime/cabbage-develop/Source/Opcodes/CabbageProfilerOpcodes.h:7:
/usr/local/include/csound/sysdep.h:407:15: error: reference to ‘int64’ is ambiguous
  407 | static inline int64 MYFLT2LRND64(double fval)
      |               ^~~~~

It’s really strange that problem seems to be in csound !

Regards

The best question is what version of Csound are you using?

Good question! I installed the csound 6.18 version offered by default. But the build.py script looks for csound in /usr/local/bin, and the standard installation in Debian is /usr/bin. So the version of csound is recompiled from the GitHub sources, i.e. in version 7.0… That’s the problem.
I forced the use of csound 6.18 with symbolic links and added some missing dependencies. and finally I got the binary!

I will now try to recompile cabbage by replacing the libwebkit2gtk-4.0 dependency with the libwebkit2gtk-4.1 provided by Debian trixie and sid. But the problem is in Juce: cf. https://github.com/juce-framework/JUCE/issues/1377 And I have the impression that there is no solution yet…

Regards

The issue is the fix is probably part of JUCE8, which I don’t have a license for. We might need to pach a fix ourselves for JUCE7.

Once I had successfully built Cabbage for Debian Bookworm, I tried building for Trixie. In the build.py file I changed lines 205 and 206 to

os.system('sudo apt-get install -y libwebkit2gtk-4.1-0 libwebkit2gtk-4.1-dev')
os.system('sudo apt-get install -y libjavascriptcoregtk-4.1-0 libjavascriptcoregtk-4.1-dev')

and line 475 by:

 os.system('git clone --depth 1 --branch 8.0.2 https://github.com/juce-framework/JUCE && cd JUCE')

Then I started the construction, but it failed. No patch (lines 477 to 483) passes the files on which they apply, no longer exists, or are elsewhere. Finally the construction failed with many errors.
The transition from JUCE 6.1.2 to 8.0.2 is very important and requires a important reworking. As a example, the output of the compilation of the file GenericCabbageEditor.cpp : CabbageOutput.txt (102.3 KB)

At this point the best his to wait or help the reworking without JUCE. Where can I follow you work and see if i can help ?

Regards.

Updating to juce 8 will be a lot of work. And considering I’m moving away from using juce at all, I don’t feel like investing time in this would be worth while. On the other hand, we can try to remove these deps entirely. Let me take a look at the build and see how easy this might be. Definitely sounds easier than patching everything.

It seems the issue stems from my using the webkit framework for the webview widget. I never officially released this widget, and it’s about to be surpassed by Cabbage3, so I think I can perhaps remove it, and in doing so remove this unwanted requirement. I’ll take a look.

Great, it would allow to stay in JUCE 6.1.2 while waiting for the Cabbage3 rework

Ok, I’ve dumped out a lot of code that was making use of libwebkitgtk. I’ve updated the CMakeLists file and pushed to develop. I’ll keep an eye on the CI build progress to see if it works. If if does i think you can go ahead and rebuild yourself.

That looks to have passed the Linux build. Can you try building there and letting me know?

Yes, I’ve got it. I can play a little and it work ! Just a small test for the moment ! Than you very much for your help and reactivity.

I’m impatient to see Cabbage without JUCE. It should be smaller, concentrated on what is important…

Regards

It’s definitely going to be smaller. I’m shocked at how much bloat is in Cabbage 2 :grimacing: