[GenABEL-dev] clang
Maksim Struchalin
m.v.struchalin at mail.ru
Wed Dec 11 06:24:52 CET 2013
Hi Maarten,
Thanks for suggesting how to fix these warnings/errors but at the
current stage I am trying to figure out how to get a complete report on
all warnings/errors in the code. Yurii forwarded an email from CRAN with
'warning/error' report on convert_snp_illumina.cpp file only. But, there
are more warnings I guess. To fix them, we need first to find a way how
CRAN people gets these warnings/errors. The version which I submited to
CRAN was 'free' of warnings/errors' according to gcc-4.6 (there was only
one warning on export_plink.cpp as I reported as a bug on r-forge). CRAN
is unhappy with this version. This is beacuse the CRAN's pipline which
is used for checking R packages is more complicated then just compiling
by 'gcc' and I would like to find a way how they do it.
I think we need to follow your suggestion and add support of 'clan' in
Jenkins, at least. More: following an email from prof. Ripley (from
November 16, 2013), I think, we need to add support of
clang and g++ 4.8.1 in C++98 and C++11 modes. Also: probably add support
of Undefined Behaviour Sanitizer because they use it. We need to read
carefully 'Writing R Extensions' manual and change GenABEL code
according to CRAN policy.
Yury: Do you have more comments on GenABEL from Ripley? They might help
to understand what to do.
best,
Maksim
On 10/12/2013 20:49, Maarten Kooyman wrote:
> 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
>
>
>
> _______________________________________________
> 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/20131211/760917fa/attachment-0001.html>
More information about the genabel-devel
mailing list