diff options
-rw-r--r-- | MANIFEST | 2 | ||||
-rw-r--r-- | Makefile.SH | 61 | ||||
-rw-r--r-- | ext/util/make_ext | 3 | ||||
-rw-r--r-- | hints/catamount.sh | 112 | ||||
-rw-r--r-- | utils/Makefile.SH (renamed from utils/Makefile) | 45 | ||||
-rwxr-xr-x | x2p/Makefile.SH | 4 |
6 files changed, 167 insertions, 60 deletions
@@ -3933,7 +3933,7 @@ utils/h2xs.PL Program to make .xs files from C header files utils/instmodsh.PL Give information about installed extensions utils/libnetcfg.PL libnet utils.lst Lists utilities bundled with Perl -utils/Makefile Extract the utility scripts +utils/Makefile.SH Extract the utility scripts utils/perlbug.PL A simple tool to submit a bug report utils/perldoc.PL A simple tool to find & display perl's documentation utils/perlivp.PL installation verification procedure diff --git a/Makefile.SH b/Makefile.SH index cbe1127c4d..208160dbc3 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -798,6 +798,29 @@ suidperl$(EXE_EXT): $& sperl$(OBJ_EXT) perlmain$(OBJ_EXT) $(LIBPERL) $(static_ex fi +# Some environment have no system(), which mkpport uses. +# Let's try running the commands with shell. +case "${osname}" in +catamount) +$spitshell >>Makefile <<!GROK!THIS! +.PHONY: makeppport +makeppport: miniperl\$(EXE_EXT) \$(CONFIGPM) + -@for f in Makefile.PL PPPort_pm.PL PPPort_xs.PL ppport_h.PL; do \ + (cd ext/Devel/PPPort && `pwd`/run.sh ../../../miniperl -I../../../lib \$\$f); \ + done + +!GROK!THIS! +;; +*) +$spitshell >>Makefile <<'!NO!SUBS!' +.PHONY: makeppport +makeppport: miniperl$(EXE_EXT) $(CONFIGPM) + $(LDLIBPTH) $(RUN) ./miniperl$(EXE_EXT) -Ilib mkppport + +!NO!SUBS! +;; +esac + $spitshell >>Makefile <<'!NO!SUBS!' sperl$(OBJ_EXT): perl.c $(h) @@ -820,10 +843,6 @@ preplibrary: miniperl$(EXE_EXT) $(CONFIGPM) lib/lib.pm $(PREPLIBRARY_LIBPERL) autosplit_lib_modules(@ARGV)' lib/*/*.pm $(MAKE) lib/re.pm -.PHONY: makeppport -makeppport: miniperl$(EXE_EXT) $(CONFIGPM) - $(LDLIBPTH) $(RUN) ./miniperl$(EXE_EXT) -Ilib mkppport - lib/Config.pod: config.sh miniperl$(EXE_EXT) configpm Porting/Glossary $(LDLIBPTH) $(RUN) ./miniperl -Ilib configpm @@ -867,13 +886,13 @@ extra.pods: miniperl$(EXE_EXT) -@test -f pod/perl595delta.pod && cd pod && $(LNS) perl595delta.pod perldelta.pod && cd .. && echo "pod/perldelta.pod" >> extra.pods # See buildtoc extras.make: perl$(EXE_EXT) - -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&make(@ARGV)' `cat extras.lst` + -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) $(RUN) ./perl -Ilib -MCPAN -e '@ARGV&&make(@ARGV)' `cat extras.lst` extras.test: perl$(EXE_EXT) - -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&test(@ARGV)' `cat extras.lst` + -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) $(RUN) ./perl -Ilib -MCPAN -e '@ARGV&&test(@ARGV)' `cat extras.lst` extras.install: perl$(EXE_EXT) - -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) ./perl -Ilib -MCPAN -e '@ARGV&&install(@ARGV)' `cat extras.lst` + -@test ! -s extras.lst || PATH="`pwd`:${PATH}" PERL5LIB="`pwd`/lib" $(LDLIBPTH) $(RUN) ./perl -Ilib -MCPAN -e '@ARGV&&install(@ARGV)' `cat extras.lst` .PHONY: install install-strip install-all install-verbose install-silent \ no-install install.perl install.man install.html @@ -900,17 +919,17 @@ no-install: INSTALL_DEPENDENCE = all install.perl: $(INSTALL_DEPENDENCE) installperl - $(LDLIBPTH) ./perl installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS) + $(LDLIBPTH) $(RUN) ./perl installperl --destdir=$(DESTDIR) $(INSTALLFLAGS) $(STRIPFLAGS) -@test ! -s extras.lst || $(MAKE) extras.install install.man: all installman - $(LDLIBPTH) ./perl installman --destdir=$(DESTDIR) $(INSTALLFLAGS) + $(LDLIBPTH) $(RUN) ./perl installman --destdir=$(DESTDIR) $(INSTALLFLAGS) # XXX Experimental. Hardwired values, but useful for testing. # Eventually Configure could ask for some of these values. install.html: all installhtml -@test -f README.vms && cd vms && $(LNS) ../README.vms README_vms.pod && cd .. - $(LDLIBPTH) ./perl installhtml \ + $(LDLIBPTH) $(RUN) ./perl installhtml \ --podroot=. --podpath=. --recurse \ --htmldir=$(privlib)/html \ --htmlroot=$(privlib)/html \ @@ -1024,7 +1043,7 @@ $spitshell >>Makefile <<'!NO!SUBS!' .PHONY: printconfig printconfig: - @eval `$(LDLIBPTH) ./perl -Ilib -V:$(CONFIGVAR)`; echo $$$(CONFIGVAR) + @eval `$(LDLIBPTH) $(RUN) ./perl -Ilib -V:$(CONFIGVAR)`; echo $$$(CONFIGVAR) .PHONY: clean _tidy _mopup _cleaner1 _cleaner2 \ realclean _realcleaner clobber _clobber \ @@ -1230,7 +1249,7 @@ test.torture torturetest: test_prep minitest.utf16: minitest.prep - cd t && (rm -f perl$(EXE_EXT); $(LNS) ../miniperl$(EXE_EXT) perl$(EXE_EXT)) \ - && $(LDLIBPTH) ./perl TEST -minitest -utf16 base/*.t comp/*.t cmd/*.t run/*.t io/*.t op/*.t uni/*.t </dev/tty + && $(LDLIBPTH) $(RUN) ./perl TEST -minitest -utf16 base/*.t comp/*.t cmd/*.t run/*.t io/*.t op/*.t uni/*.t </dev/tty test.utf16 check.utf16: test_prep PERL=./perl $(MAKE) TEST_ARGS=-utf16 _test @@ -1291,7 +1310,7 @@ minitest.prep: # is crashing. minitest: miniperl$(EXE_EXT) lib/re.pm minitest.prep - cd t && (rm -f perl$(EXE_EXT); $(LNS) ../miniperl$(EXE_EXT) perl$(EXE_EXT)) \ - && $(LDLIBPTH) ./perl TEST -minitest base/*.t comp/*.t cmd/*.t run/*.t io/*.t op/*.t uni/*.t </dev/tty + && $(LDLIBPTH) $(RUN) ./perl TEST -minitest base/*.t comp/*.t cmd/*.t run/*.t io/*.t op/*.t uni/*.t </dev/tty # Test via harness @@ -1309,28 +1328,28 @@ test_harness_notty: test_prep .PHONY: ok okfile oknack okfilenack nok nokfile noknack nokfilenack ok: utilities - $(LDLIBPTH) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' + $(LDLIBPTH) $(RUN) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' okfile: utilities - $(LDLIBPTH) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' -F perl.ok + $(LDLIBPTH) $(RUN) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' -F perl.ok oknack: utilities - $(LDLIBPTH) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' -A + $(LDLIBPTH) $(RUN) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' -A okfilenack: utilities - $(LDLIBPTH) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' -F perl.ok -A + $(LDLIBPTH) $(RUN) ./perl -Ilib utils/perlbug -ok -s '(UNINSTALLED)' -F perl.ok -A nok: utilities - $(LDLIBPTH) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)' + $(LDLIBPTH) $(RUN) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)' nokfile: utilities - $(LDLIBPTH) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)' -F perl.nok + $(LDLIBPTH) $(RUN) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)' -F perl.nok noknack: utilities - $(LDLIBPTH) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)' -A + $(LDLIBPTH) $(RUN) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)' -A nokfilenack: utilities - $(LDLIBPTH) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)' -F perl.nok -A + $(LDLIBPTH) $(RUN) ./perl -Ilib utils/perlbug -nok -s '(UNINSTALLED)' -F perl.nok -A .PHONY: clist hlist shlist pllist diff --git a/ext/util/make_ext b/ext/util/make_ext index 104eae153e..413b2e074f 100644 --- a/ext/util/make_ext +++ b/ext/util/make_ext @@ -81,9 +81,8 @@ if test ! -d "ext/$pname"; then exit 0 # not an error ? fi - case "$osname" in -catamount) # Snowball's chance to build extensions. +catamount) # Snowball's chance of building extensions. echo "This is $osname, not building $mname, sorry." exit 0 ;; diff --git a/hints/catamount.sh b/hints/catamount.sh index 50641f7b8b..42dcc41416 100644 --- a/hints/catamount.sh +++ b/hints/catamount.sh @@ -15,23 +15,53 @@ # cause weird errors during the Perl build: # 1182003549.604836:3-24:(super.c:1516:llu_iop_fcntl()): unsupported fcntl cmd 2 # -# As of 2007-Jun (pre-5.9.5) miniperl and libperl.a can be successfully built; -# building any extensions would be hard since Perl cannot run anything -# external (which breaks MakeMaker, and confuses ext/util/make_ext). +# As of 2007-Sep (pre-5.10) miniperl, libperl.a, and perl can be successfully +# built; no extensions are built. It would be hard since Perl cannot run +# anything external (pipes, system(), backticks or fork/exec, or globbing) +# (which breaks MakeMaker, and confuses ext/util/make_ext). # -# To build libperl.a (which also gets miniperl built): +# To build: # # sh Configure -des -Dusedevel -# make libperl.a +# make perl # -# The -Dusedevel is required for Perl 5.9, it is not required for Perl 5.10 -# sources, once they come out. You will need to have the run.sh execution -# wrapper around (it gets created in the Perl build directory) if you want to -# run the miniperl in the XT4. It collects the exit status (note that yod -# is run with "-sz 1", so only one instance is run), and possible crash status. -# For example: +# The -Dusedevel is required for Perl 5.9, it is not required for the Perl +# 5.10 sources, once they come out. "make install" won't work since it +# assumes file globbing (see above). You can try the following manually: # -# sh run.sh ./miniperl -le 'print 42' +# mkdir -p /opt/perl-catamount +# mkdir -p /opt/perl-catamount/include +# mkdir -p /opt/perl-catamount/lib +# mkdir -p /opt/perl-catamount/lib/perl5/5.9.5 +# mkdir -p /opt/perl-catamount/bin +# cp *.h /opt/perl-catamount/include +# cp libperl.a /opt/perl-catamount/lib +# cp -pr lib/* /opt/perl-catamount/lib/perl5/5.9.5 +# cp miniperl perl run.sh cc.sh /opt/perl-catamount/lib +# +# (For Perl 5.10.0 do the obvious renaming above.) +# With the headers and the libperl.a you can embed Perl to your Catamount +# application, see pod/perlembed.pod. You can do for example: +# +# cc -I/opt/perl-catamount/include -L/opt/perl-catamount/lib -o embed embed.c +# yod -sz 1 ./embed -le 'print sqrt(2)' +# +# You might want to have the run.sh execution wrapper around (it gets created +# in the Perl build directory) if you want to run the miniperl or perl in +# the XT4. It collects the exit status (note that yod is run with "-sz 1", +# so only one instance is run), and possible crash status (bare yod does +# not collect the exit status). For example: +# +# sh /opt/perl-catamount/bin/run.sh /opt/perl-catamount/bin/perl -le 'print 42' +# +# or if you are still in the build directory: +# +# sh run.sh ./perl -le 'print 2*3*7' +# +# The cc.sh is a wrapper for the Catamount cc used when building Perl +# (and before that, when running Configure), it arranges for the main() +# exit(), _exit() to be wrapped so that the exit/crash status can be +# collected (by run.sh). # case "$prefix" in @@ -46,7 +76,7 @@ cat >&4 <<__EOF1__ __EOF1__ archname='x86_64-catamount' -archobjs='cata.o' +archobjs='catalib.o' d_mmap='undef' d_setlocale='undef' # There is setlocale() but no locales. d_vprintf='define' @@ -59,10 +89,11 @@ incpth=' ' installusrbinperl='undef' libswanted="m crypt c" libpth=' ' -locincpth='' -onlyextensions='Fcntl' # Not that we can build this, really. +locincpth=' ' +nonxs_ext=' ' osname='catamount' procselfexe='undef' +static_ext=' ' usedl='undef' useithreads='undef' uselargefiles='define' @@ -107,7 +138,7 @@ cat > $cc <<__EOF3a__ # This is essentially a frontend driver for the Catamount cc. # We arrange for (1) the main(), exit(), _exit() being wrapped (cpp-defined) # catamain(), cataexit(), and _cataexit() (2) the actual main() etc. are in -# cata.c, and cata.o is linked in when needed (3) signals being caught +# cata.c, and cata*.o are linked in when needed (3) signals being caught # All this mostly for being able to catch the exit status (or crash cause). # argv='' @@ -121,17 +152,19 @@ __EOF3a__ cat >> $cc <<'__EOF3b__' case "$1" in --cata_o) ;; -*) if test ! -f cata.o +*) if test ! -f catalib.o then - if test ! -f cata.c + if test ! -f catalib.c then - if test -f ../cata.c # If compiling in UU during Configure. + if test -f ../catalib.c # If compiling in UU during Configure. then - cp ../cata.c cata.c + cp ../catalib.c catalib.c + cp ../catamain.c catamain.c cp ../cata.h cata.h fi fi - $0 --cata_o -c cata.c || exit 1 + $0 --cata_o -c catalib.c || exit 1 + $0 --cata_o -c catamain.c || exit 1 fi ;; esac @@ -200,8 +233,12 @@ done case "$exe" in '') ;; *) case "$argv" in - *cata.o*) ;; - *) argv="$argv cata.o" ;; + *catalib.o*|*" perlmain.o "*) ;; + *) argv="$argv catalib.o" ;; + esac + case "$argv" in + *catamain.o*) ;; + *) argv="$argv catamain.o" ;; esac ;; esac @@ -244,9 +281,14 @@ int main(int argc, char **argv, char **env); #endif #endif #endif +#ifdef argv0 +#define ARGV0 STRINGIFY(argv0) +#else +#define ARGV0 argv0 +#endif __EOF6__ -cat >cata.c<<__EOF7__ +cat >catalib.c<<__EOF7__ #include <stdio.h> #include <signal.h> #undef printf @@ -254,15 +296,7 @@ cat >cata.c<<__EOF7__ #undef exit #undef _exit #include "cata.h" -#ifndef STRINGIFY -#define STRINGIFY(a) #a -#endif -#ifdef argv0 -#define ARGV0 STRINGIFY(argv0) -#else -static char* argv0; -#define ARGV0 argv0 -#endif +char* argv0; void cataexit(int status) { printf("cata: exe %s pid %d exit %d\n", ARGV0, getpid(), status); exit(status); @@ -324,6 +358,16 @@ void catasigsetup() { signal(SIGPWR, catasighandle); signal(SIGSYS, catasighandle); } +void boot_DynaLoader (void* cv) { } +__EOF7__ +cat >catamain.c<<__EOF8__ +#include <stdio.h> +#undef printf +#undef main +#undef exit +#undef _exit +#include "cata.h" +extern char* argv0; int main(int argc, char *argv[], char *envv[]) { int status; #ifndef argv0 @@ -343,7 +387,7 @@ int main(int argc, char *argv[], char *envv[]) { printf("cata: exe %s pid %d main %d\n", ARGV0, getpid(), status); return status; } -__EOF7__ +__EOF8__ echo "Faking DynaLoader" touch DynaLoader.o # Oh, the agony. diff --git a/utils/Makefile b/utils/Makefile.SH index 3a96c9e8a0..42a274ccc5 100644 --- a/utils/Makefile +++ b/utils/Makefile.SH @@ -1,6 +1,40 @@ +case $PERL_CONFIG_SH in +'') + if test -f config.sh; then TOP=.; + elif test -f ../config.sh; then TOP=..; + elif test -f ../../config.sh; then TOP=../..; + elif test -f ../../../config.sh; then TOP=../../..; + elif test -f ../../../../config.sh; then TOP=../../../..; + else + echo "Can't find config.sh."; exit 1 + fi + . $TOP/config.sh + ;; +esac +: This forces SH files to create target in same directory as SH file. +: This is so that make depend always knows where to find SH derivatives. +case "$0" in +*/Makefile.SH) cd `expr X$0 : 'X\(.*\)/'` ;; +Makefile.SH) ;; +*) case `pwd` in + */utils) ;; + *) if test -d utils; then cd utils + else echo "Can't figure out where to write output."; exit 1 + fi;; + esac;; +esac + +echo "Extracting utils/Makefile (with variable substitutions)" +rm -f Makefile +cat >Makefile <<!GROK!THIS! PERL = ../miniperl REALPERL = ../perl +RUN = $run + +!GROK!THIS! + +cat >>Makefile <<'!NO!SUBS!' # Files to be built with variable substitution after miniperl is # available. Dependencies handled manually below (for now). @@ -12,7 +46,7 @@ plextractexe = ./c2ph ./config_data ./corelist ./cpan ./h2ph ./h2xs ./instmodsh all: $(plextract) $(plextract): - $(PERL) -I../lib $@.PL + $(RUN) $(PERL) -I../lib $@.PL c2ph: c2ph.PL ../config.sh @@ -74,3 +108,12 @@ distclean: clobber veryclean: distclean -rm -f *~ *.org +!NO!SUBS! +$eunicefix Makefile +case `pwd` in +*SH) + $rm -f ../Makefile + $ln Makefile ../Makefile + ;; +esac +rm -f $firstmakefile diff --git a/x2p/Makefile.SH b/x2p/Makefile.SH index 921e1b001a..b4c305894c 100755 --- a/x2p/Makefile.SH +++ b/x2p/Makefile.SH @@ -62,6 +62,8 @@ OPTIMIZE = $optimize .SUFFIXES: .c \$(OBJ_EXT) +RUN = $run + !GROK!THIS! cat >>Makefile <<'!NO!SUBS!' @@ -169,7 +171,7 @@ shlist: # These should be automatically generated $(plextract): - ../miniperl -I../lib $@.PL + $(RUN) ../miniperl -I../lib $@.PL find2perl: find2perl.PL |