Fixes init validation for Termux#260
Fixes init validation for Termux#260pizcadesaber wants to merge 3 commits intolibvips:masterfrom pizcadesaber:termux-support
Conversation
Termux does not store versioned `libvips`, so a unique Termux condition is used to specify the file to locate. The INI directive `zend.max_allowed_stack_size` also does not exist, so retrieving it returns `false`.
src/FFI.php
Outdated
|
|
||
| $vips_libname = self::libraryName("libvips", 42); | ||
| // Use "libvips.so" on Termux, otherwise use the standard versioned library | ||
| $vips_libname = getenv('PREFIX') === '/data/data/com.termux/files/usr' |
There was a problem hiding this comment.
Very specific hacks like this feel bad. Perhaps we should try to open libvips.so.42 first, then fall back to libvips.so if that fails?
Off-topic, but do you know why termux doesn't include API numbers in library names? I'm curious.
There was a problem hiding this comment.
I think it's a good idea to check if .42 exists first before the other one. However, I'm not sure how to write it without breaking the code.
To be honest, in this commit, I just added conditions that worked for me to make this package function properly. It's a dependency of a package I use, and it was only failing to validate these conditions in Termux. It hasn't caused me any issues since.
Termux always updates libraries to the latest compatible version. I haven't seen any ways to downgrade a package. I guess that's the reason why it omits version numbers in its files.
There was a problem hiding this comment.
It looks like Termux needs to compile libvips with the TERMUX_MESON_ENABLE_SOVERSION=1 env set.
termux_step_pre_configure() {
export TERMUX_MESON_ENABLE_SOVERSION=1
}See for example:
https://github.com/termux/termux-packages/blob/38379b121bff426393df599b7b08554dcaea1c5f/packages/libmpdclient/build.sh#L15-L17
There was a problem hiding this comment.
... I just opened PR termux/termux-packages#24153 for this.
There was a problem hiding this comment.
PR #261 handles the directive INI check in a different way. So I revert the lines in that part.
|
I think this is now resolved from the php-vips side. We just need the soname change in termux. I suppose we could test for |
Most FFI-based libvips bindings expect version-suffixed SONAMEs. See: libvips/php-vips#260 Co-authored-by: TomIO <tomjo00@web.de>
|
I have just merged this change over on the Termux side. SO versioning will be enabled for the package starting with |
|
That's great! Thank you @TomJo2000 I'll close here. @pizcadesaber, please open a new issue if this isn't resolved. |
Most FFI-based libvips bindings expect version-suffixed SONAMEs. See: libvips/php-vips#260 Co-authored-by: TomIO <tomjo00@web.de>
Termux does not store versioned
libvips, so a unique Termux condition is used to specify the file to locate.The INI directive
zend.max_allowed_stack_sizealso does not exist, so retrieving it returnsfalse.