mirror of
https://git.freebsd.org/ports.git
synced 2025-05-31 18:36:28 -04:00
266 lines
8.3 KiB
Text
266 lines
8.3 KiB
Text
--- Configure.orig 2017-09-22 14:26:35 UTC
|
|
+++ Configure
|
|
@@ -940,6 +940,7 @@ lddlflags=''
|
|
usedl=''
|
|
doublesize=''
|
|
dtraceobject=''
|
|
+dtracexnolibs=''
|
|
ebcdic=''
|
|
fflushNULL=''
|
|
fflushall=''
|
|
@@ -8154,10 +8155,19 @@ while $test 1 ; do
|
|
|
|
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
|
|
@@ -8171,6 +8181,17 @@ while $test 1 ; do
|
|
EOM
|
|
exit 1
|
|
fi
|
|
+ case "$dtracexnolibs" in
|
|
+ $define|true|[yY]*)
|
|
+ dtracxnolibs=$define
|
|
+ ;;
|
|
+ ''|' ')
|
|
+ dtracexnolibs=$default_xnolibs
|
|
+ ;;
|
|
+ *)
|
|
+ dtracexnolibs=$undef
|
|
+ ;;
|
|
+ esac
|
|
break;
|
|
fi
|
|
|
|
@@ -20770,7 +20791,11 @@ $define)
|
|
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) {
|
|
@@ -20780,14 +20805,14 @@ int main(void) {
|
|
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
|
|
@@ -24736,6 +24761,7 @@ drand01='$drand01'
|
|
drand48_r_proto='$drand48_r_proto'
|
|
dtrace='$dtrace'
|
|
dtraceobject='$dtraceobject'
|
|
+dtracexnolibs='$dtracexnolibs'
|
|
dynamic_ext='$dynamic_ext'
|
|
eagain='$eagain'
|
|
ebcdic='$ebcdic'
|
|
--- Makefile.SH.orig 2017-07-15 18:00:51 UTC
|
|
+++ Makefile.SH
|
|
@@ -390,8 +390,13 @@ VG_TEST ?= ./perl -e 1 2>/dev/null
|
|
;;
|
|
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 @@ main_only_objs = op$(OBJ_EXT) perl$(
|
|
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/perl5243delta.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 @@ mydtrace.h: $(DTRACE_H)
|
|
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 @@ lib/buildcustomize.pl: $& $(miniperl_obj
|
|
*)
|
|
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 @@ lib/buildcustomize.pl: \$& \$(miniperl_o
|
|
!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 @@ lib/buildcustomize.pl: $& $(miniperl_obj
|
|
|
|
$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 2017-06-30 21:03:20 UTC
|
|
+++ Porting/Glossary
|
|
@@ -2949,6 +2949,11 @@ dtrace (usedtrace.U):
|
|
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 2017-06-30 21:03:22 UTC
|
|
+++ ext/XS-APItest/Makefile.PL
|
|
@@ -58,7 +58,8 @@ sub MY::postamble
|
|
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 2017-06-30 21:03:22 UTC
|
|
+++ hints/freebsd.sh
|
|
@@ -105,6 +105,15 @@ case "$osvers" in
|
|
;;
|
|
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
|