Chris Fields cjfields at uiuc.edu
Fri Jan 13 15:31:32 EST 2006

Sorry about that.  I retried 'perl -e "require Error;' and various
incarnations of it.  Without Error.pm:

C:\Perl\test\bioperl-db>perl -e "require Error;"
Can't locate Error.pm in @INC (@INC contains: C:\Perl C:/Perl/lib
C:/Perl/site/lib .) at -e line 1.

This is the interesting bit; I then installed Error.pm.  I tried out the
following:

C:\Perl\test\bioperl-db>perl -e "require Error; Error::throw;"

C:\Perl\test\bioperl-db>perl -e "require Error; Error::throw();"
Can't call method "new" on an undefined value at C:/Perl/site/lib/Error.pm
line 148.

It ignored the first run (without parentheses).  Then I tried this:

C:\Perl\test\bioperl-db>perl -e "require Error; Errror::throw"

and got no errors.  Maybe it doesn't recognize Error::throw (or
Errror:throw) as a subroutine for some reason unless it has parentheses.
This makes me think something else is going on.

Christopher Fields
Postdoctoral Researcher - Switzer Lab
Dept. of Biochemistry
University of Illinois Urbana-Champaign
> -----Original Message-----
> From: drycafe at gmail.com [mailto:drycafe at gmail.com] On Behalf Of Hilmar
> Lapp
> Sent: Friday, January 13, 2006 1:52 PM
> To: Chris Fields
> Cc: Steve Chervitz; bioperl-l at portal.open-bio.org
> Subject: Re: [Bioperl-l] error running load_seqdatabase.pl
>
> On 1/13/06, Chris Fields <cjfields at uiuc.edu> wrote:
> > [...]
> > *  Running the example scripts (exceptions[1-4].pl) with or w/o Error.pm
> > showed no difference (I checked with diff).
>
> Given the below you probably failed to uninstall Error.pm, or not
> installing it in the first place doesn't matter because it's there
>
> > *  Changing "throw \$class" to "Error::throw \$class" in Root.pm didn't do
> > anything, which is strange (I did this with and w/o Error.pm installed).
> I
> > thought at this point, that Activestate may have Error.pm as part of
> their
> > core modules, but it isn't included anywhere in the Perl directory tree
> or
> > under PERL5LIB.  It also isn't listed as CORE in their modules list
> > (http://ppm.activestate.com/BuildStatus/5.8-E.html); the core modules
> are
> > usually under '/lib' instead of '/site/lib'.  So why would
> "Error::throw"
> > even work?  I also tried 'perl -e "require Error" and didn't get errors,
> so
> > it has to be around somewhere.
>
> Right. I usually do
>
>      \$ perl -MYet::Another::Module
>
> to convince myself that Yes::Another::Module really is not accessible
> to the interpreter. And if I do that with Error on my OSX box I do
> receive an error about perl not finding the Error module anywhere.
>
> > *  Even stranger, when changing "throw \$class" to "Error::throw \$class"
> in
> > Root.pm, load_seqdatabase.pl works fine, just like when "throw \$class"
> is
> > changed to "throw \$class,".  Oi!!
>
>
> Now, I can't imagine that using Error::throw \$class <whatever> would
> not die immediately if Error.pm is not installed. You can check that
> quickly by mistyping the module name (like Errror::throw). So unless
> there's some deep magic going on then using Error::throw instead of
> just throw() is not an option I'm afraid.
>
> I guess the solution needs to be adding the comma. I can't imagine why
> this would break on non-Windows systems, but obviously some testing is
> in order.
>
>    -hilmar
>
> > *  Changing load_seqdatabase.pl to include the line "INIT {
> > \$DONT_USE_ERROR=1; }" also didn't do anything; only changes to Root.pm
> > a difference.
> >
> > Lesson: Windows is flaky.  I think that much of this behavior is just
> > ActivePerl-specific, which may be why it hasn't been seen elsewhere.  I
> > don't know much about ActivePerl and exception handling, so I may delve
> into
> > it a bit more to see if there is something else there.  I also dropped
> > Activestate an email asking about Error.pm and their core distribution.
> >
> > So, the question is, should Root.pm be changed in bioperl-live?
> Obviously
> > this would need to be well tested out before committing any changes.  I
> > could try it out on Mac OS X.
> >
> > Christopher Fields
> > Postdoctoral Researcher - Switzer Lab
> > Dept. of Biochemistry
> > University of Illinois Urbana-Champaign
> >
> > > -----Original Message-----
> > > From: bioperl-l-bounces at portal.open-bio.org [mailto:bioperl-l-
> > > bounces at portal.open-bio.org] On Behalf Of Steve Chervitz
> > > Sent: Friday, January 13, 2006 4:26 AM
> > > To: Hilmar Lapp
> > > Cc: Chris Fields; bioperl-l at portal.open-bio.org; Steve Chervitz
> > > Subject: Re: [Bioperl-l] error running load_seqdatabase.pl
> > >
> > > looks like the trouble is when Bio::Root::Root::throw() tries to call
> > > Error::throw(). Perhaps there is some windows-specific problem with
> > > Error.pm? Can't say I've seen this before since I don't use perl on
> > > windows.
> > >
> > > Some things to try, in this order:
> > >
> > > * Verify that Error.pm is installed for perl on your system.
> > > * Try running t/Exception.t and
> > > the examples/root/exceptions[1-4].pl scripts and see if they
> > > produce the expected behavior.
> > > * Try changing the 'throw \$class ...' statements in Root.pm to
> > > 'Error::throw \$class ...'
> > > * If Error.pm seems to be installed but isn't working right, either
> > > uninstall it or get in the habit of putting this line in your main
> > > scripts: INIT { \$DONT_USE_ERROR=1; }
> > >
> > > Steve
> > >
> > > On Wed, 11 Jan 2006, Hilmar Lapp wrote:
> > >
> > > > Date: Wed, 11 Jan 2006 15:12:45 -0800
> > > > From: Hilmar Lapp <hlapp at gmx.net>
> > > > To: Chris Fields <cjfields at uiuc.edu>,
> > > >      Steve Chervitz <Steve_Chervitz at affymetrix.com>
> > > > Cc: bioperl-l at portal.open-bio.org
> > > > Subject: Re: [Bioperl-l] error running load_seqdatabase.pl
> > > >
> > > > Interesting. That posting didn't receive much attention did it. So
> he
> > > states:
> > > >
> > > > <quote>
> > > > The script failed on throw() in loading Bio/Root/Root.pm on Windows.
> > > > The problem lines are those "throw \$class (...".   After I put comma
> > > > after \$class as "throw \$class, (...", the BioSQL tests and load
> scripts
> > > > are succeeded
> > > > </quote>
> > > >
> > > > Can anyone of those who wrote the Root exception and warning code
> > > > comment? Maybe Steve?
> > > >
> > > >    -hilmar
> > > >
> > > > On 1/11/06, Chris Fields <cjfields at uiuc.edu> wrote:
> > > > > Hilmar,
> > > > >
> > > > > As an update on what's going on:
> > > > >
> > > > > I've run into a few problems with load_seqdatabase.pl and bioperl-
> db
> > > on
> > > > > cygwin which I'll try to hash through this week; I'll post if I
> can't
> > > figure
> > > > > it out soon.  It's not as buggy as trying to run it using the
> latest
> > > > > ActivePerl on WinXP, but it still has issues.
> > > > >
> > > > > I'm also looking through the ActiveState documentation for the
> latest
> > > > > version of perl they have (5.8.7), which I am running.  AFAIK,
> they
> > > enable
> > > > > dynamic loading when building.  I'll send them an email directly
> to
> > > see what
> > > > > they say.  There may be some Win32-specific way of configuring a
> > > script for
> > > > > dynamic loading of perl modules which isn't needed in other
> > > environments.
> > > > >
> > > > > There was also this previous email on bioperl-l:
> > > > >
> > > > > http://portal.open-bio.org/pipermail/bioperl-l/2005-
> May/018937.html
> > > > >
> > > > > Baohua Wang seemed to narrow it down somewhat, but I'm not sure if
> > > changing
> > > > > the modules is a solution until I figure out why he made the
> changes.
> > > They
> > > > > seem mainly geared towards getting load_seqdatabase to work with
> > > MsSQL, but
> > > > > if he got it to work on Windows, then he may be onto something.
> The
> > > > > modified Bio* modules can be found at:
> > > > >
> > > > > ftp://ftp.tc.cornell.edu/Outgoing/bwang/BioSQL-On-Windows
> > > > >
> > > > > I'll check them out to see if they work out and see what specific
> > > > > modifications he made (they're not detailed).
> > > > >
> > > > > Christopher Fields
> > > > > Postdoctoral Researcher - Switzer Lab
> > > > > Dept. of Biochemistry
> > > > > University of Illinois Urbana-Champaign
> > > > > -----Original Message-----
> > > > > From: bioperl-l-bounces at portal.open-bio.org
> > > > > [mailto:bioperl-l-bounces at portal.open-bio.org] On Behalf Of Chris
> > > Fields
> > > > > Sent: Friday, January 06, 2006 1:28 PM
> > > > > To: 'Hilmar Lapp'
> > > > > Cc: bioperl-l at portal.open-bio.org
> > > > > Subject: RE: [Bioperl-l] error running load_seqdatabase.pl
> > > > >
> > > > > I'll try installing bioperl-db using Cygwin.  I know that I can
> > > connect to
> > > > > the native Windows mysql database from inside cygwin, so perhaps
> this
> > > will
> > > > > do as a short term workaround.  I'll also try using a different
> native
> > > win32
> > > > > Perl version (maybe 5.6) and look into the dynamic loading issue.
> I
> > > know
> > > > > that the AS Perl has given errors like this before and not had
> > > problems (I
> > > > > think it was also cranky with older versions bioperl), but this
> one is
> > > > > pretty serious.
> > > > >
> > > > > Christopher Fields
> > > > > Postdoctoral Researcher - Switzer Lab
> > > > > Dept. of Biochemistry
> > > > > University of Illinois Urbana-Champaign
> > > > > -----Original Message-----
> > > > > From: Hilmar Lapp [mailto:hlapp at gmx.net]
> > > > > Sent: Friday, January 06, 2006 12:02 PM
> > > > > To: Chris Fields
> > > > > Cc: bioperl-l at portal.open-bio.org
> > > > > Subject: Re: [Bioperl-l] error running load_seqdatabase.pl
> > > > >
> > > > >
> > > > > On Jan 6, 2006, at 9:20 AM, Chris Fields wrote:
> > > > >
> > > > > > Hilmar,
> > > > > >
> > > > > > Did this ever get resolved?  I tried to reinstall a biosql
> database
> > > > > > using
> > > > > > bioperl-db and got the same problems.  I'll list out everything
> I
> > > ran
> > > > > > into
> > > > > > and what I pan on trying, as it's been a long time since I've
> tried
> > > > > > this.
> > > > > >
> > > > > > Currently, I'm using ActiveState Perl 5.8.7.813 on WinXP and
> MySQL
> > > > > > 4.1.14.
> > > > > > Using nmake and installing worked fine.  Loading the biosql
> schema
> > > and
> manually
> > > > > > untar the
> > > > > > taxonomy archive so load_ncbi_taxonomy.pl could find the files
> > > (stupid
> > > > > > windows).  However, this is what happens when using
> > > > > > load_seqdatabase.pl:
> > > > > >
> > > > > > C:\Perl\Scripts>load_seqdatabase.pl -dbname dihydroorotase -
> dbuser
> > > root
> > > > > > NP_249092.gpt
> > > > > > Undefined subroutine &Bio::Root::Root::debug called at
> > > > > > C:/Perl/site/lib/Bio/DB/BioSQL/BasePersistenceAdaptor.pm line
> 1537,
> > > > > > <GEN0>
> > > > > > line 65.
> > > > > >
> > > > > > If I removed all args except the sequence file, it gives the
> same
> > > > > > response,
> > > > > > which means it happens before the connection is made to the
> > > database:
> > > > > >
> > > > >
> > > > > This happens indeed before a connection is made because it happens
> at
> > > > > the point it tries to dynamically load the BioSQL driver for the
> > > > > adaptor:
> > > > >
> > > > >         \$self->debug("attempting to load driver for adaptor class
> > > > > \$class\n");
> > > > >
> > > > > The BioSQL driver is loaded before the DBD driver is loaded.
> > > > >
> > > > > The module in which this happens (i.e., the persistence adaptor)
> has
> > > > > been loaded dynamically as well.
> > > > >
> > > > > Bio::Root::Root is in the 'use' statements, and the debug() method
> > > > > clearly exists. I'm at a loss as to why perl complains on certain
> > > > > Windows platforms. If somebody can tell me what, if anything, can
> be
> > > > > done to make this work on those platforms too I'll be glad to
> > > implement
> > > > > it.
> > > > >
> > > > > > [...]
> > > > > > Here's the error messages from that first test (warning it's
> very
> > > > > > messy):
> > > > > >
> > > > > > C:\Perl\bin\perl.exe "-MExtUtils::Command::MM" "-e"
> "test_harness(0,
> > > > > > 'bl
> > > > > > ib\lib', 'blib\arch')" t\01dbadaptor.t t\02species.t
> t\03simpleseq.t
> > > > > > t\04swiss.t t\05seqfeature.t t\06comment.t t\07dblink.t
> > > t\08genbank.t
> > > > > > t\09fuzzy2.t t\10ensembl.t t\11locuslink.t t\12ontology.t
> > > t\13remove.t
> > > > > > t\14query.t t\15cluster.t
> > > > > > t\01dbadaptor.....ok 1/19Subroutine new redefined at
> > > > > > [...]
> > > > > > Subroutine debug redefined at C:/Perl/site/lib/Bio\Root\Root.pm
> line
> > > > > > 356.
> > > > >
> > > > > So obviously it is there, right? So why doesn't perl see it a
> minute
> > > > > later?
> > > > >
> > > > > > [...]
> > > > > > I'll end with that.  At this moment, I can't see it working with
> the
> > > > > > current
> > > > > > setup.  I was using perl 5.8 with the old setup but I upgraded
> mysql
> > > > > > at some
> > > > > > point when working with gbrowse (I can't remember what the old
> > > version
> > > > > > was);
> > > > > > I'll try upgrading to the newest ActiveState version to see what
> > > > > > happens.
> > > > > > Could it be the MySQL version?
> > > > >
> > > > > I don't think it has anything to do with the MySQL version, or the
> DBD
> > > > > driver for that matter. Instead, it looks like on issue with
> dynamic
> > > > >
> > > > >         -hilmar
> > > > >
> > > > > >
> > > > > > Christopher Fields
> > > > > > Postdoctoral Researcher - Switzer Lab
> > > > > > Dept. of Biochemistry
> > > > > > University of Illinois Urbana-Champaign
> > > > > >
> > > > > > _______________________________________________
> > > > > > Bioperl-l mailing list
> > > > > > Bioperl-l at portal.open-bio.org
> > > > > > http://portal.open-bio.org/mailman/listinfo/bioperl-l
> > > > > >
> > > > > >
> > > > > --
> > > > > -------------------------------------------------------------
> > > > > Hilmar Lapp                            email: lapp at gnf.org
> > > > > GNF, San Diego, Ca. 92121              phone: +1-858-812-1757
> > > > > -------------------------------------------------------------
> > > > >
> > > > >
> > > > > _______________________________________________
> > > > > Bioperl-l mailing list
> > > > > Bioperl-l at portal.open-bio.org
> > > > > http://portal.open-bio.org/mailman/listinfo/bioperl-l
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > > ----------------------------------------------------------
> > > > : Hilmar Lapp -:- San Diego, CA -:- hlapp at gmx dot net :
> > > > ----------------------------------------------------------
> > > >
> > > > _______________________________________________
> > > > Bioperl-l mailing list
> > > > Bioperl-l at portal.open-bio.org
> > > > http://portal.open-bio.org/mailman/listinfo/bioperl-l
> > > >
> > >
> > > _______________________________________________
> > > Bioperl-l mailing list
> > > Bioperl-l at portal.open-bio.org
> > > http://portal.open-bio.org/mailman/listinfo/bioperl-l
> >
> >
>
>
> --
> ----------------------------------------------------------
> : Hilmar Lapp -:- San Diego, CA -:- hlapp at gmx dot net :
> ----------------------------------------------------------