Skip to content

Commit 02fa414

Browse files
committed
Problem: Ruby binding can't find lib without devel package installed
Solution: Also look for my_lib.so.X where X is the major version * on Debian/Ubuntu, my_lib.so is only available with mylib-dev installed (e.g. libczmq-dev) * it used to look just for my_lib.so in the search paths * add LD_LIBRARY_PATH and /usr/lib to search paths
1 parent 7416aa1 commit 02fa414

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

zproject_ruby.gsl

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -281,12 +281,21 @@ module $(project.RubyName:)
281281
end
282282

283283
begin
284-
lib_name = '$(project.libname)'
285-
lib_dirs = ['/usr/local/lib', '/opt/local/lib', '/usr/lib64']
286-
env_name = "#{lib_name.upcase}_PATH"
287-
lib_dirs = [*ENV[env_name].split(':'), *lib_dirs] if ENV[env_name]
288-
lib_paths = lib_dirs.map { |path| "#{path}/#{lib_name}.#{::FFI::Platform::LIBSUFFIX}" }
289-
ffi_lib lib_paths + [lib_name]
284+
lib_name = '$(project.libname)'
285+
major_version = '$(project->version.major)'
286+
lib_dirs = ['/usr/local/lib', '/opt/local/lib', '/usr/lib64', '/usr/lib']
287+
lib_dirs = [*ENV['LD_LIBRARY_PATH'].split(':'), *lib_dirs] if ENV['LD_LIBRARY_PATH']
288+
lib_dirs = [*ENV["#{lib_name.upcase}_PATH"].split(':'), *lib_dirs] if ENV["#{lib_name.upcase}_PATH"]
289+
lib_paths = lib_dirs.map do |path|
290+
[
291+
"#{path}/#{lib_name}.#{::FFI::Platform::LIBSUFFIX}",
292+
"#{path}/#{lib_name}.#{::FFI::Platform::LIBSUFFIX}.#{major_version}"
293+
]
294+
end.flatten
295+
296+
lib_paths.concat [lib_name, "#{lib_name}.#{::FFI::Platform::LIBSUFFIX}.#{major_version}"]
297+
298+
ffi_lib lib_paths
290299
@available = true
291300
rescue LoadError
292301
warn ""

0 commit comments

Comments
 (0)