Issue #13069 has been updated by akihikodaki (Akihiko Odaki).

File mkmf.patch added
ruby -v set to ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

The issue is affecting my gem, [cld3-ruby](https://github.com/akihikodaki/cld3-ruby).
[Build failure on OpenBSD  Issue #16  akihikodaki/cld3-ruby](https://github.com/akihikodaki/cld3-ruby/issues/16)

> Those warnings are always emitted regardless use of the functions?

I reviewed the source code of Binutils and GCC and found no means to suppress the warning.

I understand many link warnings result in runtime failure, but it is just insane to make all warnings errors. Warnings are not errors because they may not result in actual failure.

The impact of this issue is severe. It would disable many native extensions on OpenBSD. On the other hand, though those warnings sound ridiculous, OpenBSD should not be blamed because they are just adding warnings, not errors. mkmf should be fixed.

I have two suggestions to address this kind of issue:
1. Redirect linker's stderr to mkmf's stderr, and optionally ask the user if he thinks it is fine to continue.
2. Execute the output instead of catching stderr to detect runtime failures if not cross compiling.

I attached a patch to implement suggestion 2.

----------------------------------------
Bug #13069: mkmf: ignore linker warnings on OpenBSD
https://bugs.ruby-lang.org/issues/13069#change-69674

* Author: anton (Anton Lindqvist)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
Installing gems with native extensions fails on my OpenBSD machine since
the linker emits warnings causing stderr to not be empty as expected.
The warnings are security recommendations that does not affect the
linked binary. See examples below from my mkmf.log caused by libruby:

~~~
warning: warning: strcpy() is almost always misused, please use strlcpy()
warning: warning: strcat() is almost always misused, please use strlcat()
warning: warning: sprintf() is often misused, please use snprintf()
warning: warning: vsprintf() is often misused, please use vsnprintf()
~~~

Attached is patch that checks the output for such harmless warnings. Not
sure if this exception should be allowed on all platforms, but instead
wrapped in a `RUBY_PLATFORM =~ /openbsd/` conditional or something
similar.

---Files--------------------------------
ruby-mkmf_openbsd.diff (880 Bytes)
mkmf.patch (4.19 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>