ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
From: halostatue@gmail.com
To: ruby-core@ruby-lang.org
Subject: [ruby-core:103260] [Ruby master Bug#17777] 2.6.7 fails to build on macOS: implicit declaration of function 'rb_native_mutex_destroy' is invalid in C99
Date: Tue, 06 Apr 2021 23:58:31 +0000 (UTC)	[thread overview]
Message-ID: <redmine.journal-91343.20210406235831.772@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-17777.20210405171425.772@ruby-lang.org

Issue #17777 has been updated by austin (Austin Ziegler).


Digging a bit deeper in to this second item; it looks like we’re doing `USE_HEADER_HACKS`, which means we’re loading `<ffi/ffi.h>` and using the compiler that came with Big Sur (based on Xcode 12), I see the following:

```c
#if FFI_LEGACY_CLOSURE_API
FFI_AVAILABLE_APPLE_2019 FFI_API ffi_status
ffi_prep_closure (ffi_closure*,
		  ffi_cif *,
		  void (*fun)(ffi_cif*,void*,void**,void*),
		  void *user_data)
#if defined(__GNUC__) && (((__GNUC__ * 100) + __GNUC_MINOR__) >= 405)
  __attribute__((deprecated ("use ffi_prep_closure_loc instead")))
#elif defined(__GNUC__) && __GNUC__ >= 3
  __attribute__((deprecated))
#endif
  ;
#endif
```

However, it looks like the 2.7 version of `fiddle` does a little more investigation:

```diff
--- ext/fiddle/extconf.rb	2021-04-05 07:48:34.000000000 -0400
+++ ../ruby-2.7.3/ext/fiddle/extconf.rb	2021-04-05 08:39:38.000000000 -0400
@@ -13,7 +13,7 @@
   if have_header(ffi_header = 'ffi.h')
     true
   elsif have_header(ffi_header = 'ffi/ffi.h')
-    $defs.push(format('-DUSE_HEADER_HACKS'))
+    $defs.push('-DUSE_HEADER_HACKS')
     true
   end and (have_library('ffi') || have_library('libffi'))
 end or
@@ -114,8 +114,17 @@
 
 if ver
   ver = ver.gsub(/-rc\d+/, '') # If ver contains rc version, just ignored.
-  ver = (ver.split('.') + [0,0])[0,3]
+  ver = (ver.split('.').map(&:to_i) + [0,0])[0,3]
   $defs.push(%{-DRUBY_LIBFFI_MODVERSION=#{ '%d%03d%03d' % ver }})
+  warn "libffi_version: #{ver.join('.')}"
+end
+
+case
+when $mswin, $mingw, (ver && (ver <=> [3, 2]) >= 0)
+  $defs << "-DUSE_FFI_CLOSURE_ALLOC=1"
+when (ver && (ver <=> [3, 2]) < 0)
+else
+  have_func('ffi_closure_alloc', ffi_header)
 end
 
 have_header 'sys/mman.h'
@@ -142,7 +151,7 @@
   if /^\#define\s+SIZEOF_#{type}\s+(SIZEOF_(.+)|\d+)/ =~ config
     if size = $2 and size != 'VOIDP'
       size = types.fetch(size) {size}
-      $defs << format("-DTYPE_%s=TYPE_%s", signed||type, size)
+      $defs << "-DTYPE_#{signed||type}=TYPE_#{size}"
     end
     if signed
       check_signedness(type.downcase, "stddef.h")
```

This is from 229c041f057.

----------------------------------------
Bug #17777: 2.6.7 fails to build on macOS: implicit declaration of function 'rb_native_mutex_destroy' is invalid in C99
https://bugs.ruby-lang.org/issues/17777#change-91343

* Author: Eregon (Benoit Daloze)
* Status: Open
* Priority: Normal
* ruby -v: 2.6.7
* Backport: 2.6: REQUIRED, 2.7: DONTNEED, 3.0: DONTNEED
----------------------------------------
https://github.com/ruby/ruby-builder/runs/2271346109?check_suite_focus=true#step:14:11253
```
vm.c:2295:9: error: implicit declaration of function 'rb_native_mutex_destroy' is invalid in C99 
```

There is also a warning below that might be worth solving:
```
vm.c:2489:34: warning: expression does not compute the number of elements in this array; element type is 'const int', not 'VALUE' (aka 'unsigned long') [-Wsizeof-array-div]
                             sizeof(ec->machine.regs) / sizeof(VALUE));
                                    ~~~~~~~~~~~~~~~~  ^
vm.c:2489:34: note: place parentheses around the 'sizeof(VALUE)' expression to silence this warning
```



-- 
https://bugs.ruby-lang.org/

  parent reply	other threads:[~2021-04-06 23:58 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-05 17:14 [ruby-core:103241] [Ruby master Bug#17777] 2.6.7 fails to build on macOS: implicit declaration of function 'rb_native_mutex_destroy' is invalid in C99 eregontp
2021-04-05 17:17 ` [ruby-core:103242] " chris
2021-04-05 17:19 ` [ruby-core:103243] " eregontp
2021-04-06  2:37 ` [ruby-core:103246] " usa
2021-04-06  6:20 ` [ruby-core:103249] " udzura
2021-04-06  9:46 ` [ruby-core:103252] " xtkoba+ruby
2021-04-06 23:47 ` [ruby-core:103259] " halostatue
2021-04-06 23:58 ` halostatue [this message]
2021-04-07  0:00 ` [ruby-core:103261] " halostatue
2021-04-15 20:10 ` [ruby-core:103467] " halostatue
2021-04-16  5:25 ` [ruby-core:103471] " hsbt
2021-04-20 18:29 ` [ruby-core:103528] " tycho.braams
2021-04-20 19:13 ` [ruby-core:103530] " merch-redmine
2021-04-20 21:16 ` [ruby-core:103533] " tycho.braams
2021-04-21  5:10 ` [ruby-core:103536] " tdehnke
2021-04-21 16:18   ` [ruby-core:103542] " Austin Ziegler
2021-05-09 16:13 ` [ruby-core:103776] " usa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.ruby-lang.org/en/community/mailing-lists/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=redmine.journal-91343.20210406235831.772@ruby-lang.org \
    --to=ruby-core@ruby-lang.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).