summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml2
-rw-r--r--Rakefile2
-rw-r--r--lib/ffi/library.rb15
-rw-r--r--lib/ffi/struct.rb2
-rw-r--r--spec/ffi/struct_spec.rb8
5 files changed, 22 insertions, 7 deletions
diff --git a/.travis.yml b/.travis.yml
index 9b38679..ac176d6 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -12,11 +12,13 @@ rvm:
- "2.2"
- "ruby-head"
- "rbx"
+ - "system"
env:
- CC=gcc
- CC=clang
matrix:
allow_failures:
+ - rvm: system
- os: osx
rvm: "2.2"
- os: osx
diff --git a/Rakefile b/Rakefile
index bc58d34..14bfc61 100644
--- a/Rakefile
+++ b/Rakefile
@@ -175,7 +175,7 @@ if USE_RAKE_COMPILER
ext.cross_platform = %w[i386-mingw32 x64-mingw32] # forces the Windows platform instead of the default one
end
- ENV['RUBY_CC_VERSION'] ||= '1.8.7:1.9.3:2.0.0:2.1.5:2.2.1'
+ ENV['RUBY_CC_VERSION'] ||= '1.8.7:1.9.3:2.0.0:2.1.6:2.2.2'
# To reduce the gem file size strip mingw32 dlls before packaging
ENV['RUBY_CC_VERSION'].to_s.split(':').each do |ruby_version|
diff --git a/lib/ffi/library.rb b/lib/ffi/library.rb
index 9849a3a..93d617e 100644
--- a/lib/ffi/library.rb
+++ b/lib/ffi/library.rb
@@ -109,6 +109,7 @@ module FFI
libnames.each do |libname|
begin
+ orig = libname
lib = FFI::DynamicLibrary.open(libname, lib_flags)
break if lib
@@ -121,10 +122,22 @@ module FFI
end
end
+ # TODO better library lookup logic
+ unless libname.start_with?("/")
+ path = ['/usr/lib/','/usr/local/lib/'].find do |pth|
+ File.exist?(pth + libname)
+ end
+ if path
+ libname = path + libname
+ retry
+ end
+ end
+
if ldscript
retry
else
- errors[libname] = ex
+ libr = (orig == libname ? orig : "#{orig} #{libname}")
+ errors[libr] = ex
end
end
end
diff --git a/lib/ffi/struct.rb b/lib/ffi/struct.rb
index 89231ba..0896d35 100644
--- a/lib/ffi/struct.rb
+++ b/lib/ffi/struct.rb
@@ -341,7 +341,7 @@ module FFI
# @raise if Ruby 1.8
# Add hash +spec+ to +builder+.
def hash_layout(builder, spec)
- raise "Ruby version not supported" if RUBY_VERSION =~ /1\.8\.*/
+ raise "Ruby version not supported" if RUBY_VERSION =~ /^1\.8\..*/
spec[0].each do |name, type|
builder.add name, find_field_type(type), nil
end
diff --git a/spec/ffi/struct_spec.rb b/spec/ffi/struct_spec.rb
index 1728758..9110d92 100644
--- a/spec/ffi/struct_spec.rb
+++ b/spec/ffi/struct_spec.rb
@@ -7,7 +7,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), "spec_helper"))
describe "Struct aligns fields correctly" do
it "char, followed by an int" do
- pending("not supported in 1.8") if RUBY_VERSION =~ /1.8.*/
+ pending("not supported in 1.8") if RUBY_VERSION =~ /^1\.8\..*/
class CIStruct < FFI::Struct
layout :c => :char, :i => :int
end
@@ -15,7 +15,7 @@ describe "Struct aligns fields correctly" do
end
it "short, followed by an int" do
- pending("not supported in 1.8") if RUBY_VERSION =~ /1.8.*/
+ pending("not supported in 1.8") if RUBY_VERSION =~ /^1\.8\..*/
class SIStruct < FFI::Struct
layout :s => :short, :i => :int
end
@@ -23,7 +23,7 @@ describe "Struct aligns fields correctly" do
end
it "int, followed by an int" do
- pending("not supported in 1.8") if RUBY_VERSION =~ /1.8.*/
+ pending("not supported in 1.8") if RUBY_VERSION =~ /^1\.8\..*/
class IIStruct < FFI::Struct
layout :i1 => :int, :i => :int
end
@@ -31,7 +31,7 @@ describe "Struct aligns fields correctly" do
end
it "long long, followed by an int" do
- pending("not supported in 1.8") if RUBY_VERSION =~ /1.8.*/
+ pending("not supported in 1.8") if RUBY_VERSION =~ /^1\.8\..*/
class LLIStruct < FFI::Struct
layout :l => :long_long, :i => :int
end