From c3e321f11eb6c23c00d5ecd3ac989b8b60c86c4f Mon Sep 17 00:00:00 2001 From: "Aaron M. Ucko" Date: Sun, 26 Apr 2020 17:58:16 -0400 Subject: [PATCH] + d/patches/support_gcc10 for formal support of GCC 10+ (#957581). --- debian/changelog | 8 +- debian/patches/series | 1 + debian/patches/support_gcc10 | 388 +++++++++++++++++++++++++++++++++++ 3 files changed, 394 insertions(+), 3 deletions(-) create mode 100644 debian/patches/support_gcc10 diff --git a/debian/changelog b/debian/changelog index 3b114cff..8e91947c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,12 +1,14 @@ ncbi-blast+ (2.10.0-1) UNRELEASED; urgency=medium * New upstream release. (NOT RELEASED YET.) - * debian/patches: Formally refresh. (A few files needed straightforward - manual intervention.) + * debian/patches: + - Formally refresh. (A few files needed straightforward manual + intervention.) + - support_gcc10: New, for formal support of GCC 10+. (Closes: #957581.) * debian/rules (override_dh_clean): Clean up new generated artifacts: fakehome/ and c++/include/common/ncbi_revision.h. - -- Aaron M. Ucko Sun, 26 Apr 2020 17:51:00 -0400 + -- Aaron M. Ucko Sun, 26 Apr 2020 17:58:15 -0400 ncbi-blast+ (2.9.0-4) unstable; urgency=high diff --git a/debian/patches/series b/debian/patches/series index 6038260b..164b5028 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -13,3 +13,4 @@ fix_unit_tests system_mbedtls_only reprobuild spelling +support_gcc10 diff --git a/debian/patches/support_gcc10 b/debian/patches/support_gcc10 new file mode 100644 index 00000000..5835200d --- /dev/null +++ b/debian/patches/support_gcc10 @@ -0,0 +1,388 @@ +Author: Aaron M. Ucko +Date: Sun Apr 26 11:20:45 2020 -0400 +Description: Support GCC 10+. +Debian-Bug: 957581. + +Formally recognize GCC 10 and up, even if (as in Debian) -dumpversion +reports only one or two components of the version number. Corresponds to + +https://www.ncbi.nlm.nih.gov/viewvc/v1?view=revision&revision=88985 +https://www.ncbi.nlm.nih.gov/viewvc/v1?view=revision&revision=88988 +https://www.ncbi.nlm.nih.gov/viewvc/v1?view=revision&revision=88989 +https://www.ncbi.nlm.nih.gov/viewvc/v1?view=revision&revision=89711 + +though the last of those doesn't apply cleanly without some +intervening changes for better Clang support. + +--- a/c++/src/build-system/config.h.in ++++ b/c++/src/build-system/config.h.in +@@ -966,7 +966,7 @@ + /* Compiler name */ + #undef NCBI_COMPILER_UNKNOWN + +-/* Compiler version as three-digit integer */ ++/* Compiler version as three- or four-digit integer */ + #undef NCBI_COMPILER_VERSION + + /* Compiler name */ +--- a/c++/src/build-system/configure ++++ b/c++/src/build-system/configure +@@ -8233,9 +8233,10 @@ fi + case "$compiler:$ncbi_compiler_ver" in + WorkShop*:?.?? ) ncbi_compiler_sed='s/\([0-9]\)\.\([0-9][0-9]\)/\1\20/' ;; + WorkShop*:[6-9].?) ncbi_compiler_sed='s/\([0-9]\)\.\([0-9\)/\10\20/' ;; +- ICC:??.? ) ncbi_compiler_sed='s/\([0-9][0-9]\)\.\([0-9]\)/\1\20/' ;; +- ICC:??.?.? | \ +- ICC:??.?.?.* ) ncbi_compiler_sed='s/\([0-9][0-9]\)\.\([0-9]\)\.\([0-9]\).*/\1\2\3/' ;; ++ [GI]CC:??.? ) ncbi_compiler_sed='s/\([0-9][0-9]\)\.\([0-9]\)/\1\20/' ;; ++ GCC:??.?.? | ICC:??.?.? | ICC:??.?.?.* ) ++ ncbi_compiler_sed='s/\([0-9][0-9]\)\.\([0-9]\)\.\([0-9]\).*/\1\2\3/' ;; ++ GCC:?? ) ncbi_compiler_sed='s/\([0-9][0-9]\)/\100/' ;; + *:?.?.?) ncbi_compiler_sed='s/\([0-9]\)\.\([0-9]\)\.\([0-9]\)/\1\2\3/' ;; + *:?.??*) ncbi_compiler_sed='s/\([0-9]\)\.\([0-9][0-9]\).*/\1\2/' ;; + *:?.?) ncbi_compiler_sed='s/\([0-9]\).\([0-9]\)/\1\20/' ;; +@@ -8455,10 +8456,7 @@ if test "$with_mt" != "no" ; then + # Will allegedly support -openmp at some point, but as of 3.4, + # just parses it as specifying an output filename: -o penmp. + else +- case "$compiler_version" in +- [123]?? | 4[01]? ) ;; +- * ) : ${OPENMP_FLAGS=-fopenmp} ;; +- esac ++ : ${OPENMP_FLAGS=-fopenmp} + fi + ;; + ICC ) +@@ -8510,16 +8508,14 @@ case "$host_os:$compiler" in + # "incomplete type is not allowed" should be an error, not a warning! + CFLAGS="-we70 $CFLAGS" + CXXFLAGS="-we70 $CXXFLAGS" +- case "$compiler_version" in +- 1[1-9]?? ) MATH_LIBS=-Wl,-lm ;; # avoid static libimf in shared libs +- esac ++ MATH_LIBS=-Wl,-lm # avoid static libimf in shared libs + ;; + + linux*:GCC ) + if test -r $srcdir/src/build-system/config.site.ncbi && test -d "$NCBI" + then + case "$compiler_version" in +- 5* ) CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 $CPPFLAGS" ;; ++ 5?? ) CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 $CPPFLAGS" ;; + esac + fi + ;; +@@ -9888,7 +9884,7 @@ esac + ### large file support (switch to AC_SYS_LARGEFILE?) + case "$host_os:$compiler:$compiler_version" in + cygwin* ) with_lfs=no ;; +- *:GCC:3[4-9]* | *:GCC:[4-9]* | *:ICC:[91]* ) : ${with_lfs=yes} ;; ++ *:GCC:* | *:ICC:* ) : ${with_lfs=yes} ;; + esac + + if test "$with_lfs" = "yes" ; then +@@ -9910,17 +9906,9 @@ wsrx="[$wschars]" + #### Flags to enable (potentially unsafe) extra optimization. + if test "$skip_fast_flags" = no -a -z "$DEF_FAST_FLAGS" ; then + case "$compiler:$compiler_version" in +- GCC:2* | GCC:344 ) +- # GCC 2.9x sometimes experiences internal errors at high optimization; +- # GCC 3.4.4 (at least on FreeBSD) meanwhile generates crashprone code. +- DEF_FAST_FLAGS="-O2" +- ;; + GCC:* ) + DEF_FAST_FLAGS="-O3 -finline-functions -fstrict-aliasing" +- case "$host_os:$host_cpu:$compiler_version" in +- freebsd* | solaris*:*86*:* | *:4[5-9]? | *:[5-9]?? ) ;; +- * ) DEF_FAST_FLAGS="$DEF_FAST_FLAGS -ffast-math" ;; +- esac ++ # DEF_FAST_FLAGS="$DEF_FAST_FLAGS -ffast-math" ;; + if test "$with_profiling" != "yes"; then + # incompatible with -pg + DEF_FAST_FLAGS="$DEF_FAST_FLAGS -fomit-frame-pointer" +@@ -9958,15 +9946,6 @@ if test "$skip_fast_flags" = no -a -z "$ + solaris* ) DEF_FAST_FLAGS="$DEF_FAST_FLAGS -fast $ARCH_CFLAGS" ;; + esac + ;; +- ICC:[1-8]?? ) +- DEF_FAST_FLAGS="-O2" +- ;; +- ICC:9?? ) +- DEF_FAST_FLAGS="-O3 -axP -ip" # optimized for Core or P4 w/SSE3 (max) +- ;; +- ICC:10?? ) +- DEF_FAST_FLAGS="-O3 -axT -ip" # Core 2 w/SSSE3; axS would cover SSE 4.1 +- ;; + ICC:* ) + # Core 2; ICC 11 goes up to SSE4.2 (i7), ICC 12 up to CORE-AVX-I + DEF_FAST_FLAGS="-O3 -axSSSE3 -ip" +@@ -10108,12 +10087,7 @@ echo "$as_me: error: Unable to find stat + ;; + GCC:* ) + # Need to specify runpath for compiler-provided libraries +- case $compiler_version in +- 30* ) major=3 ;; +- 31* ) major=4 ;; +- 3[23]*) major=5 ;; +- * ) major=6 ;; +- esac ++ major=6 # true for all supported versions at present + found=false + for f in libstdc++.so.$major libgcc_s.so.1 libstdc++.a; do + path=`$CXX $LDFLAGS -print-file-name=$f` +@@ -10294,9 +10268,6 @@ esac + if test "$compiler" = "GCC" ; then + CFLAGS="-Wall -Wno-format-y2k $CFLAGS" + CXXFLAGS="-Wall -Wno-format-y2k $CXXFLAGS" +- case "$compiler_version" in +- 2* ) CXXFLAGS="-ftemplate-depth-32 $CXXFLAGS" ;; +- esac + case "$host_os" in + solaris* ) CPPFLAGS="-D__EXTENSIONS__ $CPPFLAGS" ;; + irix* ) CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS" ;; +@@ -13214,13 +13185,11 @@ _ACEOF + ;; + linux* | *gnu* ) # | *bsd* + case "$compiler:$compiler_version" in +- ICC:9* | ICC:1??? ) ++ ICC:* ) + ncbi_cv_prog_cc_wl_no_asu=no + LIBS="$LIBS -lc" + C_LIBS="$C_LIBS -lc" + ;; +- ICC:* ) +- ;; + * ) + FORBID_UNDEF='-Wl,--no-undefined' + ;; +@@ -13963,7 +13932,7 @@ echo "$as_me: error: --with-max-debug=$w + echo " $LDFLAGS " | $EGREP_Q "$dbgrx1|$dbgrx2" || LDFLAGS="$LDFLAGS -g" + STRIP="@:" + case "$compiler:$compiler_version" in +- GCC:4[89]? | GCC:[5-9]? | GCC:???? ) ++ GCC:* ) + # GCC 4.8 defaults to DWARF 4, which Totalview for one + # can't handle; roll back to version 3 by default. + echo " $USER_CFLAGS " | $EGREP_Q "$dbgrx1|$dbgrx2" || \ +@@ -25344,10 +25313,6 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + # Avoid using unsupported (and noisily ignored) attributes. + case "$compiler:$compiler_version" in +- GCC:2* | GCC:3[01]* ) +- ncbi_cv_c_deprecation_syntax=none +- ncbi_cv_c_forceinline=inline +- ;; + VisualAge:* ) + ncbi_cv_c_forceinline=inline + ;; +@@ -25585,7 +25550,7 @@ _ACEOF + fi + + case "$compiler:$compiler_version $CFLAGS $CXXFLAGS" in +- GCC:[4-9]??\ *\ -fvisibility*|ICC:*\ -fvisibility* ) ;; ++ GCC:*\ *\ -fvisibility* | ICC:*\ -fvisibility* ) ;; + * ) ncbi_cv_c_attribute_visibility_default=unnecessary ;; + esac + +@@ -37178,7 +37143,7 @@ _ACEOF + # when using Boost at all. + BOOST_INCLUDE="$BOOST_INCLUDE -erroff=reftotemp" + ;; +- GCC*:4[7-9]* | GCC*:5*) ++ GCC*) + # Some portions of Boost also have a lot of "unused" typedefs + # from concept checking. + BOOST_INCLUDE="$BOOST_INCLUDE -Wno-unused-local-typedefs" +@@ -37221,6 +37186,7 @@ echo $ECHO_N "checking for Boost library + *:MSVC) BOOST_TAG="-vc" ;; + esac + case "$BOOST_TAG" in ++ # Still valid for version 10.x and up? + -*gcc|-il ) boost_comp_vers=`echo $compiler_version | cut -c1-2` ;; + * ) boost_comp_vers='' ;; + esac +--- a/c++/src/build-system/configure.ac ++++ b/c++/src/build-system/configure.ac +@@ -1257,9 +1257,10 @@ changequote(, )dnl + case "$compiler:$ncbi_compiler_ver" in + WorkShop*:?.?? ) ncbi_compiler_sed='s/\([0-9]\)\.\([0-9][0-9]\)/\1\20/' ;; + WorkShop*:[6-9].?) ncbi_compiler_sed='s/\([0-9]\)\.\([0-9\)/\10\20/' ;; +- ICC:??.? ) ncbi_compiler_sed='s/\([0-9][0-9]\)\.\([0-9]\)/\1\20/' ;; +- ICC:??.?.? | \ +- ICC:??.?.?.* ) ncbi_compiler_sed='s/\([0-9][0-9]\)\.\([0-9]\)\.\([0-9]\).*/\1\2\3/' ;; ++ [GI]CC:??.? ) ncbi_compiler_sed='s/\([0-9][0-9]\)\.\([0-9]\)/\1\20/' ;; ++ GCC:??.?.? | ICC:??.?.? | ICC:??.?.?.* ) ++ ncbi_compiler_sed='s/\([0-9][0-9]\)\.\([0-9]\)\.\([0-9]\).*/\1\2\3/' ;; ++ GCC:?? ) ncbi_compiler_sed='s/\([0-9][0-9]\)/\100/' ;; + *:?.?.?) ncbi_compiler_sed='s/\([0-9]\)\.\([0-9]\)\.\([0-9]\)/\1\2\3/' ;; + *:?.??*) ncbi_compiler_sed='s/\([0-9]\)\.\([0-9][0-9]\).*/\1\2/' ;; + *:?.?) ncbi_compiler_sed='s/\([0-9]\).\([0-9]\)/\1\20/' ;; +@@ -1287,7 +1288,7 @@ fi + AC_DEFINE_UNQUOTED(NCBI_COMPILER, "$ncbi_compiler", [Compiler name]) + AC_DEFINE_UNQUOTED(NCBI_COMPILER_$ncbi_compiler, 1, [Compiler name]) + AC_DEFINE_UNQUOTED(NCBI_COMPILER_VERSION, $ncbi_compiler_ver, +- [Compiler version as three-digit integer]) ++ [Compiler version as three- or four-digit integer]) + + + #### Additional check for pre-defined compilers +@@ -1407,10 +1408,7 @@ if test "$with_mt" != "no" ; then + # Will allegedly support -openmp at some point, but as of 3.4, + # just parses it as specifying an output filename: -o penmp. + else +- case "$compiler_version" in +- [[123]]?? | 4[[01]]? ) ;; +- * ) : ${OPENMP_FLAGS=-fopenmp} ;; +- esac ++ : ${OPENMP_FLAGS=-fopenmp} + fi + ;; + ICC ) +@@ -1462,16 +1460,14 @@ case "$host_os:$compiler" in + # "incomplete type is not allowed" should be an error, not a warning! + CFLAGS="-we70 $CFLAGS" + CXXFLAGS="-we70 $CXXFLAGS" +- case "$compiler_version" in +- 1[[1-9]]?? ) MATH_LIBS=-Wl,-lm ;; # avoid static libimf in shared libs +- esac ++ MATH_LIBS=-Wl,-lm # avoid static libimf in shared libs + ;; + + linux*:GCC ) + if test -r $srcdir/src/build-system/config.site.ncbi && test -d "$NCBI" + then + case "$compiler_version" in +- 5* ) CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 $CPPFLAGS" ;; ++ 5?? ) CPPFLAGS="-D_GLIBCXX_USE_CXX11_ABI=0 $CPPFLAGS" ;; + esac + fi + ;; +@@ -2046,7 +2042,7 @@ esac + ### large file support (switch to AC_SYS_LARGEFILE?) + case "$host_os:$compiler:$compiler_version" in + cygwin* ) with_lfs=no ;; +- *:GCC:3[[4-9]]* | *:GCC:[[4-9]]* | *:ICC:[[91]]* ) : ${with_lfs=yes} ;; ++ *:GCC:* | *:ICC:* ) : ${with_lfs=yes} ;; + esac + + if test "$with_lfs" = "yes" ; then +@@ -2068,17 +2064,9 @@ wsrx="[[$wschars]]" + #### Flags to enable (potentially unsafe) extra optimization. + if test "$skip_fast_flags" = no -a -z "$DEF_FAST_FLAGS" ; then + case "$compiler:$compiler_version" in +- GCC:2* | GCC:344 ) +- # GCC 2.9x sometimes experiences internal errors at high optimization; +- # GCC 3.4.4 (at least on FreeBSD) meanwhile generates crashprone code. +- DEF_FAST_FLAGS="-O2" +- ;; + GCC:* ) + DEF_FAST_FLAGS="-O3 -finline-functions -fstrict-aliasing" +- case "$host_os:$host_cpu:$compiler_version" in +- freebsd* | solaris*:*86*:* | *:4[[5-9]]? | *:[[5-9]]?? ) ;; +- * ) DEF_FAST_FLAGS="$DEF_FAST_FLAGS -ffast-math" ;; +- esac ++ # DEF_FAST_FLAGS="$DEF_FAST_FLAGS -ffast-math" ;; + if test "$with_profiling" != "yes"; then + # incompatible with -pg + DEF_FAST_FLAGS="$DEF_FAST_FLAGS -fomit-frame-pointer" +@@ -2116,15 +2104,6 @@ if test "$skip_fast_flags" = no -a -z "$ + solaris* ) DEF_FAST_FLAGS="$DEF_FAST_FLAGS -fast $ARCH_CFLAGS" ;; + esac + ;; +- ICC:[[1-8]]?? ) +- DEF_FAST_FLAGS="-O2" +- ;; +- ICC:9?? ) +- DEF_FAST_FLAGS="-O3 -axP -ip" # optimized for Core or P4 w/SSE3 (max) +- ;; +- ICC:10?? ) +- DEF_FAST_FLAGS="-O3 -axT -ip" # Core 2 w/SSSE3; axS would cover SSE 4.1 +- ;; + ICC:* ) + # Core 2; ICC 11 goes up to SSE4.2 (i7), ICC 12 up to CORE-AVX-I + DEF_FAST_FLAGS="-O3 -axSSSE3 -ip" +@@ -2225,12 +2204,7 @@ case "$compiler:$compiler_version:$with_ + ;; + GCC:* ) + # Need to specify runpath for compiler-provided libraries +- case $compiler_version in +- 30* ) major=3 ;; +- 31* ) major=4 ;; +- 3[[23]]*) major=5 ;; +- * ) major=6 ;; +- esac ++ major=6 # true for all supported versions at present + found=false + for f in libstdc++.so.$major libgcc_s.so.1 libstdc++.a; do + path=`$CXX $LDFLAGS -print-file-name=$f` +@@ -2388,9 +2362,6 @@ AC_SUBST(USUAL_AND_LIB) + if test "$compiler" = "GCC" ; then + CFLAGS="-Wall -Wno-format-y2k $CFLAGS" + CXXFLAGS="-Wall -Wno-format-y2k $CXXFLAGS" +- case "$compiler_version" in +- 2* ) CXXFLAGS="-ftemplate-depth-32 $CXXFLAGS" ;; +- esac + case "$host_os" in + solaris* ) CPPFLAGS="-D__EXTENSIONS__ $CPPFLAGS" ;; + irix* ) CXXFLAGS="$CXXFLAGS -D_LANGUAGE_C_PLUS_PLUS" ;; +@@ -3029,13 +3000,11 @@ case "$compiler" in + ;; + linux* | *gnu* ) # | *bsd* + case "$compiler:$compiler_version" in +- ICC:9* | ICC:1??? ) ++ ICC:* ) + ncbi_cv_prog_cc_wl_no_asu=no + LIBS="$LIBS -lc" + C_LIBS="$C_LIBS -lc" + ;; +- ICC:* ) +- ;; + * ) + FORBID_UNDEF='-Wl,--no-undefined' + ;; +@@ -3319,7 +3288,7 @@ changequote(, )dnl + echo " $LDFLAGS " | $EGREP_Q "$dbgrx1|$dbgrx2" || LDFLAGS="$LDFLAGS -g" + STRIP="@:" + case "$compiler:$compiler_version" in +- GCC:4[89]? | GCC:[5-9]? | GCC:???? ) ++ GCC:* ) + # GCC 4.8 defaults to DWARF 4, which Totalview for one + # can't handle; roll back to version 3 by default. + echo " $USER_CFLAGS " | $EGREP_Q "$dbgrx1|$dbgrx2" || \ +@@ -3929,10 +3898,6 @@ AC_LANG_POP(C) + + # Avoid using unsupported (and noisily ignored) attributes. + case "$compiler:$compiler_version" in +- GCC:2* | GCC:3[[01]]* ) +- ncbi_cv_c_deprecation_syntax=none +- ncbi_cv_c_forceinline=inline +- ;; + VisualAge:* ) + ncbi_cv_c_forceinline=inline + ;; +@@ -3985,7 +3950,7 @@ if test $ncbi_cv_c_attribute_destructor + fi + + case "$compiler:$compiler_version $CFLAGS $CXXFLAGS" in +- GCC:[[4-9]]??\ *\ -fvisibility*|ICC:*\ -fvisibility* ) ;; ++ GCC:*\ *\ -fvisibility* | ICC:*\ -fvisibility* ) ;; + * ) ncbi_cv_c_attribute_visibility_default=unnecessary ;; + esac + +@@ -5632,7 +5597,7 @@ ncbi_cv_lib_boost_version=\`get_BOOST_LI + # when using Boost at all. + BOOST_INCLUDE="$BOOST_INCLUDE -erroff=reftotemp" + ;; +- GCC*:4[[7-9]]* | GCC*:5*) ++ GCC*) + # Some portions of Boost also have a lot of "unused" typedefs + # from concept checking. + BOOST_INCLUDE="$BOOST_INCLUDE -Wno-unused-local-typedefs" +@@ -5672,6 +5637,7 @@ ncbi_cv_lib_boost_version=\`get_BOOST_LI + *:MSVC) BOOST_TAG="-vc" ;; + esac + case "$BOOST_TAG" in ++ # Still valid for version 10.x and up? + -*gcc|-il ) boost_comp_vers=`echo $compiler_version | cut -c1-2` ;; + * ) boost_comp_vers='' ;; + esac -- 2.30.2