Re: VMS, configure.com and nonxs_ext

Nicholas Clark <[email protected]>
Newsgroups gmane.comp.lang.perl.ports.vms,gmane.comp.lang.perl.perl5.porters
Message-ID <[email protected]>
On Mon, Sep 07, 2009 at 05:15:51PM -0500, Craig A. Berry wrote:
> 
> On Sep 7, 2009, at 4:46 PM, Nicholas Clark wrote:
> 
> >On Mon, Sep 07, 2009 at 08:55:29PM +0100, Nicholas Clark wrote:
> >>This might be rather a big favour request.
> >
> >This might be easier than I first thought
> 
> It occurred to me we ought to revisit this after getting vms/ext into  
> ext.  I don't think it will be huge, but it does involve grokking some  
> DCL that has to work rather hard to do what it's doing.  I'll take a  
> look.
> >
> >>Would it be possible to augment the configure.com code that finds  
> >>extensions
> >>to correctly partition "nonxs_extensions" from "known_extensions"?
> >>(being the rather bonkers way that Configure partitions XS and non-XS
> >>extensions)
> >>
> 
> There's also dynamic_ext, right?  Shouldn't dynamic_ext plus  
> nonxs_extensions equal known_extensions?

Well, probably it should, but what actually happens is:

$ cat extensions.pl
#!perl -w
use strict;
use Config;

printf "%-24s", 'extensions';

my @types = qw(static_ext dynamic_ext nonxs_ext known_extensions);
my %lookup;
my %short;
foreach (@types) {
    my $short = $_;
    $short =~ s/_.*//;
    $short{$_} = $short;

    printf "%-8s", $short;
    $lookup{$_} = {map {$_, 1} split/ /, $Config{$_}};
}
print "\n\n";

foreach my $ext (sort split / /, $Config{extensions}) {
    printf "%-24s", $ext;
    foreach (@types) {
        printf "%-8s", $lookup{$_}{$ext} ? $short{$_} : '';
    }
    print "\n";
}

__END__
$ ./perl -Ilib extensions.pl 
extensions              static  dynamic nonxs   known   

Archive/Extract                         nonxs           
Archive/Tar                             nonxs           
Attribute/Handlers                      nonxs           
B                               dynamic         known   
B/Debug                                 nonxs           
B/Deparse                               nonxs           
B/Lint                                  nonxs           
CGI                                     nonxs           
CPANPLUS                                nonxs           
CPANPLUS/Dist/Build                     nonxs           
Compress/Raw/Bzip2              dynamic         known   
Compress/Raw/Zlib               dynamic         known   
Cwd                             dynamic         known   
DB_File                         dynamic         known   
Data/Dumper                     dynamic         known   
Devel/DProf                     dynamic         known   
Devel/PPPort                    dynamic         known   
Devel/Peek                      dynamic         known   
Devel/SelfStubber                       nonxs           
Digest                                  nonxs           
Digest/MD5                      dynamic         known   
Digest/SHA                      dynamic         known   
Encode                          dynamic         known   
Errno                                   nonxs           
Fcntl                           dynamic         known   
File/Fetch                              nonxs           
File/Glob                       dynamic         known   
FileCache                               nonxs           
Filter/Simple                           nonxs           
Filter/Util/Call                dynamic         known   
Hash/Util                       dynamic         known   
Hash/Util/FieldHash             dynamic         known   
I18N/LangTags                           nonxs           
I18N/Langinfo                   dynamic         known   
IO                              dynamic         known   
IO/Compress                     dynamic         known   
IO/Zlib                                 nonxs           
IPC/Cmd                                 nonxs           
IPC/Open2                               nonxs           
IPC/Open3                               nonxs           
IPC/SysV                        dynamic         known   
List/Util                       dynamic         known   
Log/Message                             nonxs           
Log/Message/Simple                      nonxs           
MIME/Base64                     dynamic         known   
Math/BigInt/FastCalc            dynamic         known   
Module/CoreList                         nonxs           
Module/Load                             nonxs           
Module/Load/Conditional                 nonxs           
Module/Loaded                           nonxs           
Module/Pluggable                        nonxs           
Net/Ping                                nonxs           
Object/Accessor                         nonxs           
Opcode                          dynamic         known   
POSIX                           dynamic         known   
Package/Constants                       nonxs           
Params/Check                            nonxs           
Parse/CPAN/Meta                         nonxs           
PerlIO/encoding                 dynamic         known   
PerlIO/scalar                   dynamic         known   
PerlIO/via                      dynamic         known   
Pod/Plainer                             nonxs           
SDBM_File                       dynamic         known   
Safe                                    nonxs           
SelfLoader                              nonxs           
Shell                                   nonxs           
Socket                          dynamic         known   
Storable                        dynamic         known   
Switch                                  nonxs           
Sys/Hostname                    dynamic         known   
Sys/Syslog                      dynamic         known   
Term/ANSIColor                          nonxs           
Term/Cap                                nonxs           
Term/UI                                 nonxs           
Test/Harness                            nonxs           
Text/Balanced                           nonxs           
Text/Soundex                    dynamic         known   
Thread/Queue                            nonxs           
Thread/Semaphore                        nonxs           
Tie/File                                nonxs           
Tie/Memoize                             nonxs           
Time/HiRes                      dynamic         known   
Time/Piece                      dynamic         known   
Unicode/Normalize               dynamic         known   
XS/APItest                      dynamic         known   
XS/Typemap                      dynamic         known   
attributes                      dynamic         known   
autodie                                 nonxs           
autouse                                 nonxs           
base                                    nonxs           
mro                             dynamic         known   
re                              dynamic         known   
threads                         dynamic         known   
threads/shared                  dynamic         known   


"extensions" is everything.

"known_extensions" = "static_ext" + "dynamic_ext"
"extensions" = "nonxs_ext" + "known_extensions"


which isn't logical, but I suspect is due to something historical.

Nicholas Clark
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.