--- wikisrc/pkgsrc/gcc.mdwn 2017/12/31 17:15:37 1.9 +++ wikisrc/pkgsrc/gcc.mdwn 2018/01/01 23:27:13 1.11 @@ -231,10 +231,17 @@ A gcc version that is too old will not b Anything older than 4.8 fails for c++11. 4.8 fails on some c++11 packages, such as firefox and glibmm. -A version that is too new also fails to build packages. Analyses -posted to tech-pkg indicate that 5 is close to 4.9 in the number of -packages built, and that moving to 6 causes hundreds of additional -failures. +A version that is too new also fails to build packages. Jason Bacon +posted counts to tech-pkg indicate that 5 is close to 4.8 in the +number of packages built, and that moving to 6 causes hundreds of +additional failures. (Keep in mind that currently, building with 4.8 +will build 4.9 for firefox, but in the future will not.) + + www/pkgsrc/packages/sharedapps/pkg-2017Q3/RHEL6-gcc48/All 16461 + www/pkgsrc/packages/sharedapps/pkg-2017Q3/RHEL6-gcc6/All 15849 + + www/pkgsrc/packages/sharedapps/pkg-2017Q3/RHEL7-gcc48/All 16414 + www/pkgsrc/packages/sharedapps/pkg-2017Q3/RHEL7-gcc5/All 16338 Therefore, the current answer to "What is the best version to use" is 5. @@ -248,12 +255,10 @@ built it earlier. When the base system is old (e.g., gcc 4.5 in NetBSD 6, or 4.1, in NetBSD 5), then it is clear that a newer version must be built. For these, PKGSRC_GXX_VERSION should default to a newish gcc, avoiding -being so new as to cause building issues. Currently, gcc5 is probably -a good choice, with gcc6 compiling significantly but not vastly fewer -packages. PKGSRC_GCC_VERSION should probably default to the system -version if it can build all C99 programs, or match PKGSRC_GXX_VERSION, -if the system version is too old. Perhaps gcc 4.5 would be used, but -4.1 not used. \todo Discuss. +being so new as to cause building issues. PKGSRC_GCC_VERSION should +probably default to the system version if it can build all C99 +programs, or match PKGSRC_GXX_VERSION, if the system version is too +old. Perhaps gcc 4.5 would be used, but 4.1 not used. \todo Discuss. When the base system is almost new enough, the decision about the default is more complicated. A key example is gcc 4.8, found in @@ -262,7 +267,7 @@ need a newer version. One options is to firefox failing, as well as all c++14 programs. Another is to choose 4.9, but this makes little sense because c++14 programs will still fail, and the general rule of moving to the most recent -generally-acceptable version applies, which currently leads to gcc6. +generally-acceptable version applies, which currently leads to gcc5. This is in effect a declaration that "almost new enough" does not count as new enough. Thus the plan for NetBSD 7 is to set PKGSRC_GCC_VERSION to 4.8 and PKGSRC_GXX_VERSION to 5.