Front page | perl.perl5.porters |
Postings from May 2012
ODP: Re: Compillng perl on z/OS - first problems
Thread Previous
|
Thread Next
From:
Mariusz Stakowski
Date:
May 7, 2012 05:31
Subject:
ODP: Re: Compillng perl on z/OS - first problems
Message ID:
OF6AF575BA.96CC6CE7-ONC12579EA.0050A96A-C12579F7.0044BA02@asseco.pl
Hello Nicholas,
Thank you very much for thorough analysis.
I used z/OS make. Recently I have installed GNU make and the results
seem to be the same.
Here is z/OS make version information:
PROK32:/u/prok32/local/perl_5_14_2/perl-5.14.2: >make -V
make - Version z/OS Shell and Utilities v1.12
Built-in Rules (cannot be changed):
OS:=OPENMVS
.IMPORT .IGNORE : ROOTDIR
.MAKEFILES:makefile Makefile
.SOURCE : .NULL
@B = $(@:b)
@D = $(@:d)
@F = $(@:f)
%B = $(%:b)
%D = $(%:d)
%F = $(%:f)
*B = $(*:b)
*D = $(*:d)
*F = $(*:f)
<B = $(<:b)
<D = $(<:d)
<F = $(<:f)
?B = $(?:b)
?F = $(?:f)
?D = $(?:d)
System Configuration:
SWITCHAR = -
OSVERSION = 03
OSRELEASE = 22.00
DIRSEPSTR = /
SHELL = /bin/sh
SHELLFLAGS = -c
SHELLMETAS =
GROUPSHELL = /bin/sh
GROUPFLAGS =
GROUPSUFFIX =
MAKEDIR = /u/prok32/local/perl_5_14_2/perl-5.14.2
PWD = /u/prok32/local/perl_5_14_2/perl-5.14.2
And here is GNU make version information:
PROK32:/u/prok32/local/perl_5_14_2/perl-5.14.2: >gmake -v
GNU Make version 3.79.1, by Richard Stallman and Roland McGrath.
Built for s390-ibm-os390
Copyright (C) 1988, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 2000
Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Report bugs to <bug-make@gnu.org>.
I will try to describe using z/OS make first.
I started with:
sh Configure
I have noticed nothing special there. Here is final part of that run:
...
Stripping down cppstdin path name
End of configuration questions.
I see a config.arch file, loading it.
Stripping down executable paths...
Creating config.sh...
Hmm...You had some extra variables I don't know about...I'll try to keep
'em...
Propagating recommended variable $gconvert_preference...
If you'd like to make any changes to the config.sh file before I begin
to configure things, do it as a shell escape now (e.g. !vi config.sh).
Press return or use a shell escape to edit config.sh:
Doing variable substitutions on .SH files...
Extracting cflags (with variable substitutions)
Extracting config.h (with variable substitutions)
Extracting makedepend (with variable substitutions)
Extracting Makefile (with variable substitutions)
This is an EBCDIC system, checking if any parser files need regenerating.
No parser files were regenerated. That's okay.
Extracting myconfig (with variable substitutions)
Extracting pod/Makefile (with variable substitutions)
Extracting Policy.sh (with variable substitutions)
Extracting runtests (with variable substitutions)
Extracting utils/Makefile (with variable substitutions)
Extracting x2p/cflags (with variable substitutions)
Extracting x2p/Makefile (with variable substitutions)
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] n
You must run 'make depend' then '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.
Previously I answered "y" on question concerning checking dependencies.
And I have got
interleaved messages.
This time I run that command in background:
make depend > makedepend.out &
here is content of makedepend.out file:
sh ./makedepend MAKE=make
echo av.c scope.c op.c doop.c doio.c dump.c gv.c hv.c mg.c reentr.c mro.c
perl.c perly.c pp.c pp_hot.c pp_ctl.c pp_sys.c regcomp.c regexec.c utf8.c
sv.c taint.c toke.c util.c deb.c run.c universal.c pad.c globals.c
keywords.c perlio.c perlapi.c numeric.c mathoms.c locale.c pp_pack.c
pp_sort.c miniperlmain.c opmini.c perlmini.c | tr ' ' '\n' >.clist
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 gv.o.
Finding dependencies for hv.o.
Finding dependencies for mg.o.
Finding dependencies for reentr.o.
Finding dependencies for mro.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 utf8.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 pad.o.
Finding dependencies for globals.o.
Finding dependencies for keywords.o.
Finding dependencies for perlio.o.
Finding dependencies for perlapi.o.
Finding dependencies for numeric.o.
Finding dependencies for mathoms.o.
Finding dependencies for locale.o.
Finding dependencies for pp_pack.o.
Finding dependencies for pp_sort.o.
Finding dependencies for miniperlmain.o.
Finding dependencies for opmini.o.
Finding dependencies for perlmini.o.
echo Makefile.SH cflags.SH config_h.SH makedepend.SH myconfig.SH
pod/Makefile.SH | tr ' ' '\n' >.shlist
Updating makefile...
cd x2p; make depend
sh ../makedepend MAKE=make
echo hash.c str.c util.c walk.c | tr ' ' '\n' >.clist
Finding dependencies for hash.o.
Finding dependencies for str.o.
Finding dependencies for util.o.
Finding dependencies for walk.o.
echo Makefile.SH cflags.SH | tr ' ' '\n' >.shlist
Updating makefile...
And on the screen I have got the following errors:
PROK32:/u/prok32/local/perl_5_14_2/perl-5.14.2: >WARNING CCN3296
./patchlevel.h:132 #include file "git_version.h" not found.
ERROR CCN3198 perl.c:512 #if, #else, #elif, #ifdef, #ifndef block must
be ended with #endif.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .67109642.c. Correct the errors and try again.
ERROR CCN3202 perly.c:86 #endif can only appear at the end of a #if,
#elif, #ifdef or #ifndef block.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886859.c. Correct the errors and try again.
ERROR CCN3010 ./time64.c:479 Macro PeRl_CaTiFy invoked with a null
argument for parameter a.
ERROR CCN3010 ./time64.c:479 Macro PeRl_CaTiFy invoked with a null
argument for parameter a.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .67109651.c. Correct the errors and try again.
ERROR CCN3213 regcomp.c:275 Macro name TRIE_TYPE_IS_SAFE cannot be
redefined.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886868.c. Correct the errors and try again.
ERROR CCN3287 regexec.c:36 The parameter list on the definition of
macro _CCC_TRY_NONLOCALE is not complete.
ERROR CCN3287 regexec.c:37 The parameter list on the definition of
macro CCC_TRY is not complete.
ERROR CCN3287 regexec.c:38 The parameter list on the definition of
macro CCC_TRY_U is not complete.
ERROR CCN3287 regexec.c:70 The parameter list on the definition of
macro REXEC_TRIE_READ_CHAR is not complete.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886871.c. Correct the errors and try again.
WARNING CCN3296 ./perl.h:4316 #include file "uudmap.h" not found.
WARNING CCN3296 ./perl.h:4319 #include file "bitcount.h" not found.
FSUM3065 The COMPILE step ended with return code 4.
ERROR CCN3294 pp_pack.c:115 Syntax error in expression on #if directive.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886903.c. Correct the errors and try again.
WARNING CCN3296 ./patchlevel.h:132 #include file "git_version.h" not
found.
ERROR CCN3198 perlmini.c:512 #if, #else, #elif, #ifdef, #ifndef block
must be ended with #endif.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886905.c. Correct the errors and try again.
Next I have rerun sh Configure ignoring created config.sh file and then I
have run gmake:
PROK32:/u/prok32/local/perl_5_14_2/perl-5.14.2: >/u/prok32/bin/bin/gmake
depend > makedepend.out &
[2] 222
[1] Exit 126 gmake depend >makedepend.out
PROK32:/u/prok32/local/perl_5_14_2/perl-5.14.2: >WARNING CCN3296
./patchlevel.h:132 #include file "git_version.h" not found.
ERROR CCN3198 perl.c:512 #if, #else, #elif, #ifdef, #ifndef block must
be ended with #endif.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886338.c. Correct the errors and try again.
ERROR CCN3202 perly.c:86 #endif can only appear at the end of a #if,
#elif, #ifdef or #ifndef block.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886333.c. Correct the errors and try again.
ERROR CCN3010 ./time64.c:479 Macro PeRl_CaTiFy invoked with a null
argument for parameter a.
ERROR CCN3010 ./time64.c:479 Macro PeRl_CaTiFy invoked with a null
argument for parameter a.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886341.c. Correct the errors and try again.
ERROR CCN3213 regcomp.c:275 Macro name TRIE_TYPE_IS_SAFE cannot be
redefined.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886678.c. Correct the errors and try again.
ERROR CCN3287 regexec.c:36 The parameter list on the definition of
macro _CCC_TRY_NONLOCALE is not complete.
ERROR CCN3287 regexec.c:37 The parameter list on the definition of
macro CCC_TRY is not complete.
ERROR CCN3287 regexec.c:38 The parameter list on the definition of
macro CCC_TRY_U is not complete.
ERROR CCN3287 regexec.c:70 The parameter list on the definition of
macro REXEC_TRIE_READ_CHAR is not complete.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886306.c. Correct the errors and try again.
WARNING CCN3296 ./perl.h:4315 #include file "uudmap.h" not found.
WARNING CCN3296 ./perl.h:4318 #include file "bitcount.h" not found.
FSUM3065 The COMPILE step ended with return code 4.
ERROR CCN3294 pp_pack.c:115 Syntax error in expression on #if directive.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .50331918.c. Correct the errors and try again.
WARNING CCN3296 ./patchlevel.h:132 #include file "git_version.h" not
found.
ERROR CCN3198 perlmini.c:512 #if, #else, #elif, #ifdef, #ifndef block
must be ended with #endif.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886382.c. Correct the errors and try again.
I have run gmake with option -d too. The resulting file is about 400KB so
I do not include it in this mail.
I have run make after gmake depend with the following results:
PROK32:/u/prok32/local/perl_5_14_2/perl-5.14.2: >make
`sh cflags "optimize=''" miniperlmain.o` miniperlmain.c
CCCMD = c89 -DPERL_CORE -c -2 -Wc,XPLINK -DMAXSIG=39 -DOEMVS
-D_OE_SOCKETS -D_XOPEN_SOURCE_EXTENDED -D_ALL_SOURCE -DYYDYNAMIC -W
0,float(ieee)
ERROR CCN3343 ./perl.h:4494 Redeclaration of PL_fold_latin1 differs from
previous declaration on line 537 of "./utfebcdic.h".
CCN0793(I) Compilation failed for file ./miniperlmain.c. Object file not
created.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile miniperlmain.c. Correct the errors and try
again.
FSUM8226 make: Error code 3
Best regards
Mariusz Stakowski
Od: Nicholas Clark <nick@ccl4.org>
Do: Mariusz Stakowski <Mariusz.Stakowski@asseco.pl>
DW: perl5-porters@perl.org, perl-mvs@perl.org
Data: 2012-04-20 18:04
Temat: Re: Compillng perl on z/OS - first problems
Wys³ane przez: Nicholas Clark <nick@flirble.org>
On Tue, Apr 17, 2012 at 04:57:43PM +0200, Mariusz Stakowski wrote:
> Hello list,
>
> I finally tried to compile perl on z/OS. I have taken
perl
> 5.14.2 source. I have encountered errors during configuration stage.
There
> might be my faults - I have read INSTALL and README but I am not sure if
I
> have given right parameters. It is possible that my system needs some
> configuration too. I would appreciate some help in making it working. I
> have no groff yet but this is not a big problem I think.
Thanks for trying this, and reporting back.
I'm going to inline at least part of your file conf.errors, indented 4
spaces, as it's *very* strange, with comments on the left margin.
This is it, *in order*:
WARNING CCN3296 ./patchlevel.h:132 #include file "git_version.h" not
found.
ERROR CCN3198 perl.c:512 #if, #else, #elif, #ifdef, #ifndef block
must be ended with #endif.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886901.c. Correct the errors and try
again.
Finding dependencies for perly.o.
ERROR CCN3202 perly.c:86 #endif can only appear at the end of a
#if, #elif, #ifdef or #ifndef block.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .67109688.c. Correct the errors and try
again.
Finding dependencies for pp.o.
Finding dependencies for pp_hot.o.
Finding dependencies for pp_ctl.o.
Finding dependencies for pp_sys.o.
This suggests two problems:
1) more than one make process running in parallel
You shouldn't be seeing all these "Finding dependencies for ..." lines
interspersed with compiling output. The "Finding dependencies" should
complete before any compiling starts
2) each make process ignoring any sort of dependency rules
In that, there's a dependency from perl.o on git_version.h, so why is
the make utility ignoring it, and attempting to compile perl.c
generating git_version.h?
In fact, is there a Makefile at all? Or is a make utility getting ahead
of itself and attempting to use default .c to .o rules to compile every
.c file it can see?
ERROR CCN3010 ./time64.c:479 Macro PeRl_CaTiFy invoked with a null
argument for parameter a.
ERROR CCN3010 ./time64.c:479 Macro PeRl_CaTiFy invoked with a null
argument for parameter a.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886910.c. Correct the errors and try
again.
Finding dependencies for regcomp.o.
ERROR CCN3213 regcomp.c:275 Macro name TRIE_TYPE_IS_SAFE cannot be
redefined.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .67109692.c. Correct the errors and try
again.
Finding dependencies for regexec.o.
ERROR CCN3287 regexec.c:36 The parameter list on the definition of
macro _CCC_TRY_NONLOCALE is not complete.
ERROR CCN3287 regexec.c:37 The parameter list on the definition of
macro CCC_TRY is not complete.
ERROR CCN3287 regexec.c:38 The parameter list on the definition of
macro CCC_TRY_U is not complete.
ERROR CCN3287 regexec.c:70 The parameter list on the definition of
macro REXEC_TRIE_READ_CHAR is not complete.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .83886915.c. Correct the errors and try
again.
Finding dependencies for utf8.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 pad.o.
Finding dependencies for globals.o.
WARNING CCN3296 ./perl.h:4315 #include file "uudmap.h" not found.
WARNING CCN3296 ./perl.h:4318 #include file "bitcount.h" not found.
Again, these two files should have been generated before they are
included.
Makefile dependencies to ensure this are being ignored.
FSUM3065 The COMPILE step ended with return code 4.
Finding dependencies for keywords.o.
Finding dependencies for perlio.o.
Finding dependencies for perlapi.o.
Finding dependencies for numeric.o.
Finding dependencies for mathoms.o.
Finding dependencies for locale.o.
Finding dependencies for pp_pack.o.
ERROR CCN3294 pp_pack.c:115 Syntax error in expression on #if
directive.
Line 115 of pp_pack.c in perl 5.14.2 is this:
#define SIZE32 4
That's not even an #if directive. Which file is the compiler actually
seeing? If it is seeing the right pp_pack.c, why is its diagnostic output
confused?
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .67109729.c. Correct the errors and try
again.
Finding dependencies for pp_sort.o.
Finding dependencies for miniperlmain.o.
Finding dependencies for opmini.o.
Finding dependencies for perlmini.o.
WARNING CCN3296 ./patchlevel.h:132 #include file "git_version.h" not
found.
ERROR CCN3198 perlmini.c:512 #if, #else, #elif, #ifdef, #ifndef
block must be ended with #endif.
FSUM3065 The COMPILE step ended with return code 12.
FSUM3017 Could not compile .67109737.c. Correct the errors and try
again.
echo Makefile.SH cflags.SH config_h.SH makedepend.SH myconfig.SH
pod/Makefile.SH | tr ' ' '\n' >.shlist
Updating makefile...
cd x2p; make depend
sh ../makedepend MAKE=make
echo hash.c str.c util.c walk.c | tr ' ' '\n' >.clist
Finding dependencies for hash.o.
Finding dependencies for str.o.
Finding dependencies for util.o.
Finding dependencies for walk.o.
echo Makefile.SH cflags.SH | tr ' ' '\n' >.shlist
Updating makefile...
Now you must run 'make'
What's *supposed* to happen is
1: user runs ./Configure, which ends up generating config.sh
2: ./Configure uses values in config.sh to run all the files *.SH,
which are shell scripts that extract various other files. In
particular,
Makefile.SH extracts Makefile, and makedepend.SH extracts makedepend
3: ./Configure (by default) runs makedepend. However, there's also a
dependency rule in Makefile to make this happen.
makedepend processes Makefile and generates makefile.
(it's makedepend which is outputting all those "Finding dependencies"
lines)
makefile is simply Makefile with a lot of dependency rules concatenated
on the end.
4: *At this point* user runs make
make picks 'makefile' as the file to read ('Makefile' is second choice)
and runs with it. For a clean build, it doesn't actually matter if it
got
'Makefile' instead, because dependency rules only matter if rebuilding
after editing source files.
What seems to be happening is
a) make running at the same time as makedepend
b) make not even bothering act on the dependency rules in the Makefile
which makes me wonder - is make even reading 'Makefile'?
So
1: Which make program are you using? GNU make, or the system supplied
make?
2: What's the default filename that the make program tries to read?
3: What happens if you re-run make at this point?
Does it now pick up on the correct Makefile?
4: If not, what happens if you run
make -f Makefile
? Does that work?
Nicholas Clark
Thread Previous
|
Thread Next