[GenABEL-dev] clang

Maarten Kooyman kooyman at gmail.com
Tue Dec 10 14:49:51 CET 2013


Hi Maksim,

It seems that libcxx has stricter rules the lib we "normally" use.


replace


  if (illfile == NULL) {

with

if (!illfile.is_open()) {

and it should compile again. I did not do functional testing!  In my 
opion the is_open() variant looks cleaner then the ==NULL construction.


 >p.s. It seems we always should use 'clang' for compiling R packages 
because as I understand it makes more extensive >diagnostic of C++ code 
before compiling. What do you think?

Most computers do have the GCC pipeline as default (except MacOS), so 
building it with GCC pipeline by default would be good enough. LLVM and 
GCC do both have there strengths and weaknesses. So the best way is to 
test both pipeline in Jenkins. CRAN does use a trunk version of R to 
test the packages so it would be wise to compile a fresh R on the 
jenkins server once in a while. It is in general a good idea to use the 
latest version(maybe even bleeding edge) to find error in our software 
before people have running this software on there production machine.

@maksim: were you able to fix all comment of CRAN?

Kind regards,

Maarten


On 12/10/2013 12:00 PM, Maksim Struchalin wrote:
> Hi Maarten & Lennart,
>
> Following Maarten suggestion to add support of clang in Jenkins, I 
> tried to intsall clang on my UBUNTU and here I want to share what I got.
> We duscused something separatly already but I thik it is better to 
> move in the list so we can trace the dialog back in the future.
>
>
> I installed 'clang' and 'llvm' (both precompiled). And I run in a 
> command line:
>
> clang++ -std=c++11 -stdlib=libc++ -fsanitize=undefined 
> -fno-omit-frame-pointer -I/usr/share/R/include/  -DNDEBUG 
> -I/home/maksim/distrib/libcxx/include   -DCOMPILE_WITH_R -fpic  -g -O2 
> -Wall -pedantic -mtune=native  -c convert_snp_illumina.cpp -o 
> convert_snp_illumina.o
>
> it spit out:
>
>
>   convert_snp_illumina.cpp:70:14: warning: comparison between NULL and
>   non-pointer ('ifstream' (aka 'basic_ifstream<char>') and NULL)
>   [-Wnull-arithmetic]
>
>               ~~~~~~~ ^  ~~~~
>   convert_snp_illumina.cpp:70:14: error: invalid operands to binary
>   expression ('ifstream' (aka 'basic_ifstream<char>') and 'long')
>           if (illfile == NULL) {
>               ~~~~~~~ ^  ~~~~
>   convert_snp_illumina.cpp:270:14: warning: comparison between NULL
>   and non-pointer ('ofstream' (aka 'basic_ofstream<char>') and NULL)
>   [-Wnull-arithmetic]
>           if (outfile == NULL) {
>               ~~~~~~~ ^  ~~~~
>   convert_snp_illumina.cpp:270:14: error: invalid operands to binary
>   expression ('ofstream' (aka 'basic_ofstream<char>') and 'long')
>           if (outfile == NULL) {
>               ~~~~~~~ ^  ~~~~
>
> Here -I/home/maksim/distrib/libcxx/include is a standard library for 
> clang ('libcxx' was downloaded from http://libcxx.llvm.org/).
>
>
> This is exactly the warinings/errors which CRAN people sent us. To run 
> it as R CMD INSTALL, we need to change /etc/R/Makeconf (as Maarten 
> mentioned already) appropraitelly and compile the library 'libcxx' 
> (now, I just downloaded it and used headers files only). I tried 'sudo 
> apt-get install libc++-dev' as Maarten suggested but got many 
> conflicts with other packages and could not install it.
>
> That's what I got by now.
>
>
> best,
> Maksim
>
>
>
>
>
> _______________________________________________
> genabel-devel mailing list
> genabel-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/genabel-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/genabel-devel/attachments/20131210/14d38a9b/attachment.html>


More information about the genabel-devel mailing list