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

Reply via email to