[Rd] R CMD check warning about compiler warning flags
Martin Maechler
maechler at stat.math.ethz.ch
Fri Dec 22 15:12:46 CET 2017
>>>>> Duncan Murdoch <murdoch.duncan at gmail.com>
>>>>> on Thu, 21 Dec 2017 14:23:13 -0500 writes:
> On 21/12/2017 1:02 PM, Winston Chang wrote:
>>>> On recent builds of R-devel, R CMD check gives a
>>>> WARNING when some compiler warning flags are detected,
>>>> such as -Werror, because they are non-portable. This
>>>> appears to have been added in this commit:
>>>> https://github.com/wch/r-source/commit/2e80059
>>>
>>> That is not the canonical R sources.
>>
>> Yes, that is obvious. The main page for that repository
>> says it is a mirror of the R sources, right at the top. I
>> know that because I put the message there, and because I
>> see it every time I visit the repository. If you have a
>> good way of pointing people to the changes made in a
>> commit with the canonical R sources, please let us
>> know. I and many others would be happy to use it.
> The usual way is just to refer to the revision number,
> i.e. "This appears to have been added in rev 73909".
> People who don't have the sources checked out can see the
> diff on your Github mirror using
> https://github.com/wch/r-source/search?q="trunk at 73909"&type=Commits
> and following the listed search hit. (Thanks to Thierry
> Onkelinx for helping me with this.) This only works for
> commits to the trunk. I guessed that something like
> https://github.com/wch/r-source/search?q="R-3-4-branch at 73937"&type=Commits
> would work if the commit was to the 3.4 branch, but
> apparently not. I don't know how to find those commits.
> Presumably there's a way, but I don't know it.
> Another possibility is that someone could set up (or
> already has?) one of the web viewers (WebSVN, etc.) for
> the real repository. That would be better for those of us
> who are SVN users, but probably harder for Git users.
> Duncan Murdoch
As you know I had setup (the first few versions of) the svn at
https://svn.r-project.org/
at the time, I wanted to keep that machine protected as much as
possible and had decided not to install any other apache
modules and svn - niceties just such that the server would run
minimal services and hence would be minimally vulnerable.
The times have changed though and I will look into adding WebSVN
to svn.r-project.org as one of the first things in 2018.
Martin Maechler
>>
>>> And your description seems wrong: there is now an
>>> _optional_ check controlled by an environment variable,
>>> primarily for CRAN checks.
>>
>> The check is "optional", but not for packages submitted
>> to CRAN.
>>
>>
>>>> I'm working on a package where these compiler warning
>>>> flags are present in a Makefile generated by a
>>>> configure script -- that is, the configure script
>>>> detects whether the compiler supports these flags, and
>>>> if so, puts them in the Makefile. (The configure script
>>>> is for a third-party C library which is in a
>>>> subdirectory of src/.)
>>>>
>>>> Because the flags are added only if the system supports
>>>> them, there shouldn't be any worries about portability
>>>> in practice.
>>>
>>>
>>> Please read the explanation in the manual: there are
>>> serious concerns about such flags which have bitten CRAN
>>> users several times.
>>>
>>> To take your example, you cannot know what -Werror does
>>> on all compilers (past, present or future) where it is
>>> supported (and -W flags do do different things on
>>> different compilers). On current gcc it does
>>>
>>> -Werror Make all warnings into errors.
>>>
>>> and so its effect depends on what other flags are used
>>> (people typically use -Wall, and most new versions of
>>> both gcc and clang add more warnings to -Wall -- I read
>>> this week exactly such a discussion about the
>>> interaction of -Werror with
>>> -Wtautological-constant-compare as part of -Wall in
>>> clang trunk).
>>>
>>>> Is there a way to get R CMD check to not raise warnings
>>>> in cases like this? I know I could modify the C
>>>> library's configure.ac (which is used to generate the
>>>> configure script) but I'd prefer to leave the library's
>>>> code untouched if possible.
>>>
>>> You don't need to (and most likely should not) use the
>>> C[XX]FLAGS it generates ... just use the flags which R
>>> passes to the package to use.
>>
>> It turns out that there isn't even a risk of these
>> compiler flags being used -- I learned from of my
>> colleagues that the troublesome compiler flags, like
>> -Werror, never actually appear in the Makefile. The
>> configure script prints out those compiler flags out when
>> it checks for them, but in the end it creates a Makefile
>> with the CFLAGS inherited from R. So there's no chance
>> that the library would be compiled using those flags
>> (unless R passed them along).
>>
>> His suggested workaround is to silence the output of the
>> configure script. That also hides some useful
>> information, but it does work for this issue.
>>
>> -Winston
>>
>> ______________________________________________
>> R-devel at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
More information about the R-devel
mailing list