Perl-Repository-APC

 view release on metacpan or  search on metacpan

lib/Perl/Repository/APC.pm  view on Meta::CPAN

                             tarfile => "perl-5.8.1.tar.gz",
                            },
                 "5.8.2" => {
                             tarfile => "perl-5.8.2.tar.gz",
                            },
                 "5.8.3" => {
                             tarfile => "perl-5.8.3.tar.gz",
                            },
                 "5.8.4" => {
                             tarfile => "perl-5.8.4.tar.gz",
                            },
                 "5.8.5" => {
                             tarfile => "perl-5.8.5.tar.gz",
                            },
                 "5.8.6" => {
                             tarfile => "perl-5.8.6.tar.gz",
                            },
                 "5.8.7" => {
                             tarfile => "perl-5.8.7.tar.gz",
                            },
                 "5.8.8" => {
                             tarfile => "perl-5.8.8.tar.gz",
                            },
                 "5.9.0" => {
                             tarfile => "perl-5.9.0.tar.gz",
                            },
                 "5.9.1" => {
                             tarfile => "perl-5.9.1.tar.gz",
                            },
                 "5.9.2" => {
                             tarfile => "perl-5.9.2.tar.gz",
                            },
                 "5.9.3" => {
                             tarfile => "perl-5.9.3.tar.gz",
                            },
                 "5.9.4" => {
                             tarfile => "perl-5.9.4.tar.gz",
                            },
                 "5.9.5" => {
                             tarfile => "perl-5.9.5.tar.gz",
                            },
                 "5.10.0" => {
                              tarfile => "perl-5.10.0.tar.gz",
                             },
                );

sub new {
  unless (@_ == 2){
    require Carp;
    Carp::croak(sprintf "Not enough arguments for %s -> new ()\n", __PACKAGE__);
  }
  my $proto   =  shift;
  my $class   =  ref $proto || $proto;

  my $dir =  shift;
  my $self;

  $self->{DIR} = $dir;
  $self->{APC} = [_apc_struct($dir)];

  bless $self => $class;
}

sub apcdirs {
  my($self) = @_;
  @{$self->{APC}};
}

sub tarball {
  unless (@_ == 2){
    require Carp;
    Carp::croak(sprintf "Not enough arguments for %s -> tarball ()\n", __PACKAGE__);
  }
  my($self,$pver) = @_;
  unless ($pver){
    require Carp;
    Carp::croak(sprintf "No version argument for %s -> tarball ()\n", __PACKAGE__);
  }

  my $DIR = File::Spec->catdir($self->{DIR},$pver);
  my $dir;
  unless (opendir $dir, $DIR) {
    return $self->_from_additional_tarballs($pver);
  }
  my(@dirent) = grep !/RC|TRIAL/, grep /^perl.*\.tar\.gz$/, readdir $dir;
  closedir $dir;
  if (@dirent>1){
      die "\aALERT: (\@dirent > 1: @dirent) in $pver" ;
  } elsif (@dirent==0) {
      return $self->_from_additional_tarballs($pver);
  }
  $dirent[0];
}

sub _from_additional_tarballs {
  my($self,$pver) = @_;
  die "unsupported perl version '$pver'", unless exists $tarballs{$pver};
  my $tarball = $tarballs{$pver}{tarfile};
  my $cwd = Cwd::cwd();
  my $addltar = File::Spec->catfile
      (
       $self->{DIR},
       "additional_tarballs",
       $tarball,
      );
  if (-f $addltar){
    return $addltar;
  } else {
    die "tarball '$tarball' not found. Have you mirrored the additional_tarballs directory?\n";
  }
}

sub patches {
  my($self,$ver) = @_;
  unless ($ver) {
    require Carp;
    Carp::confess("patches called without ver[$ver]");
  }
  my @res;
  for my $apcdir (@{$self->{APC}}) {
    my $pver = $apcdir->{perl};



( run in 0.597 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )