On Fri, 2007-04-27 at 11:46 +0200, Alicia Amadoz wrote:
> Ok, I would try it but where should I write that code? maybe at the
> startup.perl file?
> 
> Thanks,
> Alicia

No, you need to find the Bio::DB::WedbDBSeqI module and edit that.

> 
> > On Fri, 2007-04-27 at 10:19 +0200, Clinton Gormley wrote:
> > > On Fri, 2007-04-27 at 09:43 +0200, Alicia Amadoz wrote:
> > > > Hi,
> > > > 
> > > 
> > > > [error] \n------------- EXCEPTION: Bio::Root::Exception
> > > > -------------\nMSG: Can't locate Apache/SubProcess.pm in @INC (....)\n
> > > > BEGIN failed--compilation aborted at (eval 47) line
> > > > 2.\n\nApache::SubProcess module required for running under
> > > > mod_perl\nSTACK: Error::throw\nSTACK: Bio::Root::Root::throw ...
> > > 
> > > The error is that it can't locate Apache::SubProcess, but you're using
> > > mod_perl 2, which uses Apache2::Subprocess.
> > > 
> > > 
> > > Clint
> > 
> > 
> > I'm not familiar with bioperl, but doing a code search, it seems that
> > Bio::DB::WebDBSeql has just (v 1.5.2) added the dependency on
> > Apache::SubProcess, but purely as a way of cleaning up the environment
> > after forking:
> > 
> > http://doc.bioperl.org/releases/bioperl-1.5.2/Bio/DB/WebDBSeqI.html#CODE25
> > 
> > ----------------------------------------------------------------
> > sub _open_pipe {
> >   my ($self) = @_;
> > 
> >   if($ENV{MOD_PERL} and ! our $loaded_apache_sp) {
> >     eval 'use Apache::SubProcess';
> >     $@ and $self->throw("[EMAIL PROTECTED]::SubProcess module required for
> running under mod_perl");
> >     $loaded_apache_sp = 1;
> >   }
> > 
> >   my $pipe = IO::Pipe->new();
> > 
> >   $SIG{CHLD} = 'IGNORE';
> >   defined(my $pid = fork)
> >     or $self->throw("Couldn't fork: $!");
> > 
> >   unless($pid) {
> >     #CHILD
> >     $pipe->writer();
> > 
> >     #if we're running under mod_perl, clean up some things after this fork
> >     if ($ENV{MOD_PERL} and my $r = eval{Apache->request} ) {
> >       $r->cleanup_for_exec;
> >       #don't read or write the mod_perl parent's tied filehandles
> >       close STDIN; close STDOUT;
> >       setsid() or $self->throw('Could not detach from parent');
> >     }
> >   } else {
> >     #PARENT
> >     $pipe->reader();
> >   }
> >   return ( $pid, $pipe );
> > }
> > ----------------------------------------------------------------
> > 
> > 
> > In mod_perl 2, cleanup_for_exec is no longer required:
> >
> http://perl.apache.org/docs/2.0/user/porting/compat.html#C__r_E_gt_cleanup_for_exec_
> > 
> > So, you could probably just do this (warning : untested) :
> > ----------------------------------------------------------------
> > my $MP1 = $ENV{MOD_PERL} 
> >      && ! (exists $ENV{MOD_PERL_API_VERSION} and 
> >            $ENV{MOD_PERL_API_VERSION} >= 2);
> > 
> > sub _open_pipe {
> >   my ($self) = @_;
> > 
> >   if($MP1! our $loaded_apache_sp) {
> >     eval 'use Apache::SubProcess';
> >     $@ and $self->throw("[EMAIL PROTECTED]::SubProcess module required for
> running under mod_perl");
> >     $loaded_apache_sp = 1;
> >   }
> > 
> >   my $pipe = IO::Pipe->new();
> > 
> >   $SIG{CHLD} = 'IGNORE';
> >   defined(my $pid = fork)
> >     or $self->throw("Couldn't fork: $!");
> > 
> >   unless($pid) {
> >     #CHILD
> >     $pipe->writer();
> > 
> >     #if we're running under mod_perl, clean up some things after this fork
> >     if ($MP1 and my $r = eval{Apache->request} ) {
> >       $r->cleanup_for_exec;
> >       #don't read or write the mod_perl parent's tied filehandles
> >       close STDIN; close STDOUT;
> >       setsid() or $self->throw('Could not detach from parent');
> >     }
> >   } else {
> >     #PARENT
> >     $pipe->reader();
> >   }
> >   return ( $pid, $pipe );
> > }
> > 
> > 
> > 
> > 
> 
> 
> --
> ***********************************************
> Alicia Amadoz Navarro
> 
> Evolutionary Genetics Unit
> Cavanilles Institute for Biodiversity and
> Evolutionary Biology
> University of Valencia
> Apartado Oficial 22085
> E-46071 Valencia SPAIN
> Phone: (+34) 96 354 3687
> FAX: (+34) 96 354 3733
> e-mail: [EMAIL PROTECTED]
> http://www.uv.es/~biodiver/v/index.htm
> 
> ***********************************************
> NOTE! For shipments by EXPRESS COURIER use "Instituto
> Cavanilles de Biodiversidad y Biología Evolutiva,
> Polígono de la Coma s/n, 46980 Paterna (Valencia),
> Spain" instead of P.O. Box no. and Post Code/City above.
> 
> 
> 

Reply via email to