lang/ruby2*: fix dtrace support

DTrace support in ruby needs the -xnolibs flag added to the dtrace command
called during build to ensure that dtrace support is enabled even if the dtrace
kernel modules are not loaded at build time.

However, with this dtrace will be enabled on some OS versions where it will not
work, so add logic to disable it where appropriate.
This commit is contained in:
Steve Wills 2014-10-01 15:45:27 +00:00
parent 0330211a86
commit c553ae6488
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=369732
7 changed files with 117 additions and 19 deletions

View File

@ -193,7 +193,7 @@ RUBY21= "@comment "
# Ruby 2.0
#
RUBY_RELVERSION= 2.0.0
RUBY_PORTREVISION= 0
RUBY_PORTREVISION= 1
RUBY_PORTEPOCH= 1
RUBY_PATCHLEVEL= 576
@ -209,7 +209,7 @@ RUBY21= "@comment "
# Ruby 2.1
#
RUBY_RELVERSION= 2.1.3
RUBY_PORTREVISION= 0
RUBY_PORTREVISION= 1
RUBY_PORTEPOCH= 1
RUBY_PATCHLEVEL= 0

View File

@ -85,9 +85,13 @@ CPPFLAGS+= -I${LOCALBASE}/include
# Keep this, else ruby will fail to load libraries dependent op libpthread.
LIBS+= -L${LOCALBASE}/lib ${PTHREAD_LIBS}
.if ${ARCH} == "powerpc"
.if ${OPSYS} == "FreeBSD"
.if (${ARCH} == "i386" && ${OSVERSION} > 1010000) || (${ARCH} == "amd64" && ${OSVERSION} > 903000)
CONFIGURE_ARGS+= --enable-dtrace
.else
CONFIGURE_ARGS+= --disable-dtrace
.endif
.endif
CONFIGURE_ENV= debugflags=

View File

@ -0,0 +1,20 @@
--- Makefile.in.orig 2014-09-26 18:04:17.720164117 +0000
+++ Makefile.in 2014-09-26 18:04:53.535161754 +0000
@@ -342,7 +342,7 @@
.d.h:
@$(ECHO) translating probes $<
- $(Q) $(DTRACE) -o $@.tmp -h -C $(INCFLAGS) -s $<
+ $(Q) $(DTRACE) -xnolibs -o $@.tmp -h -C $(INCFLAGS) -s $<
$(Q) sed -e 's/RUBY_/RUBY_DTRACE_/g' -e 's/PROBES_H_TMP/PROBES_H/g' -e 's/(char \*/(const char */g' -e 's/, char \*/, const char */g' $@.tmp > $@
$(Q) $(RM) $@.tmp
@@ -362,7 +362,7 @@
fi; \
touch "$$stamp"
$(RM) $@
- $(Q) $(DTRACE) -G -C $(INCFLAGS) -s $(srcdir)/probes.d -o $@ $(DTRACE_DEPENDENT_OBJS)
+ $(Q) $(DTRACE) -xnolibs -G -C $(INCFLAGS) -s $(srcdir)/probes.d -o $@ $(DTRACE_DEPENDENT_OBJS)
# DTrace static library hacks described here:
# http://mail.opensolaris.org/pipermail/dtrace-discuss/2005-August/000207.html

View File

@ -1,6 +1,31 @@
--- configure.in.orig 2014-01-30 15:58:25.000000000 +0000
+++ configure.in 2014-07-26 19:30:21.165009183 +0000
@@ -1401,11 +1401,11 @@
--- configure.in.orig 2014-09-26 17:17:06.072358809 +0000
+++ configure.in 2014-09-26 17:17:32.251357664 +0000
@@ -515,7 +515,7 @@
[AC_CACHE_CHECK(whether dtrace USDT is available, rb_cv_dtrace_available,
[
echo "provider conftest{ probe fire(); };" > conftest_provider.d
- if $DTRACE -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null; then
+ if $DTRACE -xnolibs -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null; then
# DTrace is available on the system
rb_cv_dtrace_available=yes
else
@@ -532,13 +532,13 @@
[
if {
echo "provider conftest{ probe fire(); };" > conftest_provider.d &&
- dtrace -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null &&
+ dtrace -xnolibs -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null &&
cat >conftest.c <<_CONF &&
@%:@include "conftest_provider.h"
int main(void){ CONFTEST_FIRE(); return 0; }
_CONF
$CC $CFLAGS -c -o conftest.o conftest.c &&
- $DTRACE -G -s conftest_provider.d conftest.o 2>/dev/null
+ $DTRACE -xnolibs -G -s conftest_provider.d conftest.o 2>/dev/null
}; then
rb_cv_prog_dtrace_g=yes
else
@@ -1428,11 +1428,11 @@
AC_CHECK_DECLS([sys_nerr], [], [], [$ac_includes_default
@%:@include <errno.h>])
@ -17,7 +42,7 @@
AS_CASE(["$target_cpu"],
[alpha*|sh4|sh4el|sh4eb], [AS_CASE(["$target_os"::"$GCC"],
@@ -2096,7 +2096,7 @@
@@ -2123,7 +2123,7 @@
fi
if test x"$enable_pthread" = xyes; then
@ -26,7 +51,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
@@ -2110,6 +2110,7 @@
@@ -2137,6 +2137,7 @@
[c], [],
[root], [],
[c_r], [MAINLIBS="-pthread $MAINLIBS"],
@ -34,7 +59,7 @@
[AS_CASE(["$target_os"],
[openbsd*], [LIBS="-pthread $LIBS"],
[LIBS="-l$pthread_lib $LIBS"])])
@@ -2341,7 +2342,6 @@
@@ -2368,7 +2369,6 @@
: ${LDSHARED='$(CC) -shared'}
if test "$rb_cv_binary_elf" = yes; then
LDFLAGS="$LDFLAGS -rdynamic"
@ -42,7 +67,7 @@
else
test "$GCC" = yes && test "$rb_cv_prog_gnu_ld" = yes || LDSHARED='$(LD) -Bshareable'
fi
@@ -2728,6 +2728,7 @@
@@ -2755,6 +2755,7 @@
[freebsd*|dragonfly*], [
SOLIBS='$(LIBS)'
LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR)'

View File

@ -84,9 +84,13 @@ CPPFLAGS+= -I${LOCALBASE}/include
# Keep this, else ruby will fail to load libraries dependent op libpthread.
LIBS+= -L${LOCALBASE}/lib ${PTHREAD_LIBS}
.if ${ARCH} == "powerpc"
.if ${OPSYS} == "FreeBSD"
.if (${ARCH} == "i386" && ${OSVERSION} > 1010000) || (${ARCH} == "amd64" && ${OSVERSION} > 903000)
CONFIGURE_ARGS+= --enable-dtrace
.else
CONFIGURE_ARGS+= --disable-dtrace
.endif
.endif
CONFIGURE_ENV= debugflags=

View File

@ -0,0 +1,20 @@
--- Makefile.in.orig 2014-10-01 13:48:32.240448887 +0000
+++ Makefile.in 2014-10-01 13:49:42.263443819 +0000
@@ -347,7 +347,7 @@
.d.h:
@$(ECHO) translating probes $<
- $(Q) $(DTRACE) -o $@.tmp -h -C $(INCFLAGS) -s $<
+ $(Q) $(DTRACE) -xnolibs -o $@.tmp -h -C $(INCFLAGS) -s $<
$(Q) sed -e 's/RUBY_/RUBY_DTRACE_/g' -e 's/PROBES_H_TMP/PROBES_H/g' -e 's/(char \*/(const char */g' -e 's/, char \*/, const char */g' $@.tmp > $@
$(Q) $(RM) $@.tmp
@@ -367,7 +367,7 @@
fi; \
touch "$$stamp"
$(RM) $@
- $(Q) $(DTRACE) -G -C $(INCFLAGS) -s $(srcdir)/probes.d -o $@ $(DTRACE_DEPENDENT_OBJS)
+ $(Q) $(DTRACE) -xnolibs -G -C $(INCFLAGS) -s $(srcdir)/probes.d -o $@ $(DTRACE_DEPENDENT_OBJS)
# DTrace static library hacks described here:
# http://mail.opensolaris.org/pipermail/dtrace-discuss/2005-August/000207.html

View File

@ -1,6 +1,31 @@
--- configure.in.orig 2014-03-20 05:40:57.873422152 +0000
+++ configure.in 2014-03-20 05:40:57.873422152 +0000
@@ -1084,10 +1084,10 @@
--- configure.in.orig 2014-10-01 13:46:05.488459511 +0000
+++ configure.in 2014-10-01 13:45:56.345459984 +0000
@@ -570,7 +570,7 @@
[AC_CACHE_CHECK(whether dtrace USDT is available, rb_cv_dtrace_available,
[
echo "provider conftest{ probe fire(); };" > conftest_provider.d
- if $DTRACE -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null; then
+ if $DTRACE -xnolibs -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null; then
# DTrace is available on the system
rb_cv_dtrace_available=yes
else
@@ -591,13 +591,13 @@
probe fire();
};
_PROBES
- $DTRACE -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null &&
+ $DTRACE -xnolibs -h -o conftest_provider.h -s conftest_provider.d >/dev/null 2>/dev/null &&
cat >conftest.c <<_CONF &&
@%:@include "conftest_provider.h"
int main(void){ CONFTEST_FIRE(); return 0; }
_CONF
$CC $CFLAGS $CPPFLAGS -c -o conftest.o conftest.c &&
- $DTRACE -G -s conftest_provider.d conftest.o 2>/dev/null
+ $DTRACE -xnolibs -G -s conftest_provider.d conftest.o 2>/dev/null
}; then
rb_cv_prog_dtrace_g=yes
else
@@ -1087,10 +1087,10 @@
],
[ LIBS="-lm $LIBS"])
@ -15,7 +40,7 @@
dnl Checks for header files.
AC_HEADER_DIRENT
@@ -1982,7 +1982,7 @@
@@ -1998,7 +1998,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
@ -24,7 +49,7 @@
if test x"$ac_cv_lib_rt_clock_gettime" = xyes; then
AC_DEFINE(HAVE_CLOCK_GETTIME, 1)
fi
@@ -2423,7 +2423,7 @@
@@ -2460,7 +2460,7 @@
fi
if test x"$enable_pthread" = xyes; then
@ -33,7 +58,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
@@ -2437,6 +2437,7 @@
@@ -2474,6 +2474,7 @@
[c], [],
[root], [],
[c_r], [MAINLIBS="-pthread $MAINLIBS"],
@ -41,7 +66,7 @@
[AS_CASE(["$target_os"],
[openbsd*|mirbsd*], [LIBS="-pthread $LIBS"],
[LIBS="-l$pthread_lib $LIBS"])])
@@ -2668,7 +2669,6 @@
@@ -2735,7 +2736,6 @@
: ${LDSHARED='$(CC) -shared'}
if test "$rb_cv_binary_elf" = yes; then
LDFLAGS="$LDFLAGS -rdynamic"
@ -49,7 +74,7 @@
else
test "$GCC" = yes && test "$rb_cv_prog_gnu_ld" = yes || LDSHARED='$(LD) -Bshareable'
fi
@@ -3136,6 +3136,7 @@
@@ -3203,6 +3203,7 @@
[freebsd*|dragonfly*], [
SOLIBS='$(LIBS)'
LIBRUBY_SO='lib$(RUBY_SO_NAME).so.$(MAJOR)$(MINOR)'