[Phylobase-devl] Compilation woes

Brian O'Meara bcomeara at nescent.org
Mon Aug 4 05:26:46 CEST 2008

Thanks for looking into this, Steve and Ben. If it is just a matter of  
old files not being rewritten properly, this should be able to be  
taken care of in the Makefile (effectively, make clean first). I'll  
check it out some more.

For my  part, I think keeping the NCL in phylobase makes a lot of  
sense. For casual users, a key point of interest in phylobase seems to  
be the ability to read data from Nexus files, so keeping NCL in it  
will make it more popular. This might translate into getting more  
developers to adopt it. Also, Ben's point about removing the NCL from  
phylobase decreasing the urgency of doing something about it is a good  
one -- knowing how I operate, it's more likely that I'd fix NCL faster  
as part of a development community where NCL failures might hold up  
development than if I were developing it separately. Of course, if NCL  
repair is still too slow even with this encouragement, it'd argue for  
splitting the code.

For getting trees into phylobase from Nexus files, the tree files are  
actually first processed with the NCL code, then strings are passed  
from that to the read.nexustreestring function. This should  
theoretically allow somewhat more robust handling of Nexus tree files  
than just reading them directly through ape-derived functions, but I  
don't remember showing this with example files that will work with NCL  
but not with ape, and so I agree with Steve that ape-based tree  
reading functions could be used instead of NCL without much loss of  
functionality. Another issue is that ape's read.nexus function just  
gets DNA-formatted characters from a Nexus file: the readwithNCL code  
can read DNA, other molecular characters, continuous characters, and  
discrete characters (as factors, with options for dealing with missing  
states). Recoding ape's function to deal with these character types  
might be more of a pain than getting NCL to compile properly on Linux.  
On the other hand, NCL inputs are converted to phylo4 and phylo4d  
objects using those objects' constructors,  so the functions that read  
Nexus files with the NCL will still work in an S4-appropriate way even  
if put into a separate package.

While we're talking about phylobase future development, Marguerite and  
I ran into a few functions that students would have liked to have in  
phylobase while coding: pre- and post-order tree traversal, a function  
to test a node to see whether it's the root, and an accessor to return  
the length of an edge given a node name or number. Overall, the  
students seemed to like phylobase, which is certainly encouraging.

Thanks again,

On Aug 3, 2008, at 4:53 PM, Ben Bolker wrote:

>   Hmmm.  I didn't have trouble compiling on x86_32, presumably
> that's more likely to be by accident -- that I happen to have
> a clean copy -- than a 32/64 bit difference -- but I'm not going
> to spend a lot of time trying to reproduce the error. (Steve,
> can you make it happen reproducibly?)
>  I'd say it's Brian's call what to do about NCL.  I'm a little
> bit worried about taking it out, just because it will
> decrease the urgency of doing anything about it -- but on the
> other hand, it seems more or less on Brian's shoulders to fix it.
> It would be nice if we could come up with a repeatable way of
> making the errors happen -- I know from experience how frustrating
> it is to try to debug something on a remote build server that only
> builds once a day ... (it would be neat if the R-forge guys could
> set up a build-on-demand server analogous to win-builder.r- 
> project.org).
> The other question would be how much of our potential user
> base (ha!) is interested in the capabilities that NCL offers
> beyond the ape stuff ...
>  Ben
> Steve Kembel wrote:
>> Hi Brian,
>> I just tried to build phylobase 0.3-1 on my Linux x86_64 box and  
>> got similar errors to R-Forge (warnings about out of scope  
>> declarations and then some fatal errors in the vignettes). I tried  
>> a bunch of different things, and eventually got the package to  
>> build by simply checking out a fresh copy of the code from the  
>> repository. Logs from the successful build are attached. The cruft  
>> that accumulates as the NCL C++ code is compiled multiple times in  
>> a local directory seems to cause mysterious build errors. My guess  
>> is that this is what is happening on R-Forge. I wonder if there's a  
>> way to make sure the package is being built from a clean copy of  
>> the svn code every time on R-Forge?
>> I know that an awful lot of work went into getting the NCL code  
>> working with phylobase, but the ongoing issues with getting  
>> phylobase to compile and install are a bit of a show-stopper for  
>> the package. Could I suggest that we move the NCL-related code into  
>> its own package for now, until we sort out why the package isn't  
>> building on R-Forge? As far as I can tell, the NCL code isn't  
>> actually being used to read trees (we're already using Brian's  
>> modified version of the ape read.nexus R code to read Nexus trees),  
>> the NCL is just being used to read character data from nexus files  
>> in the NexusToPhylo4D function, right? If we split the NCL code off  
>> into its own package, we'd hopefully eliminate the problems with  
>> compiling and installing phylobase. It might also make it easier to  
>> troubleshoot compiling the NCL code. It would however require  
>> writing a new function or modifying ape's read.nexus.data function  
>> if we want to be able to seamlessly read a tree + data into a  
>> phylo4d object from a Nexus file in phylobase.
>> What do you think of this idea?
>> Cheers,
>> Steve
>> ------------------------------------------------------------------------
>> _______________________________________________
>> Phylobase-devl mailing list
>> Phylobase-devl at lists.r-forge.r-project.org
>> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/phylobase-devl

More information about the Phylobase-devl mailing list