On Thu, Feb 21, 2002 at 01:26:42AM -0600, Ken Williams wrote:
> 
> On Wednesday, February 20, 2002, at 03:03 PM, Michael G Schwern wrote:
> >Patch against the current CPAN alpha, please.  bleadperl is a little
> >behind.  Send the patches to [EMAIL PROTECTED] and I'll see them.
> >http://www.cpan.org/authors/id/M/MS/MSCHWERN/ExtUtils-
> >MakeMaker-5.49_01.tar.gz
> 
> Okey doke, here's the patch.  It's tested, too - much easier to test 
> when EU::MM is in its own tarball! =)

Yeah, what a coincidence.


Just a pong to let you know I've seen the patch and it didn't make it
into 5.50 (I needed to get a version out to replace the busted 5.49).
It will be in next version.


> =======================================================================
> --- lib/ExtUtils/Manifest-old.pm      Fri Jan 18 01:22:37 2002
> +++ lib/ExtUtils/Manifest.pm  Thu Feb 21 01:18:18 2002
> @@ -10,7 +10,7 @@
> 
>  our ($VERSION,@ISA,@EXPORT_OK,
>           $Is_MacOS,$Is_VMS,
> -         $Debug,$Verbose,$Quiet,$MANIFEST,$found,$DEFAULT_MSKIP);
> +         $Debug,$Verbose,$Quiet,$MANIFEST,$DEFAULT_MSKIP);
> 
>  $VERSION = 1.35_00;
>  @ISA=('Exporter');
> @@ -40,14 +40,19 @@
>      local *M;
>      rename $MANIFEST, "$MANIFEST.bak" unless $manimiss;
>      open M, ">$MANIFEST" or die "Could not open $MANIFEST: $!";
> -    my $matches = _maniskip();
> +    my $skip = _maniskip();
>      my $found = manifind();
>      my($key,$val,$file,%all);
>      %all = (%$found, %$read);
>      $all{$MANIFEST} = ($Is_VMS ? "$MANIFEST\t\t" : '') . 'This list of 
> files'
>          if $manimiss; # add new MANIFEST to known file list
>      foreach $file (sort keys %all) {
> -     next if &$matches($file);
> +     if ($skip->($file)) {
> +         # Policy: only remove files if they're listed in MANIFEST.SKIP.
> +         # Don't remove files just because they don't exist.
> +         warn "Removed from $MANIFEST: $file\n" if $Verbose and exists 
> $read->{$file};
> +         next;
> +     }
>       if ($Verbose){
>           warn "Added to $MANIFEST: $file\n" unless exists $read->{$file};
>       }
> @@ -63,15 +68,27 @@
>  }
> 
>  sub manifind {
> -    local $found = {};
> -    find(sub {return if -d $_;
> -           (my $name = $File::Find::name) =~ s|^\./||;
> -           $name =~ s/^:([^:]+)$/$1/ if $Is_MacOS;
> -           warn "Debug: diskfile $name\n" if $Debug;
> -           $name =~ s#(.*)\.$#\L$1# if $Is_VMS;
> -           $name = uc($name) if /^MANIFEST/i && $Is_VMS;
> -           $found->{$name} = "";}, $Is_MacOS ? ":" : ".");
> -    $found;
> +    my $p = shift || {};
> +    my $skip = _maniskip(warn => $p->{warn_on_skip});
> +    my $found = {};
> +
> +    my $wanted = sub {
> +     return if $skip->($_) or -d $_;
> +     
> +     (my $name = $File::Find::name) =~ s|^\./||;
> +     $name =~ s/^:([^:]+)$/$1/ if $Is_MacOS;
> +     warn "Debug: diskfile $name\n" if $Debug;
> +     $name =~ s#(.*)\.$#\L$1# if $Is_VMS;
> +     $name = uc($name) if /^MANIFEST/i && $Is_VMS;
> +     $found->{$name} = "";
> +    };
> +
> +    find({wanted => $wanted,
> +       preprocess => sub {grep {!$skip->($_)} @_},
> +      },
> +      $Is_MacOS ? ":" : ".");
> +
> +    return $found;
>  }
> 
>  sub fullcheck {
> @@ -93,7 +110,8 @@
>  sub _manicheck {
>      my($p) = @_;
>      my $read = maniread();
> -    my $found = manifind();
> +    my $found = manifind($p);
> +
>      my $file;
>      my $dosnames=(defined(&Dos::UseLFN) && Dos::UseLFN()==0);
>      my(@missfile,@missentry);
> @@ -170,12 +188,11 @@
> 
>  # returns an anonymous sub that decides if an argument matches
>  sub _maniskip {
> -    my ($mfile) = @_;
> -    my $matches = sub {0};
> +    my (%args) = @_;
>      my @skip ;
> -    $mfile ||= "$MANIFEST.SKIP";
> +    my $mfile = "$MANIFEST.SKIP";
>      local *M;
> -    open M, $mfile or open M, $DEFAULT_MSKIP or return $matches;
> +    open M, $mfile or open M, $DEFAULT_MSKIP or return(sub {0});
>      while (<M>){
>       chomp;
>       next if /^#/;
> @@ -183,14 +200,16 @@
>       push @skip, _macify($_);
>      }
>      close M;
> -    my $opts = $Is_VMS ? 'oi ' : 'o ';
> -    my $sub = "\$matches = "
> -     . "sub { my(\$arg)=\@_; return 1 if "
> -     . join (" || ",  (map {s!/!\\/!g; "\$arg =~ m/$_/$opts"} @skip), 0)
> -     . " }";
> -    eval $sub;
> -    print "Debug: $sub\n" if $Debug;
> -    $matches;
> +    my $opts = $Is_VMS ? 'oi' : 'o';
> +
> +    # Make sure each entry is isolated in its own parentheses, in case
> +    # any of them contain alternations
> +    my $regex = join '|', map "(?:$_)", @skip;
> +
> +    return ($args{warn}
> +         ? sub { $_[0] =~ qr{(?$opts)$regex} && warn "Skipping $_[0]\n" }
> +         : sub { $_[0] =~ qr{(?$opts)$regex} }
> +        );
>  }
> 
>  sub manicopy {
> =======================================================================
> 
> 
> 
> BTW, you've got MANIFEST.SKIP in the MANIFEST for that tarball, it 
> should probably be removed?
> 
>  -Ken
> 
> 
> 

-- 

Michael G. Schwern   <[EMAIL PROTECTED]>    http://www.pobox.com/~schwern/
Perl Quality Assurance      <[EMAIL PROTECTED]>         Kwalitee Is Job One
Lesbian lovers
return to fourth grade slogans
EAT SOME PASTE, they cry

sobbing lesbian
excluded from the party
allergic to wheat
        -- mjd

Reply via email to