Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.84k stars 524 forks source link

Can't build stable perl 5.005_03 on Digital Unix 4.0d #1170

Closed p5pRT closed 20 years ago

p5pRT commented 24 years ago

Migrated from rt.perl.org#2138 (status was 'resolved')

Searchable as RT2138$

p5pRT commented 24 years ago

From sabol@alderaan.gsfc.nasa.gov

The problem appears to be in the "make depend" stage. I've tried the following scenarios​:

1. DEC cc and DEC make 2. DEC cc and GNU make 3.76 3. gcc 2.95.2 and GNU make 3.76 4. gcc 2.7.3.2 and GNU make 3.76 5. gcc 2.7.3.2 and GNU make 3.78.1

Nothing worked\, and the problem was always identical.

I even tried installing GNU sed 3.0.2 thinking perhaps DEC's sed was broken.

Can someone help?

I accepted nearly all of Configure's defaults. The only things I changed were libpath and ldflags really. See the myconfig output​:

./myconfig Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration​:   Platform​:   osname=dec_osf\, osvers=4.0\, archname=alpha-dec_osf   uname='osf1 dbsrv.gsfc.nasa.gov v4.0 878 alpha '   hint=recommended\, useposix=true\, d_sigaction=define   usethreads=undef useperlio=undef d_sfio=undef   Compiler​:   cc='gcc'\, optimize='-O3'\, gccversion=2.7.2.3   cppflags='-ansi -DLANGUAGE_C'   ccflags ='-ansi -DLANGUAGE_C'   stdchar='unsigned char'\, d_stdstdio=define\, usevfork=false   intsize=4\, longsize=8\, ptrsize=8\, doublesize=8   d_longlong=define\, longlongsize=8\, d_longdbl=define\, longdblsize=8   alignbytes=8\, usemymalloc=y\, prototype=define   Linker and Libraries​:   ld='ld'\, ldflags ='-L/usr/sybase/lib -L/usr/contrib/osf-4.0/lib -L/usr/contrib/osf/lib -L/usr1/local/lib -L/usr/local/lib'   libpth=/usr/sybase/lib /usr/contrib/osf-4.0/lib /usr/contrib/osf/lib /usr1/local/lib /usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /var/shlib   libs=-lgdbm -ldbm -ldb -lm   libc=/usr/shlib/libc.so\, so=so\, useshrplib=false\, libperl=libperl.a   Dynamic Linking​:   dlsrc=dl_dlopen.xs\, dlext=so\, d_dlsymun=undef\, ccdlflags=' '   cccdlflags='-fpic'\, lddlflags='-shared -expect_unresolved "*" -O3 -msym -s -L/usr/sybase/lib -L/usr/contrib/osf-4.0/lib -L/usr/contrib/osf/lib -L/usr1/local/lib -L/usr/local/lib'

I invoked Configure like this​:

sh ./Configure -Uinstallusrbinperl -Dprefix=/usr/contrib/osf-4.0 -Dcc=gcc

The end of the Configure process went like this​:

Now you need to generate make dependencies by running "make depend". You might prefer to run it in background​: "make depend > makedepend.out &" It can take a while\, so you might not want to run it right now.

Run make depend now? [y] make​: *** Warning​: File `Makefile' has modification time in the future (2000-02-11 16​:03​:02 > 2000-02-11 16​:02​:49) sh ./makedepend MAKE=make make[1]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03' make[1]​: *** Warning​: File `Makefile' has modification time in the future (2000-02-11 16​:03​:02 > 2000-02-11 16​:02​:51) make depend MAKEDEPEND= make[2]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03' make[2]​: *** Warning​: File `makedepend' has modification time in the future (2000-02-11 16​:03​:04 > 2000-02-11 16​:02​:51) sh ./makedepend MAKE=make make[3]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03' sh writemain lib/auto/DynaLoader/DynaLoader.a > tmp sh mv-if-diff tmp perlmain.c echo malloc.c av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c byterun.c perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c gv.c sv.c taint.c toke.c util.c deb.c run.c universal.c globals.c perlio.c miniperlmain.c perlmain.c | tr ' ' '\n' >.clist make[3]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03' Finding dependencies for malloc.o. Finding dependencies for av.o. Finding dependencies for scope.o. Finding dependencies for op.o. Finding dependencies for doop.o. Finding dependencies for doio.o. Finding dependencies for dump.o. Finding dependencies for hv.o. Finding dependencies for mg.o. Finding dependencies for byterun.o. Finding dependencies for perl.o. Finding dependencies for perly.o. Finding dependencies for pp.o. Finding dependencies for pp_hot.o. Finding dependencies for pp_ctl.o. Finding dependencies for pp_sys.o. Finding dependencies for regcomp.o. Finding dependencies for regexec.o. Finding dependencies for gv.o. Finding dependencies for sv.o. Finding dependencies for taint.o. Finding dependencies for toke.o. Finding dependencies for util.o. Finding dependencies for deb.o. Finding dependencies for run.o. Finding dependencies for universal.o. Finding dependencies for globals.o. Finding dependencies for perlio.o. Finding dependencies for miniperlmain.o. Finding dependencies for perlmain.o. make[3]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03' echo Makefile.SH cflags.SH config_h.SH makeaperl.SH makedepend.SH makedir.SH perl_exp.SH writemain.SH | tr ' ' '\n' >.shlist make[3]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03' Updating makefile... test -s perlmain.c && touch perlmain.c cd x2p; make depend make[3]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03/x2p' sh ../makedepend MAKE=make make[4]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03/x2p' echo hash.c str.c util.c walk.c | tr ' ' '\n' >.clist make[4]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03/x2p' Finding dependencies for hash.o. Finding dependencies for str.o. Finding dependencies for util.o. Finding dependencies for walk.o. make[4]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03/x2p' echo Makefile.SH cflags.SH | tr ' ' '\n' >.shlist make[4]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03/x2p' Updating makefile... make[3]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03/x2p' make[2]​: *** Warning​: Clock skew detected. Your build may be incomplete. make[2]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03' make[1]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03' make[1]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03' make[1]​: *** Warning​: File `makefile' has modification time in the future (2000-02-11 16​:04​:16 > 2000-02-11 16​:04​:02) sh writemain lib/auto/DynaLoader/DynaLoader.a > tmp sh mv-if-diff tmp perlmain.c File perlmain.c not changed. echo malloc.c av.c scope.c op.c doop.c doio.c dump.c hv.c mg.c byterun.c perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c gv.c sv.c taint.c to ke.c util.c deb.c run.c universal.c globals.c perlio.c miniperlmain.c perlmain.c | tr ' ' '\n' >.clist make[1]​: *** Warning​: Clock skew detected. Your build may be incomplete. make[1]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03' Finding dependencies for malloc.o. ./makedepend​: UU/malloc.c.c​: cannot create ./makedepend​: UU/malloc.c.c​: cannot open Finding dependencies for av.o. ./makedepend​: UU/av.c.c​: cannot create ./makedepend​: UU/av.c.c​: cannot open Finding dependencies for scope.o. ./makedepend​: UU/scope.c.c​: cannot create ./makedepend​: UU/scope.c.c​: cannot open Finding dependencies for op.o. ./makedepend​: UU/op.c.c​: cannot create ./makedepend​: UU/op.c.c​: cannot open Finding dependencies for doop.o. ./makedepend​: UU/doop.c.c​: cannot create ./makedepend​: UU/doop.c.c​: cannot open Finding dependencies for doio.o. ./makedepend​: UU/doio.c.c​: cannot create ./makedepend​: UU/doio.c.c​: cannot open Finding dependencies for dump.o. ./makedepend​: UU/dump.c.c​: cannot create ./makedepend​: UU/dump.c.c​: cannot open Finding dependencies for hv.o. ./makedepend​: UU/hv.c.c​: cannot create ./makedepend​: UU/hv.c.c​: cannot open Finding dependencies for mg.o. ./makedepend​: UU/mg.c.c​: cannot create ./makedepend​: UU/mg.c.c​: cannot open Finding dependencies for byterun.o. ./makedepend​: UU/byterun.c.c​: cannot create ./makedepend​: UU/byterun.c.c​: cannot open Finding dependencies for perl.o. ./makedepend​: UU/perl.c.c​: cannot create ./makedepend​: UU/perl.c.c​: cannot open Finding dependencies for perly.o. ./makedepend​: UU/perly.c.c​: cannot create ./makedepend​: UU/perly.c.c​: cannot open Finding dependencies for pp.o. ./makedepend​: UU/pp.c.c​: cannot create ./makedepend​: UU/pp.c.c​: cannot open Finding dependencies for pp_hot.o. ./makedepend​: UU/pp_hot.c.c​: cannot create ./makedepend​: UU/pp_hot.c.c​: cannot open Finding dependencies for pp_ctl.o. ./makedepend​: UU/pp_ctl.c.c​: cannot create ./makedepend​: UU/pp_ctl.c.c​: cannot open Finding dependencies for pp_sys.o. ./makedepend​: UU/pp_sys.c.c​: cannot create ./makedepend​: UU/pp_sys.c.c​: cannot open Finding dependencies for regcomp.o. ./makedepend​: UU/regcomp.c.c​: cannot create ./makedepend​: UU/regcomp.c.c​: cannot open Finding dependencies for regexec.o. ./makedepend​: UU/regexec.c.c​: cannot create ./makedepend​: UU/regexec.c.c​: cannot open Finding dependencies for gv.o. ./makedepend​: UU/gv.c.c​: cannot create ./makedepend​: UU/gv.c.c​: cannot open Finding dependencies for sv.o. ./makedepend​: UU/sv.c.c​: cannot create ./makedepend​: UU/sv.c.c​: cannot open Finding dependencies for taint.o. ./makedepend​: UU/taint.c.c​: cannot create ./makedepend​: UU/taint.c.c​: cannot open -L/usr/sybase/lib -L/usr/contrib/osf-4.0/lib -L/usr/contrib/osf/lib -L/usr1/loca l/lib -L/usr/local/libFinding dependencies for toke.o. ./makedepend​: UU/toke.c.c​: cannot create ./makedepend​: UU/toke.c.c​: cannot open Finding dependencies for util.o. ./makedepend​: UU/util.c.c​: cannot create ./makedepend​: UU/util.c.c​: cannot open Finding dependencies for deb.o. ./makedepend​: UU/deb.c.c​: cannot create ./makedepend​: UU/deb.c.c​: cannot open Finding dependencies for run.o. ./makedepend​: UU/run.c.c​: cannot create ./makedepend​: UU/run.c.c​: cannot open Finding dependencies for universal.o. ./makedepend​: UU/universal.c.c​: cannot create ./makedepend​: UU/universal.c.c​: cannot open Finding dependencies for globals.o. ./makedepend​: UU/globals.c.c​: cannot create ./makedepend​: UU/globals.c.c​: cannot open Finding dependencies for perlio.o. ./makedepend​: UU/perlio.c.c​: cannot create ./makedepend​: UU/perlio.c.c​: cannot open Finding dependencies for miniperlmain.o. ./makedepend​: UU/miniperlmain.c.c​: cannot create ./makedepend​: UU/miniperlmain.c.c​: cannot open Finding dependencies for perlmain.o. ./makedepend​: UU/perlmain.c.c​: cannot create ./makedepend​: UU/perlmain.c.c​: cannot open make[1]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03' make[1]​: *** Warning​: File `makefile' has modification time in the future (2000- 02-11 16​:04​:16 > 2000-02-11 16​:04​:07) echo Makefile.SH cflags.SH config_h.SH makeaperl.SH makedepend.SH makedir.SH per l_exp.SH writemain.SH | tr ' ' '\n' >.shlist make[1]​: *** Warning​: Clock skew detected. Your build may be incomplete. make[1]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03' make[1]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03' make[1]​: *** Warning​: File `makefile' has modification time in the future (2000- 02-11 16​:04​:16 > 2000-02-11 16​:04​:08) echo EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h dosish.h embed.h form.h g v.h handy.h hv.h keywords.h mg.h op.h opcode.h patchlevel.h perl.h perly.h pp.h proto.h regcomp.h regexp.h scope.h sv.h unixish.h util.h iperlsys.h thread.h byt ecode.h byterun.h | tr ' ' '\n' >.hlist make[1]​: *** Warning​: Clock skew detected. Your build may be incomplete. make[1]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03' You don't seem to have a proper C preprocessor. Using grep instead. Updating makefile... test -s perlmain.c && touch perlmain.c cd x2p; make depend make[1]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03/x2p' make[1]​: *** Warning​: File `makefile' has modification time in the future (2000- 02-11 16​:04​:21 > 2000-02-11 16​:04​:09) sh ../makedepend MAKE=make make[2]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03/x2p' echo hash.c str.c util.c walk.c | tr ' ' '\n' >.clist make[2]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03/x2p' Finding dependencies for hash.o. Finding dependencies for str.o. Finding dependencies for util.o. Finding dependencies for walk.o. make[2]​: Entering directory `/Software/usr/contrib/src/perl/perl5.005_03/x2p' echo Makefile.SH cflags.SH | tr ' ' '\n' >.shlist make[2]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03/x2p' Updating makefile... make[1]​: *** Warning​: Clock skew detected. Your build may be incomplete. make[1]​: Leaving directory `/Software/usr/contrib/src/perl/perl5.005_03/x2p' make​: *** Warning​: Clock skew detected. Your build may be incomplete. Now you must run a make.

If you compile perl5 on a different machine or from a different object directory\, copy the Policy.sh file from this object directory to the new one before you run Configure -- this will help you with most of the policy defaults.

make
Make​: makefile\, line 602​: syntax error. Stop.

Line 602 of the makefile says​:

config.h​: Bletch​: How does this C preprocessor catenate tokens?

If I delete this line from the makefile and run make again...

make `sh cflags libperl.a miniperlmain.o` miniperlmain.c   CCCMD = gcc -DPERL_CORE -c -ansi -DLANGUAGE_C -O3
Make​: Don't know how to make perlCAPI.h. Stop.

p5pRT commented 24 years ago

From [Unknown Contact. See original ticket]

Edward-

The warning messages you included regarding file modification times imply that your NFS client is out of sync with your NFS server -- file modification times are written from the NFS servers POV\, while the make process uses the system time of the NFS client.

I cannot see where your particular error came from -- but your build process may have been compromised by the time skew. I suggest you ask your friendly sysadmin to fix the time skew. ntp\, rdate\, whatever.

: *** Warning​: File `Makefile' has modification time\   in the future (2000-02-11 16​:03​:02 > 2000-02-11 16​:02​:49)


Quentin Fennessy Quentin.Fennessy@​amd.com
  Voice​: 512.602.3873   Pager​: 512.622.6316

p5pRT commented 24 years ago

From [Unknown Contact. See original ticket]

The warning messages you included regarding file modification times imply that your NFS client is out of sync with your NFS server -- file modification times are written from the NFS servers POV\, while the make process uses the system time of the NFS client.

I cannot see where your particular error came from -- but your build process may have been compromised by the time skew. I suggest you ask your friendly sysadmin to fix the time skew. ntp\, rdate\, whatever.

*** Warning​: File `Makefile' has modification time\ in the future (2000-02-11 16​:03​:02 > 2000-02-11 16​:02​:49)

Well\, you were right. I rebuilt everything on a local device\, and it worked fine. Frankly\, I'm surprised by this. I've built a lot of complicated packages in my day\, and this is the first one I've come across where an NFS time skew actually caused the build to fail. I can usually just ignore those modification-time-in-the-future warnings.

Thanks\, Ed

p5pRT commented 24 years ago

From [Unknown Contact. See original ticket]

%% "Edward J. Sabol" \sabol@​alderaan\.gsfc\.nasa\.gov writes​:

  ejs> Well\, you were right. I rebuilt everything on a local device\, and   ejs> it worked fine. Frankly\, I'm surprised by this. I've built a lot   ejs> of complicated packages in my day\, and this is the first one I've   ejs> come across where an NFS time skew actually caused the build to   ejs> fail. I can usually just ignore those   ejs> modification-time-in-the-future warnings.

What\, you think we just added the warnings to encourage conversation? :)

Actually that GNU feature was added to GNU make because builds _were_ failing\, in obscure and non-obvious ways\, and people supporting GNU tools were wasting a lot of time trying to figure out the problems.

Unfortunately\, the algorithm GNU make uses to detect timestamp skew is too aggressive and results in too many false positives\, so lots of times people ignore them anyway. Given the architecture of GNU make it's tricky to come up with a more precise check that still covers all the problem areas. And even more tricky to come up with the time to implement it ;).

But at least this way it's much easier to tell if this _might_ be the problem.

--


Paul D. Smith \psmith@​baynetworks\.com Network Management Development "Please remain calm...I may be mad\, but I am a professional." --Mad Scientist


  These are my opinions---Nortel Networks takes no responsibility for them.