benkuper / Chataigne

Artist-friendly Modular Machine for Art and Technology

Home Page:https://benjamin.kuperberg.fr/chataigne

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

File dialogs not working on Linux

EmerickH opened this issue · comments

Environment

  • OS: Linux (Arch, Ubuntu, tested on multiples computers where it used to work)
  • Version: from 1.9.16b1 only on CI builds

Describe the bug / To Reproduce
When clicking Save, Save As..., Open, or any other file selection button, nothing happens

Additional context
When building my version of Chataigne (bleeding edge), everything works normally.
Using any of the website's Appimages since 1.9.16b1 doesn't work, the ones before (including release 1.9.15) works fine.

The zenity command spawned by all downloaded versions is exactly the same:

zenity --file-selection --confirm-overwrite --title=Save a Chataigne --save --file-filter=*.noisette --filename=New unsaved session.noisette

It should work anyway but it is NOT normal since the --confirm-overwrite arg should be deprecated and not be included because of benkuper/JUCE@910c60b (my zenity version is 4.0.1)

The manually compiled version spawns the correct command:

zenity --file-selection --title=Save a Chataigne --save --file-filter=*.noisette --filename=New unsaved session.noisette

I found the issue, and it's annoying...
Here is the output of Chataigne launching zenity:

/usr/bin/zenity: /tmp/.mount_Chatai3TwmMn/usr/lib/libssl.so.3: version `OPENSSL_3.2.0' not found (required by /usr/lib/libcurl.so.4)

So basically:

  • My system version of Openssl is 3.3.0
  • The included version in the Appimage is 3.2.0
  • My version of zenity (provided by my system) requires OpenSSL 3.3.0
    When launched from the Appimage, zenity will use the OpenSSL lib bundled in the Appimage instead of the system one, and thus not work.

My version is compiled directly with OpenSSL 3.3.0 so no problem, but it won't work on systems with an older version of OpenSSL.

There are a few options:

  1. We include libcurl and all its dependencies (lots of them) in the Appimage, so zenity have all the right lib versions together. Quite a big mess and not guaranteed to work with systems with too different versions.
  2. We find a way to exec external binaries with the system libs (I haven't found a way to do that but it would be the best) EDIT: found the solution in #232
  3. We remove libssl from the Appimage and require the user to have a version of openssl >=3.2.0 on their system
  4. We make JUCE fallback to the internal file chooser if zenity doesn't work

BTW, executing commands with the system module is also affected, solution 4. doesn't solve that.