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:
parent
0330211a86
commit
c553ae6488
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=369732
@ -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
|
||||
|
||||
|
@ -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=
|
||||
|
||||
|
20
lang/ruby20/files/patch-Makefile.in
Normal file
20
lang/ruby20/files/patch-Makefile.in
Normal 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
|
@ -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)'
|
||||
|
@ -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=
|
||||
|
||||
|
20
lang/ruby21/files/patch-Makefile.in
Normal file
20
lang/ruby21/files/patch-Makefile.in
Normal 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
|
@ -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)'
|
||||
|
Loading…
Reference in New Issue
Block a user