Firebird - status update (not ready yet)

Bunth Tamás btomi96 at gmail.com
Sun Aug 14 12:11:55 UTC 2016


>> It seems, I can use dylib tokens like
>> "@loader_path/libEngine12.dylib" in the string passed to dlopen.
>
> I don't know. I don't find a reference online that says that dlopen
> understands those tokens. Did you find some documentation that says it
> does? I see it only referenced about dependent libraries.

I didn't find any documentation neither, but the following scenario proves,
that it works (patch set 15):
- Change dependency of isql's fbclient library:
install_name_tool -change
$(LO_ROOT)/Unpackedtarball/firebird/gen/Release/firebird/lib/libfbclient.dylib.3.0.0
$(LO_ROOT)/instdir/LibreofficeDev.app/Contents/Frameworks/libfbclient.dylib.3.0.0
path/to/isql
- run isql
- type: create database "hello.fdb";

The database is successfully created. I used isql for testing it.
With soffice, it does not work for some reason.

> What we could conceptually do is something like:
>
>  OUString sLibURL("$LO_LIB_DIR");
>  ::rtl::Bootstrap::expandMacros(sLibURL);
>  OUString sEnginePath;
>  ::osl::FileBase::getSystemPathFromFileURL(sLibURL + "/libEngine12.dylib", sEnginePath);
>  dlopen(OUStringToOString(sEnginePath, RTL_TEXTENCODING_UTF8).getStr());
>
> But the expandMacros and getSystemPathFromFileURL has to be done from
> libreoffice code, while the dlopen is done from firebird code... That
> could be a difficulty... A somewhat hackish solution is that
> libreoffice code sets some environmental variable (or ... horror of
> horrors ... a global variable) that the firebird code reads. <shrug>

DYLD_LIBRARY_PATH could be defined. I'll try this way.

Tamás


More information about the LibreOffice mailing list