lang/ruby2[345]: Improve qsort_r() detection

This change merges the following upstream pull request into the Ruby
interpreter ports:

	https://github.com/ruby/ruby/pull/1954

Adding this patch to these ports will ensure that once we patch up
qsort_r() to be compatible with glibc, Ruby will automatically pick them
up. Ruby should also build fine without this patch, but this will cause
it to use its own implementation, which blows up the binary size
slightly.

Poudriere runs seem to pass for 11.x amd64. Logs indicate that this
doesn't negatively affect the existing qsort_r() detection:

	checking whether qsort_r is GNU version... no
	checking whether qsort_r is BSD version... yes

PR:		231256
Approved by:	sunpoet
Differential Revision:	https://reviews.freebsd.org/D17157
This commit is contained in:
Ed Schouten 2018-09-13 19:26:17 +00:00
parent e6a5164431
commit b38c8dc195
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=479692
3 changed files with 62 additions and 8 deletions

View File

@ -1,6 +1,6 @@
--- configure.in.orig 2017-03-27 17:59:49 UTC
+++ configure.in
@@ -621,7 +621,7 @@ AC_DEFUN([RUBY_DTRACE_AVAILABLE],
@@ -633,7 +633,7 @@
[AC_CACHE_CHECK(whether dtrace USDT is available, rb_cv_dtrace_available,
[
echo "provider conftest{ probe fire(); };" > conftest_provider.d
@ -9,7 +9,7 @@
AC_TRY_COMPILE([@%:@include "conftest_provider.h"], [CONFTEST_FIRE();], [
# DTrace is available on the system
rb_cv_dtrace_available=yes
@@ -645,13 +645,13 @@ AC_DEFUN([RUBY_DTRACE_POSTPROCESS],
@@ -657,13 +657,13 @@
probe fire();
};
_PROBES
@ -25,7 +25,7 @@
:
}; then
if cmp -s conftest.o conftest.${ac_objext}.save; then
@@ -1260,10 +1260,10 @@ main()
@@ -1290,10 +1290,10 @@
],
[ LIBS="-lm $LIBS"])
@ -40,7 +40,25 @@
dnl Checks for header files.
AC_HEADER_DIRENT
@@ -2513,7 +2513,7 @@ main(int argc, char **argv)
@@ -2450,7 +2450,7 @@
AC_CACHE_CHECK(whether qsort_r is GNU version, rb_cv_gnu_qsort_r,
[AC_TRY_COMPILE([
@%:@include <stdlib.h>
-void qsort_r(void *base, size_t nmemb, size_t size,
+void (qsort_r)(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *, void *),
void *arg);
],[ ],
@@ -2460,7 +2460,7 @@
AC_CACHE_CHECK(whether qsort_r is BSD version, rb_cv_bsd_qsort_r,
[AC_TRY_COMPILE([
@%:@include <stdlib.h>
-void qsort_r(void *base, size_t nmemb, size_t size,
+void (qsort_r)(void *base, size_t nmemb, size_t size,
void *arg, int (*compar)(void *, const void *, const void *));
],[ ],
[rb_cv_bsd_qsort_r=yes],
@@ -2549,7 +2549,7 @@
if test x"$ac_cv_func_clock_gettime" != xyes; then
# glibc 2.17 moves clock_* functions from librt to the main C library.
# http://sourceware.org/ml/libc-announce/2012/msg00001.html
@ -49,7 +67,7 @@
if test x"$ac_cv_lib_rt_clock_gettime" = xyes; then
AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
fi
@@ -2920,7 +2920,7 @@ else
@@ -2956,7 +2956,7 @@
fi
if test x"$enable_pthread" = xyes; then
@ -58,7 +76,7 @@
AC_CHECK_LIB($pthread_lib, pthread_kill,
rb_with_pthread=yes, rb_with_pthread=no)
if test "$rb_with_pthread" = "yes"; then break; fi
@@ -2934,6 +2934,7 @@ if test x"$enable_pthread" = xyes; then
@@ -2970,6 +2970,7 @@
[c], [],
[root], [],
[c_r], [MAINLIBS="-pthread $MAINLIBS"],
@ -66,7 +84,7 @@
[AS_CASE(["$target_os"],
[openbsd*|mirbsd*], [LIBS="-pthread $LIBS"],
[LIBS="-l$pthread_lib $LIBS"])])
@@ -3246,7 +3247,6 @@ if test "$with_dln_a_out" != yes; then
@@ -3278,7 +3279,6 @@
: ${LDSHARED='$(CC) -shared'}
if test "$rb_cv_binary_elf" = yes; then
LDFLAGS="$LDFLAGS -rdynamic"
@ -74,7 +92,7 @@
else
test "$GCC" = yes && test "$rb_cv_prog_gnu_ld" = yes || LDSHARED='$(LD) -Bshareable'
fi
@@ -3730,6 +3730,7 @@ AS_CASE("$enable_shared", [yes], [
@@ -3751,6 +3751,7 @@
[freebsd*|dragonfly*], [
SOLIBS='$(LIBS)'
LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR)'

View File

@ -1,5 +1,23 @@
--- configure.in.orig 2018-03-02 20:59:11.000000000 +0800
+++ configure.in 2018-07-19 14:22:04.753721000 +0800
@@ -2573,7 +2573,7 @@
AC_CACHE_CHECK(whether qsort_r is GNU version, rb_cv_gnu_qsort_r,
[AC_TRY_COMPILE([
@%:@include <stdlib.h>
-void qsort_r(void *base, size_t nmemb, size_t size,
+void (qsort_r)(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *, void *),
void *arg);
],[ ],
@@ -2583,7 +2583,7 @@
AC_CACHE_CHECK(whether qsort_r is BSD version, rb_cv_bsd_qsort_r,
[AC_TRY_COMPILE([
@%:@include <stdlib.h>
-void qsort_r(void *base, size_t nmemb, size_t size,
+void (qsort_r)(void *base, size_t nmemb, size_t size,
void *arg, int (*compar)(void *, const void *, const void *));
],[ ],
[rb_cv_bsd_qsort_r=yes],
@@ -3423,7 +3423,6 @@
: ${LDSHARED='$(CC) -shared'}
if test "$rb_cv_binary_elf" = yes; then

View File

@ -1,5 +1,23 @@
--- configure.ac.orig 2018-01-04 02:12:16.000000000 +0800
+++ configure.ac 2018-07-19 14:45:11.636321000 +0800
@@ -2482,7 +2482,7 @@
AC_CACHE_CHECK(whether qsort_r is GNU version, rb_cv_gnu_qsort_r,
[AC_TRY_COMPILE([
@%:@include <stdlib.h>
-void qsort_r(void *base, size_t nmemb, size_t size,
+void (qsort_r)(void *base, size_t nmemb, size_t size,
int (*compar)(const void *, const void *, void *),
void *arg);
],[ ],
@@ -2492,7 +2492,7 @@
AC_CACHE_CHECK(whether qsort_r is BSD version, rb_cv_bsd_qsort_r,
[AC_TRY_COMPILE([
@%:@include <stdlib.h>
-void qsort_r(void *base, size_t nmemb, size_t size,
+void (qsort_r)(void *base, size_t nmemb, size_t size,
void *arg, int (*compar)(void *, const void *, const void *));
],[ ],
[rb_cv_bsd_qsort_r=yes],
@@ -3245,7 +3245,6 @@
: ${LDSHARED='$(CC) -shared'}
AS_IF([test "$rb_cv_binary_elf" = yes], [