зеркало из https://github.com/github/ruby.git
spec_helper.rb: must find libruby.so
* spec/ruby/optional/capi/spec_helper.rb (compile_extension): if libruby.so should have been built but is not found, fail early. get mtime of the library just once. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61491 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
42c6ef00af
Коммит
a1695d9c2c
|
@ -24,18 +24,21 @@ def compile_extension(name)
|
|||
lib = "#{object_path}/#{ext}.#{RbConfig::CONFIG['DLEXT']}"
|
||||
ruby_header = "#{RbConfig::CONFIG['rubyhdrdir']}/ruby.h"
|
||||
libruby_so = RbConfig::CONFIG['LIBRUBY_SO']
|
||||
ruby_library = "#{RbConfig::CONFIG['libdir']}/#{libruby_so}"
|
||||
unless libruby_so and File.exist?(ruby_library)
|
||||
# Statically-compiled lib in the binary, ignore this check
|
||||
ruby_library = nil
|
||||
end
|
||||
|
||||
return lib if File.exist?(lib) and
|
||||
File.mtime(lib) > File.mtime("#{extension_path}/rubyspec.h") and
|
||||
File.mtime(lib) > File.mtime("#{extension_path}/#{ext}.c") and
|
||||
File.mtime(lib) > File.mtime(ruby_header) and
|
||||
(!ruby_library || File.mtime(lib) > File.mtime(ruby_library)) and
|
||||
true # sentinel
|
||||
begin
|
||||
mtime = File.mtime(lib)
|
||||
rescue Errno::ENOENT
|
||||
# not found, then compile
|
||||
else
|
||||
case # if lib is older than headers, source or libruby, then recompile
|
||||
when mtime <= File.mtime("#{extension_path}/rubyspec.h")
|
||||
when mtime <= File.mtime("#{extension_path}/#{ext}.c")
|
||||
when mtime <= File.mtime(ruby_header)
|
||||
when libruby_so && mtime <= File.mtime("#{RbConfig::CONFIG['libdir']}/#{libruby_so}")
|
||||
else
|
||||
return lib # up-to-date
|
||||
end
|
||||
end
|
||||
|
||||
# Copy needed source files to tmpdir
|
||||
tmpdir = tmp("cext_#{name}")
|
||||
|
|
Загрузка…
Ссылка в новой задаче