Author |
Building Perl 5.22.3RC1 on OpenVMS VAX |
JonathanBelanger
Member
Posts: 42
Joined: 09.06.16 |
Posted on August 16 2016 07:14 |
|
|
Hi All,
I am attempting to build Perl 5.22.3RC1 on OpenVMS VAX V7.3, with Compaq C V6.2. I've run into a couple of problems, one which I was easily able to fix, and the other I'm not sure about.
First, when the CONFIGURE.COM command procedure is generating the list of extensions to build, it generates a symbol that is 523 characters long. It then tries to do the following:
$ rp = "[''dflt']"
This causes a DCL Buffer Overflow error. This should be corrected to:
$ rp = "[" + dflt + "]"
Second, when getting to the point where DynaLoader is being built, it always fails with a "No known action to build STATIC" error. The MMS file generated by the build process contains the following line:
static :: $(OBJECT)
with no action line/statement. From what I can tell, the source file used to generate the MMS file has not changed in a very long time, and it does contain a statement within it that should generate the above MMS statement. I'm not sure how this ever worked.
Has anyone tried to build one of the later versions of PERL? If so, did you run into these same problems? If so, how did you resolve them?
Thanks,
~Jon. |
|
Author |
RE: Building Perl 5.22.3RC1 on OpenVMS VAX |
malmberg
Moderator
Posts: 530
Joined: 15.04.08 |
Posted on August 17 2016 03:31 |
|
|
The VMS-PERL mailing list will be interested in these reports.
Unfortunately the last person testing Perl on VAX/VMS apparently stopped running their automated testing quite a few years ago. On the VMS-PERL mailing list there also should be people that could help you set up a "SMOKER".
Perl takes quite a few resources to build and test, and many VAX configurations simply either do not have enough diskspace, or are too slow for effective testing.
The first issue should get fixed rather quickly with a bug report to the vms-perl mailing list.
The second issue may take some more analysis to determine what went wrong.
You might want to try using MMK (From the GITHUB distribution, the others are way out of date) instead of MMS and see if that makes a difference.
|
|
Author |
RE: Building Perl 5.22.3RC1 on OpenVMS VAX |
JonathanBelanger
Member
Posts: 42
Joined: 09.06.16 |
Posted on August 19 2016 09:05 |
|
|
OK, I finally figured it all out.
Perl 5.22.3RC1 should be able to be build on OpenVMS VAX V7.3 using Compaq (DEC) C V6.4 (not change from previously reported, which was wrong) and DECset 12.2.
The CONFIGURE.COM command procedure has the above mentioned bug:
change:
rp = "[''dflt'] "
to:
rp = "[" + dflt + "] "
The DESCRIP_MMS.TEMPLATE file in the [.VMS] directory needs to be changed to specify the following compile time qualifiers:
For numeric.c, sv.c and util.c /NOWARNING needs to be specified to avoid the FLOATOVRFL warning that is generated, but expected.
For pp_pack.c /OPT=NODISJOINT needs to be specified to avoid a C compile BUGCHK.
The MAKEFILE.PL in the [.EXT.DYNALOADER] needs to be updated to add \$(NOECHO) \$(NOOP) as an action aver the static :: $object line.
Once you do this, everything should build successfully. I have not run a complete build yet, but anticipate no more issues (I'll add to here, if I find any new ones).
Enjoy.
~Jon. |
|
Author |
RE: Building Perl 5.22.3RC1 on OpenVMS VAX |
abrsvc
Member
Posts: 108
Joined: 12.03.10 |
Posted on August 19 2016 16:52 |
|
|
Jon,
Not to be difficult, but the "corrections" to the com file make no sense. Both statements end up with the symbol RP equal to the same resultant string. The double ' is an indicator for symbol substitution within a quoted string as expected. The second example just breaks it out into smaller pieces, but both statements are equivalent.
There is something else wrong somewhere or you don't have the entire context shown here.
Dan |
|
Author |
RE: Building Perl 5.22.3RC1 on OpenVMS VAX |
malmberg
Moderator
Posts: 530
Joined: 15.04.08 |
Posted on August 20 2016 15:28 |
|
|
The corrections to the com file get around a token length limitation in VAX/VMS 7.3.
When DCL expands the string in the original case, the resulted expansion is larger than what DCL allows for a token.
I would look at adding code to conditionally add #pragmas to disable the specific warnings or optimizations for VMS and DEC C version less than or equal 6.4.
If adding the #pragma does not work, then the script that generates the descrip_mms.template should be modified to generate a different descrip.mms.
Once you get a complete build, I recommend posting on the vms-perl mailing list. Perl also has an NNTP server that mirrors their mailing lists as a newsgroup.
A patch disabling all warnings will probably not be accepted to Perl. |
|
Author |
RE: Building Perl 5.22.3RC1 on OpenVMS VAX |
JonathanBelanger
Member
Posts: 42
Joined: 09.06.16 |
Posted on August 23 2016 07:25 |
|
|
I finally got it all compiled and built. I did run the tests, but a number were failing (socket, argv, and a few more). I have not looked into these yet. I did have to use the /OPTIMIZE=NODISJOINT for SHA and MD5. When linking for the socket code, there were some undefined symbols that I also have to look into. Other than that, it is building. I'll retry the full build and see how long it actually takes.
~Jon. |
|