Re: ExtUtils::CBuilder on VMS (was Re: Phalanxing MakeMaker)
On Mar 14, 2005, at 3:55 PM, [EMAIL PROTECTED] wrote: Hmm - well I suppose I should mention a few tricky aspects of using MCR on VMS. [snip] Thanks for letting me know. I'll make sure I'm careful with it. =) I released a non-beta version of ExtUtils::CBuilder that should contain all the patches necessary for VMS workitude. Thanks for your help with it. -Ken
Re: ExtUtils::CBuilder on VMS (was Re: Phalanxing MakeMaker)
Ken Williams [EMAIL PROTECTED] wrote on 03/12/2005 10:35:22 PM: On Mar 12, 2005, at 7:18 PM, Ken Williams wrote: Excellent. I just have one question, then, about the following line: my @lddlflags = $args{lddl} ? ($cf-{lddlflags}.=$out) : (/exe=$out); What is the original value of $cf-{lddlflags} such that it makes sense to just append =$out to it? Scratch that, I think I see how it works. Care to try the 0.09_02 revision, hitting CPAN now? OK that one is much close to what I thought you were aiming at :-) It turns out there was an override typo in VMS.pm and t/02-link.t was left as is. This time around I have checked the return $STATUS of the compilet program in a vmsish fashion, that was done so as not to hurt the successful run on Solaris (where vmsish.pm is not installed and this might be considered a bug in the installperl script that ships with perl). Here is a patch against 0.09_02 that addresses both issues and passes both tests on VMS + perl 5.8.1 and Solaris + perl 5.6.1: diff -ru ExtUtils-CBuilder-0_09_02_orig/lib/ExtUtils/CBuilder/Platform/VMS.pm ExtUtils-CBuilder-0.09_02/lib/ExtUtils/CBuilder/Platform/VMS.pm --- ExtUtils-CBuilder-0_09_02_orig/lib/ExtUtils/CBuilder/Platform/VMS.pm 2005-03-12 22:28:29.0 -0500 +++ ExtUtils-CBuilder-0.09_02/lib/ExtUtils/CBuilder/Platform/VMS.pm 2005-03-14 12:40:24.628116000 -0500 @@ -25,7 +25,7 @@ return (/exe=$file); } -sub arg_shared_object_file { +sub arg_share_object_file { my ($self, $file) = @_; return ($self-{config}{lddlflags}=$file); } diff -ru ExtUtils-CBuilder-0_09_02_orig/t/02-link.t ExtUtils-CBuilder-0.09_02/t/02-link.t --- ExtUtils-CBuilder-0_09_02_orig/t/02-link.t 2005-03-12 22:28:29.0 -0500 +++ ExtUtils-CBuilder-0.09_02/t/02-link.t 2005-03-14 14:14:44.794097000 -0500 @@ -7,6 +7,10 @@ print 1..0 # Skipped: link_executable() is not implemented yet on Win32\n; exit; } + if ($^O eq 'VMS') { +require vmsish; +import vmsish; + } plan tests = 5; } @@ -35,8 +39,14 @@ ok $exe_file; # Try the executable -my $retval = system($exe_file); -ok $retval 8, 11; +if ($^O eq 'VMS') { + my $retval = system(mcr $exe_file); + ok $retval, 11; +} +else { + my $retval = system($exe_file); + ok $retval 8, 11; +} # Clean up for ($source_file, $exe_file, $object_file, @temps) { End of Patch. For what it is worth in answer to the first of your questions: $ perl -V:lddlflags lddlflags='/Share'; Peter Prymmer Also see the attachment (to disambiguate line wrap issues): (See attached file: ec.patch) ec.patch Description: Binary data
Re: ExtUtils::CBuilder on VMS (was Re: Phalanxing MakeMaker)
On Mar 14, 2005, at 1:30 PM, [EMAIL PROTECTED] wrote: OK that one is much close to what I thought you were aiming at :-) It turns out there was an override typo in VMS.pm and t/02-link.t was left as is. Oops! That was me forgetting to apply the 02-link.t part of the patch. This time around I have checked the return $STATUS of the compilet program in a vmsish fashion, that was done so as not to hurt the successful run on Solaris (where vmsish.pm is not installed and this might be considered a bug in the installperl script that ships with perl). Here is a patch against 0.09_02 that addresses both issues and passes both tests on VMS + perl 5.8.1 and Solaris + perl 5.6.1: Thanks, applied verbatim (except that I moved the system() call into a my_system() subroutine in case I want to use it again later). -Ken
Re: ExtUtils::CBuilder on VMS (was Re: Phalanxing MakeMaker)
On Mar 12, 2005, at 7:18 PM, Ken Williams wrote: Excellent. I just have one question, then, about the following line: my @lddlflags = $args{lddl} ? ($cf-{lddlflags}.=$out) : (/exe=$out); What is the original value of $cf-{lddlflags} such that it makes sense to just append =$out to it? Scratch that, I think I see how it works. Care to try the 0.09_02 revision, hitting CPAN now? -Ken
Re: ExtUtils::CBuilder on VMS (was Re: Phalanxing MakeMaker)
Any takers on this? Ping? -Ken On Mar 6, 2005, at 9:50 AM, Ken Williams wrote: On Mar 4, 2005, at 6:39 PM, [EMAIL PROTECTED] wrote: Yes the -foo switches have caused trouble. [snip] Er, sorry at this time I do not have a patch :-) Care to try 0.09_01, which is now hitting CPAN? I've split out the generation of command-line switches so it can easily be overridden for VMS. So compile() might work now. link() and friends haven't been touched, though. -Ken
ExtUtils::CBuilder on VMS (was Re: Phalanxing MakeMaker)
On Fri, Mar 04, 2005 at 04:42:38PM -0600, Ken Williams wrote: All the cpantesters reports are pretty peachy, but there really aren't many exotic platforms there: http://testers.cpan.org/show/ExtUtils-CBuilder.html#ExtUtils-CBuilder -0.09 If it doesn't work on all platforms, those are bugs that need to be fixed. Here's my attempt at running mms test on VMS with 5.8.0. $ perl -Iblib/lib t/01-basic.t 1..11 ok 1 ok 2 CC/DECC -Iperl_root:[lib.VMS_AXP.5_8_0.CORE] -c /Include=[]/Standard=Relaxed_ANS I/Prefix=All/Obj=.obj /NOANSI_ALIAS/float=ieee/ieee=denorm_results /NoList -o US ER1:[SCHWERN]compilet.obj USER1:[SCHWERN]compilet.c %DCL-W-MAXPARM, too many parameters - reenter command with fewer parameters %DCL-W-MAXPARM, too many parameters - reenter command with fewer parameters error building USER1:[SCHWERN]compilet.obj from 'USER1:[SCHWERN]compilet.c' at b lib/lib/ExtUtils/CBuilder/Base.pm line 65. not ok 3 # Failed test 3 in t/01-basic.t at line 14 ok 4 ok 5 CC/DECC -Iperl_root:[lib.VMS_AXP.5_8_0.CORE] -c /Include=[]/Standard=Relaxed_ANS I/Prefix=All/Obj=.obj /NOANSI_ALIAS/float=ieee/ieee=denorm_results /NoList -o [. t]compilet.obj [.t]compilet.c %DCL-W-MAXPARM, too many parameters - reenter command with fewer parameters %DCL-W-MAXPARM, too many parameters - reenter command with fewer parameters error building [.t]compilet.obj from '[.t]compilet.c' at blib/lib/ExtUtils/CBuil der/Base.pm line 65. %RMS-E-FNF, file not found $ perl -Iblib/lib t/02-link.t 1..5 ok 1 ok 2 CC/DECC -Iperl_root:[lib.VMS_AXP.5_8_0.CORE] -c /Include=[]/Standard=Relaxed_ANS I/Prefix=All/Obj=.obj /NOANSI_ALIAS/float=ieee/ieee=denorm_results /NoList -o [. t]compilet.obj [.t]compilet.c %DCL-W-MAXPARM, too many parameters - reenter command with fewer parameters %DCL-W-MAXPARM, too many parameters - reenter command with fewer parameters error building [.t]compilet.obj from '[.t]compilet.c' at blib/lib/ExtUtils/CBuil der/Base.pm line 65. %RMS-E-FNF, file not found There's some assumptions there which aren't going to fly. Pretty much anything of the -foo form is likely to be wrong on VMS. Looks like most of ExtUtils::CBuilder::Base-compile() will have to be overridden. You can probably figure it out from ExtUtils::MM_VMS though it won't be pretty. And at this point I kick this over to the vmsperl folks.