diff options
| author | Mathieu Arnold <mat@FreeBSD.org> | 2016-12-20 16:33:55 +0000 |
|---|---|---|
| committer | Mathieu Arnold <mat@FreeBSD.org> | 2016-12-20 16:33:55 +0000 |
| commit | 5d14302031f47dc4da06e03aa4994c8779ac56b2 (patch) | |
| tree | 98c2b33637a1208193f413bed134cb721a420e94 /lang/perl5.24/files/patch-dtrace | |
| parent | Add forgotten patch to fix lua build. (diff) | |
Get a DTRACE option for lang/perl5.24 and lang/perl5-devel.
Submitted by: swills
Sponsored by: Absolight
Diffstat (limited to 'lang/perl5.24/files/patch-dtrace')
| -rw-r--r-- | lang/perl5.24/files/patch-dtrace | 266 |
1 files changed, 266 insertions, 0 deletions
diff --git a/lang/perl5.24/files/patch-dtrace b/lang/perl5.24/files/patch-dtrace new file mode 100644 index 000000000000..3cc862e2678f --- /dev/null +++ b/lang/perl5.24/files/patch-dtrace @@ -0,0 +1,266 @@ +--- Configure.orig 2016-07-14 15:08:07.000000000 -0400 ++++ Configure 2016-11-24 08:13:04.507723000 -0500 +@@ -940,6 +940,7 @@ + usedl='' + doublesize='' + dtraceobject='' ++dtracexnolibs='' + ebcdic='' + fflushNULL='' + fflushall='' +@@ -8140,10 +8141,19 @@ + + if $test -f $dtrace + then +- if $dtrace -h -s ../perldtrace.d \ ++ if $dtrace -h -xnolibs -s ../perldtrace.d \ + -o perldtrace.tmp >/dev/null 2>&1 \ + && rm -f perldtrace.tmp + then ++ default_xnolibs=$define ++ echo " " ++ echo "Good: your $dtrace knows about the -h flag" ++ echo "and apparently the -xnolibs flag." ++ elif $dtrace -h -s ../perldtrace.d \ ++ -o perldtrace.tmp >/dev/null 2>&1 \ ++ && rm -f perldtrace.tmp ++ then ++ default_xnolibs=$undef + echo " " + echo "Good: your $dtrace knows about the -h flag." + else +@@ -8157,6 +8167,17 @@ + EOM + exit 1 + fi ++ case "$dtracexnolibs" in ++ $define|true|[yY]*) ++ dtracxnolibs=$define ++ ;; ++ ''|' ') ++ dtracexnolibs=$default_xnolibs ++ ;; ++ *) ++ dtracexnolibs=$undef ++ ;; ++ esac + break; + fi + +@@ -20756,7 +20777,11 @@ + dtraceobject=$define + ;; + ' '|'') +- $dtrace -h -s ../perldtrace.d -o perldtrace.h ++ case "$dtracexnolibs" in ++ $define) xnolibs_option=-xnolibs ;; ++ *) xnolibs_option= ;; ++ esac ++ $dtrace -h $xnolibs_option -s ../perldtrace.d -o perldtrace.h + $cat >try.c <<EOM + #include "perldtrace.h" + int main(void) { +@@ -20766,14 +20791,14 @@ + EOM + dtraceobject=$undef + if $cc -c -o try.o $optimize $ccflags try.c \ +- && $dtrace -G -s ../perldtrace.d try.o >/dev/null 2>&1; then ++ && $dtrace -G $xnolibs_option -s ../perldtrace.d try.o >/dev/null 2>&1; then + dtraceobject=$define + echo "Your dtrace builds an object file" + fi +- $rm -f try.c try.o perldtrace.o + ;; + *) dtraceobject=$undef ;; + esac ++ $rm -f try.c try.o perldtrace.o perldtrace.h + esac + + : Determine if this is an EBCDIC system +@@ -24722,6 +24747,7 @@ + drand48_r_proto='$drand48_r_proto' + dtrace='$dtrace' + dtraceobject='$dtraceobject' ++dtracexnolibs='$dtracexnolibs' + dynamic_ext='$dynamic_ext' + eagain='$eagain' + ebcdic='$ebcdic' +--- Makefile.SH.orig 2016-07-16 06:52:42.000000000 -0400 ++++ Makefile.SH 2016-11-24 08:13:04.508901000 -0500 +@@ -390,8 +390,13 @@ + ;; + esac + ++case "$dtracexnolibs" in ++define) xnolibs=-xnolibs ;; ++*) xnolibs= ;; ++esac ++ + $spitshell >>$Makefile <<!GROK!THIS! +-DTRACE = $dtrace ++DTRACE = $dtrace $xnolibs + DTRACE_H = $dtrace_h + + DTRACE_PERLLIB_O = $dtrace_perllib_o # "dtrace -G" output for perllib_objs +@@ -518,10 +523,53 @@ + miniperl_objs_nodt = $(mini_only_objs) $(common_objs) miniperlmain$(OBJ_EXT) + perllib_objs_nodt = $(main_only_objs) $(common_objs) + ++!NO!SUBS! ++ ++# dtrace with -G modifies the source object files, which can cause ++# dependency issues, and can cause the dtrace -G to fail on FreeBSD ++# so separate the objects generated by $(CC) from those used to link ++# the executable when dtrace -G is involved. ++# ++# $(FOO:op%os=np%ns) isn't generally portable but is portable to ++# the makes on darwin, Solaris, FreeBSD and Linux, which is where we ++# use dtrace ++ ++case "$usedtrace:$dtraceobject" in ++define:define) ++ $spitshell >>$Makefile <<'!NO!SUBS!' ++ ++miniperl_dtrace_objs = $(miniperl_objs_nodt:%=mpdtrace/%) ++perllib_dtrace_objs = $(perllib_objs_nodt:%=libpdtrace/%) ++perlmain_dtrace_objs = maindtrace/perlmain$(OBJ_EXT) ++ ++miniperl_objs = $(miniperl_dtrace_objs) $(DTRACE_MINI_O) ++perllib_objs = $(perllib_dtrace_objs) $(DTRACE_PERLLIB_O) ++perlmain_objs = $(perlmain_dtrace_objs) $(DTRACE_MAIN_O) ++ ++miniperl_dep = $(DTRACE_MINI_O) ++perllib_dep = $(DTRACE_PERLLIB_O) ++perlmain_dep = $(DTRACE_MAIN_O) ++ ++!NO!SUBS! ++ ;; ++ *) ++ ++ $spitshell >>$Makefile <<'!NO!SUBS!' ++ + miniperl_objs = $(miniperl_objs_nodt) $(DTRACE_MINI_O) + perllib_objs = $(perllib_objs_nodt) $(DTRACE_PERLLIB_O) + perlmain_objs = perlmain$(OBJ_EXT) $(DTRACE_MAIN_O) + ++miniperl_dep = $(miniperl_objs) ++perllib_dep = $(perllib_objs) ++perlmain_dep = $(perlmain_objs) ++ ++!NO!SUBS! ++ ;; ++esac ++ ++$spitshell >>$Makefile <<'!NO!SUBS!' ++ + perltoc_pod_prereqs = extra.pods pod/perl5241delta.pod pod/perlapi.pod pod/perlintern.pod pod/perlmodlib.pod pod/perluniprops.pod + generated_pods = pod/perltoc.pod $(perltoc_pod_prereqs) + generated_headers = uudmap.h bitcount.h mg_data.h +@@ -860,19 +908,32 @@ + define) + $spitshell >>$Makefile <<'!NO!SUBS!' + $(DTRACE_MINI_O): perldtrace.d $(miniperl_objs_nodt) +- $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MINI_O) $(miniperl_objs_nodt) ++ -rm -rf mpdtrace ++ mkdir mpdtrace ++ cp $(miniperl_objs_nodt) mpdtrace/ ++ $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MINI_O) $(miniperl_dtrace_objs) + + $(DTRACE_PERLLIB_O): perldtrace.d $(perllib_objs_nodt) +- $(DTRACE) -G -s perldtrace.d -o $(DTRACE_PERLLIB_O) $(perllib_objs_nodt) ++ -rm -rf libpdtrace ++ mkdir libpdtrace ++ cp $(perllib_objs_nodt) libpdtrace/ ++ $(DTRACE) -G -s perldtrace.d -o $(DTRACE_PERLLIB_O) $(perllib_dtrace_objs) + + $(DTRACE_MAIN_O): perldtrace.d perlmain$(OBJ_EXT) +- $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O) perlmain$(OBJ_EXT) ++ -rm -rf maindtrace ++ mkdir maindtrace ++ cp perlmain$(OBJ_EXT) maindtrace/ ++ $(DTRACE) -G -s perldtrace.d -o $(DTRACE_MAIN_O) $(perlmain_dtrace_objs) || \ ++ ( $(ECHO) "No probes in perlmain$(OBJ_EXT), generating a dummy $(DTRACE_MAIN_O)" && \ ++ $(ECHO) >dtrace_main.c && \ ++ `$(CCCMD)` $(PLDLFLAGS) dtrace_main.c && \ ++ rm -f dtrace_main.c ) + + !NO!SUBS! + ;; + esac + $spitshell >>$Makefile <<'!NO!SUBS!' +-$(LIBPERL): $& $(perllib_objs) $(DYNALOADER) $(LIBPERLEXPORT) ++$(LIBPERL): $& $(perllib_dep) $(DYNALOADER) $(LIBPERLEXPORT) + !NO!SUBS! + case "$useshrplib" in + true) +@@ -973,7 +1034,7 @@ + *) + if test "X$hostperl" != X; then + $spitshell >>$Makefile <<!GROK!THIS! +-lib/buildcustomize.pl: \$& \$(miniperl_objs) write_buildcustomize.pl ++lib/buildcustomize.pl: \$& \$(miniperl_dep) write_buildcustomize.pl + -@rm -f miniperl.xok + -@rm \$(MINIPERL_EXE) + \$(LNS) \$(HOST_PERL) \$(MINIPERL_EXE) +@@ -982,7 +1043,7 @@ + !GROK!THIS! + else + $spitshell >>$Makefile <<'!NO!SUBS!' +-lib/buildcustomize.pl: $& $(miniperl_objs) write_buildcustomize.pl ++lib/buildcustomize.pl: $& $(miniperl_dep) write_buildcustomize.pl + -@rm -f miniperl.xok + $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \ + $(miniperl_objs) $(libs) +@@ -995,7 +1056,7 @@ + + $spitshell >>$Makefile <<'!NO!SUBS!' + +-$(PERL_EXE): $& $(perlmain_objs) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) write_buildcustomize.pl ++$(PERL_EXE): $& $(perlmain_dep) $(LIBPERL) $(static_ext) ext.libs $(PERLEXPORT) write_buildcustomize.pl + -@rm -f miniperl.xok + !NO!SUBS! + +--- Porting/Glossary.orig 2016-07-14 15:06:55.000000000 -0400 ++++ Porting/Glossary 2016-11-24 08:13:04.511723000 -0500 +@@ -2949,6 +2949,11 @@ + dtraceobject (dtraceobject.U): + Whether we need to build an object file with the dtrace tool. + ++dtracexnolibs (dtraceobject.U): ++ Whether dtrace accepts -xnolibs. If available we call dtrace -h ++ and dtrace -G with -xnolibs to allow dtrace to run in a jail on ++ FreeBSD. ++ + dynamic_ext (Extensions.U): + This variable holds a list of XS extension files we want to + link dynamically into the package. It is used by Makefile. +--- ext/XS-APItest/Makefile.PL.orig 2016-07-14 15:08:07.000000000 -0400 ++++ ext/XS-APItest/Makefile.PL 2016-11-24 08:13:04.512100000 -0500 +@@ -58,7 +58,8 @@ + DTRACE_D = ../../perldtrace.d + + dtrace\$(OBJ_EXT): \$(DTRACE_D) core\$(OBJ_EXT) +- $Config{dtrace} -G -s \$(DTRACE_D) -o dtrace\$(OBJ_EXT) core\$(OBJ_EXT) ++ $Config{dtrace} -G -s \$(DTRACE_D) -o dtrace\$(OBJ_EXT) core\$(OBJ_EXT) || \\ ++ ( \$(ECHO) >dtrace.c && \$(CCCMD) \$(CCCDLFLAGS) dtrace.c && rm -f dtrace.c ) + POSTAMBLE + + return $post; +--- hints/freebsd.sh.orig 2016-07-14 15:07:39.000000000 -0400 ++++ hints/freebsd.sh 2016-11-24 08:13:04.512583000 -0500 +@@ -105,6 +105,15 @@ + ;; + esac + ++case "$osvers" in ++10.*) ++ # dtrace on 10.x needs libelf symbols, but we don't know if the ++ # user is going to request usedtrace and there's no .cbu for usedtrace ++ libswanted="$libswanted elf" ++ echo "libswanted $libswanted" >&4 ++ ;; ++esac ++ + # Dynamic Loading flags have not changed much, so they are separated + # out here to avoid duplicating them everywhere. + case "$osvers" in |
