Bio-GMOD

 view release on metacpan or  search on metacpan

GMOD/Admin/Update/WormBase.pm  view on Meta::CPAN

package Bio::GMOD::Admin::Update::WormBase;

use strict;
use vars qw/@ISA/;
use Bio::GMOD::Admin::Update;
#use Bio::GMOD::Admin::Monitor::httpd;
#use Bio::GMOD::Admin::Monitor::acedb;
#use Bio::GMOD::Admin::Monitor::mysqld;
#use Bio::GMOD::Admin::Monitor::blat;
use Bio::GMOD::Util::Rearrange;
use File::Path 'rmtree';


@ISA = qw/Bio::GMOD::Admin::Update/;

################################################
#  WormBase-specific update methods
################################################
sub update {
  my ($self,@p) = @_;
  my $adaptor = $self->adaptor;
  $adaptor->parse_params(@p);

  my $version = $adaptor->version;
  my $rsync_module = $adaptor->rsync_module;

  $self->analyze_logs(-version => $version,
		      -site    => `hostname`);
  $self->prepare_tmp_dir();
  $self->fetch_acedb(-version        => $version);
  $self->fetch_elegans_gff(-version  => $version);
  $self->fetch_briggsae_gff(-version => $version);
  $self->fetch_blast_blat(-version   => $version);
  $self->rsync_software(-module       => $rsync_module,
                        -install_root => '/usr/local/wormbase/');
}

sub fetch_acedb {
  my ($self,@p) = @_;
  $self->logit(-msg      => 'Fetching and installing Acedb',
	       -emphasis => 1);

  my $adaptor = $self->adaptor;
  $adaptor->parse_params(@p);

  # Version to update to
  my $version = $adaptor->version;

  # Where to find the database tarballs.
  my $databases = $adaptor->database_repository;

  # The acedb tarball
  my $acedb  = sprintf($adaptor->acedb_tarball,$version);

  # Local and remote paths
  my $remote_path = "$databases/$version/$acedb";
  my $local_path  = $adaptor->tmp_path . "/$version";

  # Make sure there is enough space first
  my $disk_space = $adaptor->acedb_disk_space;
  $self->check_disk_space(-path      => $local_path,
			  -required  => $disk_space,
			  -component => 'acedb');

  $self->mirror(-remote_path => $remote_path,
		-local_path  => $local_path);

  my $acedb_path = $adaptor->acedb_path;

  unless ($adaptor->dl_only) {
    $self->logit(-msg => "Unpacking and installing $acedb");
    chdir($acedb_path);
    system("gunzip -c $local_path/$acedb | tar -x --no-same-owner -f -");
    unlink($acedb_path . '/elegans');
    symlink("elegans_$version",'elegans');

    # Adjust permissions
    my $command = <<END;
chown -R acedb $acedb_path/elegans*



( run in 0.631 second using v1.01-cache-2.11-cpan-98e64b0badf )