Manually load GGML dependency for Linux/OSX #842
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
After the introduction of the GGML dependency in the July 2024 binary update, the tests for Linux/OSX were failing because the NativeLibrary failed to load the GGML dependency.
There were two ways to tackle the issue:
UseDllDirectoryForDependencies
inNativeLibrary.TryLoad
, however, this does not seem to help on Linux / OSXLD_LIBRARY_PATH
environment variable to the current runtime directory, however, theLD_LIBRARY_PATH
environment variable has to be set before the application starts, making it unusable in most cases, and incompatible with attempting to load multiple librariesThis PR introduces manually resolving the
GGML
dependency inTryLoadLibrary
before loading the main library, for Linux & OSX.I have ran the unit tests locally on Ubuntu 22.04 and they are now passing, and have also confirmed that building a standalone application where the
.so
files are placed in the same directory as the executable still work correctly.I haven't ran the tests for OSX because I don't have access to it, but I hope those tests will also pass now, as they were reporting the same error. Maybe we can do this through GitHub?
Note: this is based on, and will merge into
july-2024-binaries