[前][次][番号順一覧][スレッド一覧]

ruby-changes:61218

From: Yusuke <ko1@a...>
Date: Wed, 13 May 2020 01:24:13 +0900 (JST)
Subject: [ruby-changes:61218] e1855100e4 (master): ext/fiddle/extconf.rb: check if ffi_closure_alloc is available

https://git.ruby-lang.org/ruby.git/commit/?id=e1855100e4

From e1855100e46040e73630b378974c17764e0cccee Mon Sep 17 00:00:00 2001
From: Yusuke Endoh <mame@r...>
Date: Wed, 13 May 2020 01:17:30 +0900
Subject: ext/fiddle/extconf.rb: check if ffi_closure_alloc is available

to define HAVE_FFI_CLOSURE_ALLOC.
The macro is used in closure.c, so have_func check is needed.

If pkg-config is not installed, extconf.rb fails to detect the version
of libffi, and does not add "-DUSE_FFI_CLOSURE_ALLOC=1" even when system
libffi version is >= 3.2.

If USE_FFI_CLOSURE_ALLOC is not defined, closure.c attempts to check if
HAVE_FFI_CLOSURE_ALLOC is defined or not, but have_func was removed with
528a3a17977aa1843a26630c96635c3cb161e729, so the macro is always not
defined.

This resulted in this deprecation warning:

https://rubyci.org/logs/rubyci.s3.amazonaws.com/ubuntu2004/ruby-master/log/20200512T123003Z.log.html.gz
```
compiling closure.c
closure.c: In function 'initialize':
closure.c:265:5: warning: 'ffi_prep_closure' is deprecated: use ffi_prep_closure_loc instead [-Wdeprecated-declarations]
  265 |     result = ffi_prep_closure(pcl, cif, callback, (void *)self);
      |     ^~~~~~
In file included from ./fiddle.h:42,
                 from closure.c:1:
/usr/include/x86_64-linux-gnu/ffi.h:334:1: note: declared here
  334 | ffi_prep_closure (ffi_closure*,
      | ^~~~~~~~~~~~~~~~
```

diff --git a/ext/fiddle/extconf.rb b/ext/fiddle/extconf.rb
index 0f06b7f..120c4ce 100644
--- a/ext/fiddle/extconf.rb
+++ b/ext/fiddle/extconf.rb
@@ -122,6 +122,8 @@ end https://github.com/ruby/ruby/blob/trunk/ext/fiddle/extconf.rb#L122
 case
 when $mswin, $mingw, (ver && (ver <=> [3, 2]) >= 0)
   $defs << "-DUSE_FFI_CLOSURE_ALLOC=1"
+else
+  have_func('ffi_closure_alloc', ffi_header)
 end
 
 have_header 'sys/mman.h'
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]