On October 1, 2017 12:33:04 AM GMT+02:00, "phil@highoctane.be" <phil@highoctane.be> wrote:
Usually there are a number of names to try but on Linux, there are less users and more distros, so people are not adding more libs to try.
So, yes, symlink in the plugin directory works usually.
Alternative would be to use LD_LIBRARY_PATH or pkg_config support to do this cleanly (not done at this point).
I did use LD_LIBRARY_PATH. But it did not work (it looks like Pharo vm us using it, as it is used and decorated in pharo runner script). Even link in the plugin dir did not work unless I specified simplified name. The library is libsqlite3.so.0. Using that name, it wasn't found ('lib' is probably tried, so it is likely '.0' part that somehow blocked Pharo). Shouldn't this actually be solved somehow? So linux vm loads libs using linux conventions? Or is it preinstalled wrongly in Ubuntu images on Digital Ocean when it does not have symlink named libsqlite3.so ? Herby
Phil
On Sat, Sep 30, 2017 at 11:19 PM, Herby VojÄÃk <herby@mailbox.sk> wrote:
Dan Wilczak wrote:
Hernan -
I haven't opened an issue - how do I do it? (I'm very new to Pharo.)
About continuing the search - I only mean continuing the search of the LD_LIBRARY_PATH directories, not the whole filesystem. Two changes would be needed to accomplish this:
FWIW, I had problem with loading 'sqlite3' module. Crossposting the solution:
It seems FFI for some reason struggles with 'lib' and/or '.so.0' things in linux (even if LD_LIBRARY_PATH is properly set).
I had to do this:
TARGETDIR=`find . -type f -name SqueakSSL.so -print0 | xargs -0 dirname` ln -s `/sbin/ldconfig -p | sed -e 's|[^/]*||' | grep sqlite3` ${TARGETDIR}/sqlite3.so
(so, link in plugin directory, and the name is plain 'sqlite3.so'). With that, things work. Maybe, libsqlite.so would do the trick as well, but I got no nerve to play with it more.
But, frankly, do not tell me this is what ppl need to do to load external libs in linux. :-/
Herby
1) Athens-Cairo>> CairoLibrary would have to return a list of paths to all the matching libraries rather than just the first one that it finds. This part seems easy.
2) UFFI Libraries UnixDynamicLoader>> loadLibrary:flag: would have to take the list of paths (rather than just one), check them for being 32-bit or 64-bit, and load the first correct one. I can't find any way to perform that check in Pharo directly. How would you fork or exec the "file" command from inside Pharo?
Dan
-- Sent from: http://forum.world.st/Pharo-Smalltalk-Users-f1310670.html