Dirk Eddelbuettel
2016-Nov-12 23:41 UTC
[R-sig-Debian] Ubuntu 16.10 Yakkety Yak uses GCC 6 but -std=c++98 is missing
On 13 November 2016 at 00:13, Kirill M?ller wrote: | On 13.11.2016 00:00, Dirk Eddelbuettel wrote: | > 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. | Don't we need "-std=c++98" for GCC 6 in Makevars anyway, even if it's | just to save users from using C++11 constructs and then wondering why | their packages fail on CRAN/winbuilder? In my case it also saves me from | recompiling "all of CRAN" (at least for now); that's a nice side effect, | but the first part also looks important to me. It's a fair, and open, question. We may, and then we may get away with not rebuilding; or we may not, but then have to pay by rebuilding all. I am somewhat surprised I haven't been asked to rebuild Debian packages. There too we do have binary depends on C++ packages from CRAN, ie r-cran-rcpp and r-cran-dplyr and whatnot. But then ... then Debian archive managers now just do 'binary rebuilds' as needed and I may be out of the loop. Sorry but I just don't have much better information. There are Debian Wiki pages on g++ transitions... Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
George N. White III
2016-Nov-13 13:32 UTC
[R-sig-Debian] Ubuntu 16.10 Yakkety Yak uses GCC 6 but -std=c++98 is missing
On Sat, Nov 12, 2016 at 7:41 PM, Dirk Eddelbuettel <edd at debian.org> wrote:> > On 13 November 2016 at 00:13, Kirill M?ller wrote: > | On 13.11.2016 00:00, Dirk Eddelbuettel wrote: > | > 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? >The fact that many current R installations use gcc-5 may be incentive enough for packagers to avoid C++11 constructs. In my limited gcc-6 experience, the main issue has been libraries that rely on coding practices that were allowed by gcc-5 but are not allowed by gcc-6 defaults such as "code that tries to check for stream errors by comparing to NULL or 0": if (file != NULL)> | > > | > 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. > | Don't we need "-std=c++98" for GCC 6 in Makevars anyway, even if it's > | just to save users from using C++11 constructs and then wondering why > | their packages fail on CRAN/winbuilder? In my case it also saves me from > | recompiling "all of CRAN" (at least for now); that's a nice side effect, > | but the first part also looks important to me. > > It's a fair, and open, question. > > We may, and then we may get away with not rebuilding; or we may not, but > then > have to pay by rebuilding all. > > I am somewhat surprised I haven't been asked to rebuild Debian packages. > There too we do have binary depends on C++ packages from CRAN, ie > r-cran-rcpp > and r-cran-dplyr and whatnot. But then ... then Debian archive managers > now > just do 'binary rebuilds' as needed and I may be out of the loop. >Unless intractable problems arise, wider use of gcc-6 outside of LTS releases should be encouraged.> Sorry but I just don't have much better information. There are Debian Wiki > pages on g++ transitions... > > DirkIt is worth noting that the macports default is to build R with gcc6, so Ubuntu 16.10 is not alone in using gcc-6. If gcc-6 was a disaster, there would be bug reports by now. This says nothing about package authors using gcc-6 specific code in new work, but one hopes authors will test on LTS releases or at least response to bug reports from LTS users. https://cran.r-project.org/bin/linux/ubuntu/README.html says there is support for Yakkety Yak, but the sample sources.list lines lack an entry for yakkety. This may result in users mixing gcc-5 R with gcc-6 libraries so needs to be clarified. Rather the provide a list of similar lines, why not one line: deb https://<my.favorite.cran.mirror>/bin/linux/ubuntu <release>/ and mention ways to determine the release name. One way is from /etc/apt list files, which works for derivatives such as Linux MINT. I have seen instances where a user tried to use an older R disto in the the hope of avoiding rebuilding existing libraries, so it may be worth adding some sanity check to R to warn when R is run under a release that is newer than the build release. -- George N. White III <aa056 at chebucto.ns.ca> Head of St. Margarets Bay, Nova Scotia [[alternative HTML version deleted]]
Dirk Eddelbuettel
2016-Nov-13 15:56 UTC
[R-sig-Debian] Ubuntu 16.10 Yakkety Yak uses GCC 6 but -std=c++98 is missing
On 13 November 2016 at 09:32, George N. White III wrote: | Unless intractable problems arise, wider use of gcc-6 outside of LTS releases | should be encouraged. That is being done, and has been done for years. Ie gcc-7 just got into Debian unstable but BDR has been testing with it for a while now. Ditto with gcc-6 when it was bleeding fresh. There is nothing you can prescribe here. We are all caught between the dimwitted enterprises with RHEL versions built by the Romans deploying gcc-4.4, and these shiny newer things at the other side. All we can do is test the crap out of it, and we do! Services like rhub help. And of course developers willing to go the extra mile. And tools like Docker make it _trivial_ to keep another build environment, compiler version, compiler tooling (UBSAN !!) etc pp | is not alone in using gcc-6.? If gcc-6 was a disaster, there would be bug We would have known a year or longer ago. It has been a default in Debian unstable and testing for a pretty long time. | https://cran.r-project.org/bin/linux/ubuntu/README.html says there is support | for Yakkety Yak, but the sample sources.list lines lack an entry for yakkety. The rest of your post conflates these issue with what ill-educated users on derivative distros we do not (formally, lack of volunteers) support. There is Debian support on CRAN thanks to tireless effort by Johannes, and Ubuntu support thanks to Michael. If someone breaks his Mint box in despair by going out of distro it is really their problem. We can't fix all possible installations for all people. We aim to cover the main ones here, and I dare say we do pretty well --- but alarmist posts don't help. I know you mean well but some things needed clarification. For background, distros which know what they are doing have transition plans. See eg these from Debian https://wiki.debian.org/GCC6 https://wiki.debian.org/GCC5 (just for reference) Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
Seemingly Similar 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