Skip to content

[Bioc-devel] tokay1 C++14 compiler

9 messages · Martin Morgan, Kasper Daniel Hansen, Hervé Pagès +1 more

#
Hello Bioconductor community,

I maintain the Bioconductor package genphen which depends on rstan for 
MCMC sampling. To build the package one needs a C++14 compiler.

I have no problem building the package on malbec1 and merida1, but not 
on tokay1. Any idea of what might have gone wrong on this server and how 
to use C++14? I have submitted a new package (IgGeneUsage) which also 
uses rstan and have the same problem (see build report below).

BTW: why do we see this under the C++14 compiler box for tokay1:
Compiler version (' --version' output):
'--version' is not recognized as an internal or external command,
operable program or batch file.

Any ideas?

Best

===============================

 ?R CMD BUILD

===============================
* checking for file 'IgGeneUsage/DESCRIPTION' ... OK
* preparing 'IgGeneUsage':
* checking DESCRIPTION meta-information ... OK
* cleaning src
* installing the package to build vignettes
 ????? -----------------------------------
* installing *source* package 'IgGeneUsage' ...
** using staged installation
** libs
Error in .shlib_internal(args) :
 ? C++14 standard requested but CXX14 is not defined
* removing 
'C:/Users/pkgbuild/AppData/Local/Temp/RtmpUDyHnY/Rinst315c22dc5ac/IgGeneUsage'
 ????? -----------------------------------
ERROR: package installation failed
#
What's weird here is that you supposedly depend on rstan which also
requires a C++14. How can the build system have that package installed
without having a compliant compiler?


On Thu, Jul 25, 2019 at 12:05 PM Simo Kitanovski <simo.kitanovski at uni-due.de>
wrote:

  
    
#
Windows (and macOS) CRAN packages are installed as binaries (as experienced by the typical user), so don't need compilation-- Rstan is built by CRAN through whatever magic / agreement.

The paragraph at the very end of

  https://cran.r-project.org/doc/manuals/r-release/R-exts.html#Using-C_002b_002b14-code

suggests 

Note that g++ 4.9.x (as used for R on Windows at the time of writing) has only partial C++14 support, and the flag to obtain that support is not included in the default Windows build of R

so my understanding of this is that CXX14 is not supported on Windows. The options are either to revise your code to avoid CXX14 or to anticipate that your package will be 'Unsupported on Windows' (thereby losing 1/2 your user base).

The expert on this (Herv?) will not be back for several days.

Martin

?On 7/25/19, 6:33 PM, "Bioc-devel on behalf of Kasper Daniel Hansen" <bioc-devel-bounces at r-project.org on behalf of kasperdanielhansen at gmail.com> wrote:

    What's weird here is that you supposedly depend on rstan which also
    requires a C++14. How can the build system have that package installed
    without having a compliant compiler?
    
    
    On Thu, Jul 25, 2019 at 12:05 PM Simo Kitanovski <simo.kitanovski at uni-due.de>
    wrote:
    
    > Hello Bioconductor community,
    >
    > I maintain the Bioconductor package genphen which depends on rstan for
    > MCMC sampling. To build the package one needs a C++14 compiler.
    >
    > I have no problem building the package on malbec1 and merida1, but not
    > on tokay1. Any idea of what might have gone wrong on this server and how
    > to use C++14? I have submitted a new package (IgGeneUsage) which also
    > uses rstan and have the same problem (see build report below).
    >
    > BTW: why do we see this under the C++14 compiler box for tokay1:
    > Compiler version (' --version' output):
    > '--version' is not recognized as an internal or external command,
    > operable program or batch file.
    >
    > Any ideas?
    >
    > Best
    >
    > ===============================
    >
    >   R CMD BUILD
    >
    > ===============================
    > * checking for file 'IgGeneUsage/DESCRIPTION' ... OK
    > * preparing 'IgGeneUsage':
    > * checking DESCRIPTION meta-information ... OK
    > * cleaning src
    > * installing the package to build vignettes
    >        -----------------------------------
    > * installing *source* package 'IgGeneUsage' ...
    > ** using staged installation
    > ** libs
    > Error in .shlib_internal(args) :
    >    C++14 standard requested but CXX14 is not defined
    > * removing
    >
    > 'C:/Users/pkgbuild/AppData/Local/Temp/RtmpUDyHnY/Rinst315c22dc5ac/IgGeneUsage'
    >        -----------------------------------
    > ERROR: package installation failed
    >
    > _______________________________________________
    > Bioc-devel at r-project.org mailing list
    > https://stat.ethz.ch/mailman/listinfo/bioc-devel
    >
    
    
    -- 
    Best,
    Kasper
    
    
    _______________________________________________
    Bioc-devel at r-project.org mailing list
    https://stat.ethz.ch/mailman/listinfo/bioc-devel
#
Thanks!

I will try to revise the code to avoid CXX14 if this is that case.

Best
On 25.07.19 11:52 nachm., Martin Morgan wrote:
3 days later
#
My understanding - and I could be wrong - is that Stan compiles a model, so
the compiler needs to be available at run time and not just at build time.

On Thu, Jul 25, 2019 at 4:02 PM Simo Kitanovski <simo.kitanovski at uni-due.de>
wrote:

  
    
#
Surprisingly, if I design the package such that the stan models are 
compiled only at run-time I get no issues -> all servers build the 
package correctly. 
(https://github.com/Bioconductor/Contributions/issues/1187)

On the other hand, if I follow the rstan instructions on how to design 
an R package that depends on rstan, based on which the stan models are 
compiled only once during the build, then I get the previously mentioned 
failure only on the windows-based server.

BTW: Recent updates from stan community suggest that the new rstan 
version 2.20 will reduce the model compilation time from ~35sec to 
~7sec, which makes the decision of sticking with the run-time 
compilation setup not so bad.
On 29.07.19 8:37 nachm., Kasper Daniel Hansen wrote:

  
  
#
Well, that's pretty clear. The compiler apparently doesn't support C++14
(perhaps ask about this on the Stan support - it suggests that Stan doesn't
run on Windows with default Rtools). When you delay compiling the models to
runtime, of course the package builds - it just won't work for any user.

Best,
Kasper

On Mon, Jul 29, 2019 at 1:54 PM Simo Kitanovski <simo.kitanovski at uni-due.de>
wrote:

  
    
#
Hi Simo,

Glad you were able to switch from install-time to run-time compilation.

The C++14 compiler box for tokay1 shows that this compiler is not
available on this machine. What you see below the box under "Compiler
version" is produced by some code that tries to detect the version
of the compiler despite the compiler not being available. Of course
this fails which is why the output we see doesn't make sense.

I've modified the report generation code so that it doesn't try to
detect or display the version of a compiler that is not available.
The change will take a couple of days before it's reflected on the
report.

Cheers,
H.
On 7/29/19 12:54, Simo Kitanovski wrote:

  
    
#
Many thanks!

Best,
Simo
On 31.07.19 11:39 vorm., Pages, Herve wrote: