Issue #13496 has been updated by MSP-Greg (Greg L).

File tool-m4-ruby_check_printf_prefix.m4.patch added
File gnu_printf.patch added
ruby -v set to ruby 2.6.0dev (2018-01-20 trunk 61983) [x64-mingw32]

Since I've been building trunk, the gnu_printf patch has moved from

Configure.in -> Configure.ac -> tool/m4/ruby_check_printf_prefix.m4

Given that both ruby-loco and RubyInstaller2 use a patch for this, it would certainly be helpful to have added integrated in trunk.

I've attached the two patch files I use for this, currently the `configure.ac` hunk in gnu_printf.patch isn't used.

From time to time, I've been able to manually 'bisect' issues with the ruby-loco builds.  Sometimes it's for stable gems (tested infrequently) that don't pass trunk, other times it been for bugs in recent releases, link 2.5.x.

I'm about to redo the patch system because to handle this patch requires it being aware of both major/minor/tiny and the svn.  Current system is only major/minor/tiny aware.

Thanks, Greg

----------------------------------------
Bug #13496: Patches for MinGW builds
https://bugs.ruby-lang.org/issues/13496#change-69659

* Author: MSP-Greg (Greg L)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.6.0dev (2018-01-20 trunk 61983) [x64-mingw32]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
Thanks to Nobu for [58448](https://github.com/ruby/ruby/commit/27ed9f1d290a6ff6b788976ea7139c608920ee1e), which led me to the probable cause of many (but not all) of the silent SEGV's I was having in test-all, which is the patch of `defines.h`.

Since appveyor is currently broken, and I'm not a *nix guy, does anyone know if the following two patches will break travis or appveyor?  Or, a better way to do it?

These are the only two patches I have on the 'build' side.  The other patches are only for test-all.  I believe these should probably be backported to 2.4.  Thank you.

```patch
--- a/configure.in	Wed Apr 19 14:58:48 2017
+++ configure.in	Thu Apr 20 13:44:41 2017
@@ -1319,6 +1319,7 @@
 		])
 		AC_CHECK_TYPE([NET_LUID], [], [],
 			      [@%:@include <winsock2.h>
+			      @%:@include <windows.h>
 			      @%:@include <iphlpapi.h>])
 		if test x"$ac_cv_type_NET_LUID" = xyes; then
 		    AC_DEFINE(HAVE_TYPE_NET_LUID, 1)
@@ -1657,8 +1658,13 @@
             [@%:@include <stdio.h>
 	    @%:@include <stddef.h>
             @%:@ifdef __GNUC__
+            @%:@ifdef __MINGW32__
+            @%:@define PRINTF_ARGS(decl, string_index, first_to_check) \
+              decl __attribute__((format(gnu_printf, string_index, first_to_check)))
+            @%:@else
             @%:@define PRINTF_ARGS(decl, string_index, first_to_check) \
               decl __attribute__((format(printf, string_index, first_to_check)))
+            @%:@endif
             @%:@else
             @%:@define PRINTF_ARGS(decl, string_index, first_to_check) decl
             @%:@endif

```

and

```patch
--- a/include/ruby/defines.h	Thu Apr 20 18:58:40 2017
+++ b/include/ruby/defines.h	Sat Apr 22 17:08:33 2017
@@ -83,8 +83,13 @@
 #endif /* __GNUC__ >= 3 */
 
 #ifdef __GNUC__
+#ifdef __MINGW32__
+#define PRINTF_ARGS(decl, string_index, first_to_check) \
+  decl __attribute__((format(gnu_printf, string_index, first_to_check)))
+#else
 #define PRINTF_ARGS(decl, string_index, first_to_check) \
   decl __attribute__((format(printf, string_index, first_to_check)))
+#endif
 #else
 #define PRINTF_ARGS(decl, string_index, first_to_check) decl
 #endif

```


---Files--------------------------------
tool-m4-ruby_check_printf_prefix.m4.patch (934 Bytes)
gnu_printf.patch (1.42 KB)


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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>