You are not logged in.

#1 2023-03-20 22:08:11

CraigPidruchny
Member
Registered: 2021-11-21
Posts: 7

Calf plugins not loading in Ardour

It seems that the recent upgrade to libinstpatch has caused the Calf plugins to be unable to load.

lilv_lib_open(): error: Failed to open library /usr/lib/lv2/calf.lv2/calf.so (/usr/lib/libinstpatch-1.0.so.2: undefined symbol: g_string_free_and_steal)

Offline

#2 2023-03-21 20:51:14

Maniaxx
Member
Registered: 2014-05-14
Posts: 738

Re: Calf plugins not loading in Ardour

Please post this:

$ pacman -Qs "ardour|calf|^linux$|^glib2$"

sys2064

Offline

#3 2023-03-25 07:52:43

nickgirga
Member
Registered: 2023-03-25
Posts: 2

Re: Calf plugins not loading in Ardour

I was having the same issue but with Carla. Here was my solution (WARNING: DON'T DO THIS ON A HOST SYSTEM):

sudo pacman -U https://archive.archlinux.org/packages/l/libinstpatch/libinstpatch-1.1.6-1-x86_64.pkg.tar.zst

This will downgrade libinstpatch to a version before the current one (which is 1.1.6-2 at the time of writing). If done on a host system, this can conflict with other tools that may utilize this library, which is why I strongly advise that you only ever perform operations like this inside of containers. If a system tool relies on it (unlikely with an instrument-related library in all honesty), your system may fail to boot. Fortunately, I already use Ardour in an Arch-based podman container (so it isn't removed after updates on SteamOS), so I could safely test that, and it makes Carla work perfectly as an LV2 plugin in Ardour again.

You can see in the archives that an update was released just a week ago (https://archive.archlinux.org/packages/l/libinstpatch). The update just prior (1.1.6-1) worked fine. Clearly something happened between 1.1.6-1 and 1.1.6-2 regarding the "g_string_free_and_steal" symbol. Not sure if that was intentional, but hopefully it is resolved soon.

If you REALLY need to use those plugins and cannot wait for a real fix, you might be able to get away with using a custom install dir for pacman (see "--root"), installing the downgraded/archived package to it, and using the

LD_PRELOAD="/path/to/library.so"

or

LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/path/to/directory/"

environment variable to load the old library from the custom directory. This way, you can tell a specific app to use the old library without interfering with the system's installed version and without the need for an entire podman/docker/proot/chroot setup.

Also, for context: there is no official 1.1.6-2 for libinstpatch (https://github.com/swami/libinstpatch/releases). There still hasn't been a release since 2021. Just a 1.1.6. This seems to be an Arch package issue. You could try creating an issue/bug for the Arch package (https://archlinux.org/packages/extra/x8 … instpatch/) under "Package Actions" on the right to hopefully have an official fix released or at least an explanation of why this is happening now. 1.1.6-2 was apparently only supposed to be a rebuild in order to re-sign the package (https://github.com/archlinux/svntogit-p … dd923bce5a).

Last edited by nickgirga (2023-03-25 09:13:34)

Offline

#4 2023-03-25 09:55:45

nickgirga
Member
Registered: 2023-03-25
Posts: 2

Re: Calf plugins not loading in Ardour

Ok I've tested. This is the easiest fix for system installs (no containers).

Preparations:

mkdir -p "$HOME/.local/lib/libinstpatch-1.1.6-1/var/lib/pacman/"
sudo pacman -Syy --root "$HOME/.local/lib/libinstpatch-1.1.6-1"
sudo pacman -U https://archive.archlinux.org/packages/l/libinstpatch/libinstpatch-1.1.6-1-x86_64.pkg.tar.zst --root "$HOME/.local/lib/libinstpatch-1.1.6-1"

Launching (the official Ardour binary):

LD_PRELOAD="$HOME/.local/lib/libinstpatch-1.1.6-1/usr/lib/libinstpatch-1.0.so.2" /opt/Ardour-7.3.0/bin/ardour7

While this works great there are 2 issues with it:

  • because we are asking pacman to install all dependencies as well, this takes at least 265.1 MiB (the second point elaborates on why this was intentional)

  • this will likely stop working when libinstpatch's dependencies are updated on the actual system to a point of incompatibility. At this point, we may want to use LD_LIBRARY_PATH in lieu of LD_PRELOAD in order to load all of libinstpatch-1.1.6-1's version-specific dependencies that we installed with it (and that's still a shot in the dark). Hopefully a real solution will be presented before then.

You could try just curling/downloading the pkg.tar.zst, extracting it, and using LD_PRELOAD with that, but this will not gather the version-specific dependencies for you.

Last edited by nickgirga (2023-03-25 10:03:35)

Offline

Board footer

Powered by FluxBB