[R-pkg-devel] How to update "SystemRequirements: C++11"?

Avraham Adler @vr@h@m@@d|er @end|ng |rom gm@||@com
Mon Feb 6 23:22:12 CET 2023


On Mon, Feb 6, 2023 at 9:46 PM Duncan Murdoch <murdoch.duncan using gmail.com> wrote:
>
> On 06/02/2023 4:01 p.m., Duncan Murdoch wrote:
> > On 06/02/2023 3:46 p.m., Winston Chang wrote:
> >> I recently submitted a package to CRAN with "SystemRequirements: C++11".
> >> This raises the following NOTE on R-devel, and I was asked to fix and
> >> resubmit:
> >>
> >> * checking C++ specification ... NOTE
> >>     Specified C++11: please update to current default of C++17
> >>
> >> If I understand correctly, I have two options, neither of which will work:
> >> 1. Remove "SystemRequirements: C++11" entirely. The problem with this is
> >> that on systems with older versions of R (3.6 and below, I believe), it may
> >> try to compile the package with an older C++ standard, which will fail.
> >> 2. Update it to "SystemRequirements: C++17". The problem here is that on
> >> systems that don't have a C++17 compiler, the package won't build -- even
> >> though the package only actually requires a C++11 compiler.
> >>
> >> How should I deal with this?
> >
> > Are you allowed to say "C++11 or C++17"?
>
> Actually I can partially answer this:  the test is not based on
> SystemRequirements, but on the log of the build, which now contains
> lines like this:
>
>    using C compiler: ‘Apple clang version 12.0.0 (clang-1200.0.32.28)’
>    using C++ compiler: ‘Apple clang version 12.0.0 (clang-1200.0.32.28)’
>    using C++11
>    using SDK: ‘MacOSX11.1.sdk’
>
> I get "using C++11" because of this line in Makevars:
>
>    CXX_STD = CXX11
>
> So I guess the answer is to change your Makevars to make that line
> conditional on running under an old version of R.  If you figure out how
> to do that, could you post the recipe here?

I believe this is closely related to this email [1]. Dirk and I and
Aymeric have been going through the same issue with nloptr as well.
Our current opinion is to leave it out, as it would restrict more
users to demand C++17, which is unneeded, than to have users with over
a decade old compiler which does not have C++11. Dirk and Aymeric,
please chime in if I have misstated. Regardless, according to
Professor Ripley, if you require specific features, you should mark
them in _both_ Makevars and SystemRequirements, which is implied in
the "r-devel" version of WRE which adds the words "also" in section
1.2.4.

Thanks,

Avi

[1] https://stat.ethz.ch/pipermail/r-package-devel/2023q1/008865.html

>
> Duncan Murdoch
>
> ______________________________________________
> R-package-devel using r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel



More information about the R-package-devel mailing list