[Phylobase-devl] New phylobase build approach using static libncl (Was: Rcpp and OS X compiliation)

François Michonneau francois.michonneau at gmail.com
Tue Jan 26 17:26:58 CET 2010


Phylobase should now work with NCL 2.1.09.

I did some quick tests yesterday and it looked like it was working
well. However, I must have done something wrong, because today it
doesn't work as well. The Nexus files we provide in phylobase
apparently can't be read and the following error message is returned:
Taxa block must be read before the Trees block can be read.

If I use the Nexus file example provided on the NCL webpage
(http://hydrodictyon.eeb.uconn.edu/ncl/#readerdata), then it works
well. All the trees are correctly being loaded as phylo4 objects.

I'll try to investigate more to understand the cause of the problem
and see what we can do.

Cheers,
  -- François



On Mon, Jan 25, 2010 at 22:08, Ben Bolker <bolker at ufl.edu> wrote:
>  How thorough are our tests of NCL?  Does updating to the most recent
> version and having it work "with almost no problem"?  I notice that all
> of tests/nexusdata.R is commented out (!), as is
> unitTests/runit.readNexus.R ... should we try to implement tests before
> we commit ?
>
>  Ben
>
> Dirk Eddelbuettel wrote:
>> Francois,
>>
>> Thanks also for your Ubuntu test and confirmation.
>> On 25 January 2010 at 13:19, François Michonneau wrote:
>> | Hi,
>> |
>> |   On my system, I was able to update to the most recent version of NCL
>> | within phylobase with almost no problem.
>> |
>> |   I can commit the changes, however, I was wondering if maybe we
>> | should first wait to see if it builds currently without problems on
>> | Mac platforms. The rationale being that if I commit the changes now it
>> | might be harder to determine if the problem comes from the changes
>> | that Drik et al implemented or from the newest version of NCL.
>>
>> The 'phylobase build-time / install-time' suggestion I made should be
>> independent of the version of NCL. It simply makes it easier for phylobase to
>> link to a single static library.
>>
>> Regards,  Dirk
>>
>>
>> |
>> |   Cheers,
>> |   -- François
>> |
>> |
>> | On Mon, Jan 25, 2010 at 12:33, Ben Bolker <bolker at ufl.edu> wrote:
>> | >  mea culpa.
>> | >  I took out some old leftover junk that was root-owned and it R CMD
>> | > checks OK.
>> | >
>> | >   is the next step to try replacing NCL with a newer version ... ?
>> | >
>> | >  cheers
>> | >   Ben
>> | >
>> | > François Michonneau wrote:
>> | >> I can build, install and start with no problem with Ubuntu 9.10 (Jaunty).
>> | >>   -- François
>> | >>
>> | >>
>> | >> On Mon, Jan 25, 2010 at 08:14, Dirk Eddelbuettel <edd at debian.org> wrote:
>> | >>> On 25 January 2010 at 08:00, Ben Bolker wrote:
>> | >>> |   I got only this far:
>> | >>> |
>> | >>> |   I haven't had a chance to check in to it yet & see what's going on.
>> | >>> | (Yes, it implies a permission problem, but I've never had anything like
>> | >>> | this ever happen before in building a package, so I wouldn't jump to the
>> | >>> | conclusion that my system is mis-configured.)
>> | >>> |
>> | >>> |   Ubuntu Intrepid Ibex: Linux bolker-lap2 2.6.27-16-generic #1 SMP Tue
>> | >>> | Dec 1 17:56:54 UTC 2009 i686 GNU/Linux
>> | >>> |
>> | >>> |
>> | >>> | configure: starting to build libncl.a in ncl
>> | >>> | ./configure: 465: cannot create configure.lineno: Permission denied
>> | >>> | configure: error: cannot create configure.lineno; rerun with a POSIX shell
>> | >>>
>> | >>> I think that is a hint. On Ubuntu /bin/sh is not bash, and we get bitten.
>> | >>> Why, I do not know. Something is still odd.  You did that in your home
>> | >>> directory and the files from the tarball look good otherwise?
>> | >>>
>> | >>> What I had done way back for cran2deb was similar in spirit --- a patch that
>> | >>> provides a Makefile that creates libncl.a.  It's more brute force. But if we
>> | >>> cannot run configure for ncl let's make an endrun around configure for ncl.
>> | >>>
>> | >>> Dirk
>> | >>>
>> | >>> | make  all-recursive
>> | >>> | make[1]: Entering directory `/home/ben/lib/R/pkgs/phylobase/pkg/src/ncl'
>> | >>> | Making all in ncl
>> | >>> | make[2]: Entering directory `/home/ben/lib/R/pkgs/phylobase/pkg/src/ncl/ncl'
>> | >>> | /bin/bash ../libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I.
>> | >>> | -I..     -O3 -ffast-math  -fPIC -MT nxsassumptionsblock.lo -MD -MP -MF
>> | >>> | .deps/nxsassumptionsblock.Tpo -c -o nxsassumptionsblock.lo
>> | >>> | nxsassumptionsblock.cpp
>> | >>> |  g++ -DHAVE_CONFIG_H -I. -I.. -O3 -ffast-math -fPIC -MT
>> | >>> | nxsassumptionsblock.lo -MD -MP -MF .deps/nxsassumptionsblock.Tpo -c
>> | >>> | nxsassumptionsblock.cpp  -fPIC -DPIC -o .libs/nxsassumptionsblock.o
>> | >>> | nxsassumptionsblock.cpp:481: fatal error: opening dependency file
>> | >>> | .deps/nxsassumptionsblock.Tpo: Permission denied
>> | >>> | compilation terminated.
>> | >>> | make[2]: *** [nxsassumptionsblock.lo] Error 1
>> | >>> | make[2]: Leaving directory `/home/ben/lib/R/pkgs/phylobase/pkg/src/ncl/ncl'
>> | >>> | make[1]: *** [all-recursive] Error 1
>> | >>> | make[1]: Leaving directory `/home/ben/lib/R/pkgs/phylobase/pkg/src/ncl'
>> | >>> | make: *** [all] Error 2
>> | >>> | Making install in ncl
>> | >>> | make[1]: Entering directory `/home/ben/lib/R/pkgs/phylobase/pkg/src/ncl/ncl'
>> | >>> | /bin/bash ../libtool --tag=CXX   --mode=compile g++ -DHAVE_CONFIG_H -I.
>> | >>> | -I..     -O3 -ffast-math  -fPIC -MT nxsassumptionsblock.lo -MD -MP -MF
>> | >>> | .deps/nxsassumptionsblock.Tpo -c -o nxsassumptionsblock.lo
>> | >>> | nxsassumptionsblock.cpp
>> | >>> |  g++ -DHAVE_CONFIG_H -I. -I.. -O3 -ffast-math -fPIC -MT
>> | >>> | nxsassumptionsblock.lo -MD -MP -MF .deps/nxsassumptionsblock.Tpo -c
>> | >>> | nxsassumptionsblock.cpp  -fPIC -DPIC -o .libs/nxsassumptionsblock.o
>> | >>> | nxsassumptionsblock.cpp:481: fatal error: opening dependency file
>> | >>> | .deps/nxsassumptionsblock.Tpo: Permission denied
>> | >>> | compilation terminated.
>> | >>> | make[1]: *** [nxsassumptionsblock.lo] Error 1
>> | >>> | make[1]: Leaving directory `/home/ben/lib/R/pkgs/phylobase/pkg/src/ncl/ncl'
>> | >>> | make: *** [install-recursive] Error 1
>> | >>> | configure: finished building libncl.a in ncl
>> | >>> |
>> | >>> |
>> | >>> | Dirk Eddelbuettel wrote:
>> | >>> | > On 23 January 2010 at 21:04, Dirk Eddelbuettel wrote:
>> | >>> | > | Thanks to the excellent debugging work by Mark Holder, as well as some help
>> | >>> | > | from Simon Urbanek, we finally got OS X and Rcpp to be nice to each other:
>> | >>> | > | static linking lets everybody be friends.
>> | >>> | >
>> | >>> | > Rcpp 0.7.3 will not do. Yesterday I learned from Simon U that I 'broke' Rcpp
>> | >>> | > by including a configure file which means no universal OS X binary with x86,
>> | >>> | > ppc, x86_64 content get created. We will reverse this ASAP for 0.7.4 but it
>> | >>> | > may take a day.
>> | >>> | >
>> | >>> | > Hopefully with 0.7.4 all will be good.  The rest of the mail is still valid I
>> | >>> | > would appreciate tests of the new libncl builds though.
>> | >>> | >
>> | >>> | > Sorry, Dirk
>> | >>> | >
>> | >>> | > |
>> | >>> | > | This was encoded in Rcpp 0.7.3 which was released earlier this week. So I
>> | >>> | > | figured it was time to get back to the rest of the phylobase build.  And a
>> | >>> | > | few days earlier I had suggested:
>> | >>> | > |
>> | >>> | > | On 11 January 2010 at 08:55, Dirk Eddelbuettel wrote:
>> | >>> | > | | I am still game. I see a three-pronged approach:
>> | >>> | > | |
>> | >>> | > | |   i)    Suggestion Let's fix NCL and have a locally built version outside
>> | >>> | > | |         of phylobase on all test platforms
>> | >>> | > | |
>> | >>> | > | |   ii)   With that, fix/simplify Rcpp usage. Should be easy
>> | >>> | > | |
>> | >>> | > | |   iii)  With that, get back to i) and clean up NCL's configure.
>> | >>> | > | |
>> | >>> | > | | I think it would be easier to disentangle Rcpp and NCL inside phylobase while
>> | >>> | > | | we make this more.
>> | >>> | > |
>> | >>> | > | And I just committed a simple and easy fix to phylobase's SVN on R-Forge.  In
>> | >>> | > | a nutshell, we were just descending down to ncl's source directory and saying
>> | >>> | > | 'configure; make' which leaves the ncl library unfinished. The mighty libtool
>> | >>> | > | would normally run over it once more during 'make install'.
>> | >>> | > |
>> | >>> | > | So I changed it to this (and recall that this is relative to top-level
>> | >>> | > | directory for phylobase):
>> | >>> | > |
>> | >>> | > |    cd src/ncl
>> | >>> | > |    ./configure --quiet --enable-static --disable-shared --prefix=`pwd`/..
>> | >>> | > |    make
>> | >>> | > |    make install
>> | >>> | > |    cd ../..
>> | >>> | > |
>> | >>> | > | So we ask for a static library (and no dynamic library), and we tell
>> | >>> | > | configure to put it simply one directory up. That works well enough!  I also
>> | >>> | > | changed the CPPFLAGS and LDFLAGS accordingly: include/ncl and lib/ncl are now
>> | >>> | > | created during that new 'make install' step:
>> | >>> | > |
>> | >>> | > |    ## configure include/load flags and copy sample source to inst/doc
>> | >>> | > |    AC_SUBST([CPPFLAGS],["${CPPFLAGS} ${rcpp_cxxflags} -Iinclude/ncl"])
>> | >>> | > |    AC_SUBST([LDFLAGS],["${LDFLAGS} ${rcpp_ldflags} -Llib/ncl -lncl"])
>> | >>> | > |
>> | >>> | > | With that phylobase builds and installs fine on my Linux machine and
>> | >>> | > | (finger's crossed!!) should do the same on other people's Linux and OS X
>> | >>> | > | boxen.  So if over the next few days you have a moment, could you update from
>> | >>> | > | SVN and give it a whirl?
>> | >>> | > |
>> | >>> | > | Cheers, Dirk
>> | >>> | > |
>> | >>> | > | --
>> | >>> | > | Three out of two people have difficulties with fractions.
>> | >>> | >
>> | >>> |
>> | >>> |
>> | >>> | --
>> | >>> | Ben Bolker
>> | >>> | Associate professor, Biology Dep't, Univ. of Florida
>> | >>> | bolker at ufl.edu / people.biology.ufl.edu/bolker
>> | >>> | GPG key: people.biology.ufl.edu/bolker/benbolker-publickey.asc
>> | >>> |
>> | >>> |
>> | >>> | [GNUPG:] ERRSIG 7395291A3C337A73 17 2 01 1264424409 9
>> | >>> | [GNUPG:] NO_PUBKEY 7395291A3C337A73
>> | >>>
>> | >>> --
>> | >>> Three out of two people have difficulties with fractions.
>> | >>> _______________________________________________
>> | >>> 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
>> | >>>
>> | >
>> | >
>> | > --
>> | > Ben Bolker
>> | > Associate professor, Biology Dep't, Univ. of Florida
>> | > bolker at ufl.edu / people.biology.ufl.edu/bolker
>> | > GPG key: people.biology.ufl.edu/bolker/benbolker-publickey.asc
>> | >
>> | >
>>
>> --
>> Three out of two people have difficulties with fractions.
>> _______________________________________________
>> 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
>
>
> --
> Ben Bolker
> Associate professor, Biology Dep't, Univ. of Florida
> bolker at ufl.edu / people.biology.ufl.edu/bolker
> GPG key: people.biology.ufl.edu/bolker/benbolker-publickey.asc
>
>


More information about the Phylobase-devl mailing list