Replies: 2 comments 3 replies
-
Issue lovell/sharp#4095 indicates that this is an issue in sharp v0.33.5 (which provides libvips v8.15.3) and that downgrading to v0.33.4 (libvips v8.15.2) resolves it. However, what remains unclear to me is that there were no changes in the C++ bindings between libvips v8.15.2 and v8.15.3: I also cannot spot any ABI/API incompatibilities in the pre-built libvips binaries introduced in this changeset: If we ignore the issues with Next.js' standalone(?) build, which seem to occur only on Linux, the main issue appears to be on macOS between sharp v0.33.4 and v0.33.5. Perhaps the root cause is due to the GitHub Actions runner being updated to macOS 12 (Monterey) in commit lovell/sharp@cc96c21 and lovell/sharp-libvips@f3aff14? I don't have access to a macOS device, so verifying this guess would be a bit tricky. |
Beta Was this translation helpful? Give feedback.
-
Alternative approach for sharp taken via lovell/sharp-libvips#252 |
Beta Was this translation helpful? Give feedback.
-
The C++ shared library currently uses the same ABI version as the C shared library, namely 42 (60 - 18):
libvips/meson.build
Lines 27 to 28 in f801ed6
However C++ ABI compatibility is a bit of a minefield and my investigation into lovell/sharp#4095 suggests it could relate to a collision between two different versions of the libvips C++ library both with the
libvips-cpp.so.42
soname.I had a look at what some other C++ shared libraries do to handle this.
Version 1.62.1 of gRPC uses the project version for the C++ library:
Version 1.14.10 of dbus uses its own, separately-incremented version number for the C++ library:
Something like the following might work along the lines of the gRPC approach, which seems the most sensible (i.e. lowest maintenance):
I guess there is a possible problem here in that
libvips-cpp.so.42
might be consider to be more recent thanlibvips-cpp.so.8.16.0
, so maybe we need to retain the C ABI version as a prefix too, e.g.libvips-cpp.so.42.8.16.0
?Beta Was this translation helpful? Give feedback.
All reactions