Dirk Eddelbuettel
2016-Nov-12 17:38 UTC
[R-sig-Debian] Ubuntu 16.10 Yakkety Yak uses GCC 6 but -std=c++98 is missing
On 12 November 2016 at 07:59, Dirk Eddelbuettel wrote: | | On 12 November 2016 at 14:23, Kirill M?ller wrote: | | Thanks. I have now CXX = g++ -std=c++98 in my /etc/R/Makeconf, it's | | picked up properly. I can only assume that the last -std= option wins if | | more than one are given on the same command line [1]. | | Good to know it works. | | I am still a little puzzled why it was needed when it doesn't seem to be | needed on the Debian side. I just upgraded an old (unused, underpowered) box to 16.10 as a first test. No issues so far, and basic cppFunction("...") tests with Rcpp work. Could you get us a minimal reproducible example of what broke without the explicit -std=c++98 ? Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
Kirill Müller
2016-Nov-12 21:54 UTC
[R-sig-Debian] Ubuntu 16.10 Yakkety Yak uses GCC 6 but -std=c++98 is missing
On 12.11.2016 18:38, Dirk Eddelbuettel wrote:> On 12 November 2016 at 07:59, Dirk Eddelbuettel wrote: > | > | On 12 November 2016 at 14:23, Kirill M?ller wrote: > | | Thanks. I have now CXX = g++ -std=c++98 in my /etc/R/Makeconf, it's > | | picked up properly. I can only assume that the last -std= option wins if > | | more than one are given on the same command line [1]. > | > | Good to know it works. > | > | I am still a little puzzled why it was needed when it doesn't seem to be > | needed on the Debian side. > > I just upgraded an old (unused, underpowered) box to 16.10 as a first > test. No issues so far, and basic cppFunction("...") tests with Rcpp work. > > Could you get us a minimal reproducible example of what broke without the > explicit -std=c++98 ? >When I posted, there was only "xenial", not "yakkety", on CRAN. This has changed now (thanks a lot!). When I try to upgrade, I'm presented with the following diff of /etc/R/Makeconf (excerpt), which looks *very* strange to me. -# configure '--prefix=/usr' '--with-cairo' '--with-jpeglib' '--with-readline' '--with-tcltk' '--with-system-bzlib' '--with-system-pcre' '--with-system-zlib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--datadir=/usr/share/R/share' '--includedir=/usr/share/R/include' '--with-blas' '--with-lapack' '--enable-R-profiling' '--enable-R-shlib' '--enable-memory-profiling' '--without-recommended-packages' '--build' 'x86_64-linux-gnu' 'build_alias=x86_64-linux-gnu' 'R_PRINTCMD=/usr/bin/lpr' 'R_PAPERSIZE=letter' 'R_BROWSER=xdg-open' 'LIBnn=lib' 'JAVA_HOME=/usr/lib/jvm/default-java' 'CC=gcc -std=gnu99' 'CFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro' 'CPPFLAGS=' 'F77=gfortran' 'FFLAGS=-g -O2 -fstack-protector-strong' 'CXX=g++' 'CXXFLAGS=-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g' 'FC=gfortran' 'FCFLAGS=-g -O2 -fstack-protector-strong' +# configure '--prefix=/usr' '--with-cairo' '--with-jpeglib' '--with-readline' '--with-tcltk' '--with-system-bzlib' '--with-system-pcre' '--with-system-zlib' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--datadir=/usr/share/R/share' '--includedir=/usr/share/R/include' '--with-blas' '--with-lapack' '--enable-R-profiling' '--enable-R-shlib' '--enable-memory-profiling' '--without-recommended-packages' '--build' 'x86_64-linux-gnu' 'build_alias=x86_64-linux-gnu' 'R_PRINTCMD=/usr/bin/lpr' 'R_PAPERSIZE=letter' 'R_BROWSER=xdg-open' 'LIBnn=lib' 'JAVA_HOME=/usr/lib/jvm/default-java' 'CC=gcc -std=gnu99' 'CFLAGS=-g -O2 -fdebug-prefix-map=/build/r-base-qk3a9o/r-base-3.3.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g' 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro' 'CPPFLAGS=' 'F77=gfortran' 'FFLAGS=-g -O2 -fdebug-prefix-map=/build/r-base-qk3a9o/r-base-3.3.2=. -fstack-protector-strong' 'CXX=g++' 'CXXFLAGS=-g -O2 -fdebug-prefix-map=/build/r-base-qk3a9o/r-base-3.3.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g' 'FC=gfortran' 'FCFLAGS=-g -O2 -fdebug-prefix-map=/build/r-base-qk3a9o/r-base-3.3.2=. -fstack-protector-strong' -CFLAGS = -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO) +CFLAGS = -g -O2 -fdebug-prefix-map=/build/r-base-qk3a9o/r-base-3.3.2=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g $(LTO) Also, no "-std=c++98" in the maintainer's version. I noticed this because plogr logging crashed in dplyr (compiled with gcc 6) right after upgrading to yakkety; I still had a gcc-5 built version of Rcpp installed. As soon as I added -std, everything worked as before. No minimal example, sorry. Don't we need "-std=c++98" in Makevars anyway, even if it's just to avoid users using C++11 constructs and then wondering why their packages fail on CRAN? -Kirill -Kirill
Dirk Eddelbuettel
2016-Nov-12 23:00 UTC
[R-sig-Debian] Ubuntu 16.10 Yakkety Yak uses GCC 6 but -std=c++98 is missing
On 12 November 2016 at 22:54, Kirill M?ller wrote: [... lots of stuff deleted ...] | I noticed this because plogr logging crashed in dplyr (compiled with gcc | 6) right after upgrading to yakkety; I still had a gcc-5 built version | of Rcpp installed. As soon as I added -std, everything worked as before. | No minimal example, sorry. Don't we need "-std=c++98" in Makevars | anyway, even if it's just to avoid users using C++11 constructs and then | wondering why their packages fail on CRAN? There is still no minimally preproducible example here; just a (pardon me here) rambling description of a hasty system upgrade. It is _somewhat common_ to have to recompile C++ shared objects when compiler major versions change. So I am unsure if we have actually demonstrated a bug here. Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
Reasonably Related Threads
- Ubuntu 16.10 Yakkety Yak uses GCC 6 but -std=c++98 is missing
- Ubuntu 16.10 Yakkety Yak uses GCC 6 but -std=c++98 is missing
- Ubuntu 16.10 Yakkety Yak uses GCC 6 but -std=c++98 is missing
- Ubuntu 16.10 Yakkety Yak uses GCC 6 but -std=c++98 is missing
- Ubuntu 16.10 Yakkety Yak uses GCC 6 but -std=c++98 is missing