google-cloud-cpp icon indicating copy to clipboard operation
google-cloud-cpp copied to clipboard

Upgrade builds to Fedora:39

Open coryan opened this issue 2 years ago • 2 comments

We need to upgrade the following files to use Fedora:39

  • [x] ci/cloudbuild/dockerfiles/fedora-latest-bazel.Dockerfile
  • [x] ci/cloudbuild/dockerfiles/fedora-latest-cmake.Dockerfile
  • [x] ci/cloudbuild/dockerfiles/fedora-latest-cxx14.Dockerfile
  • [x] ci/cloudbuild/dockerfiles/fedora-latest-cxx20.Dockerfile
  • [x] ci/cloudbuild/dockerfiles/fedora-latest-m32.Dockerfile
  • [ ] ci/cloudbuild/dockerfiles/fedora-latest-publish-docs.Dockerfile
  • [x] ci/cloudbuild/dockerfiles/fedora-latest-msan.Dockerfile

m32 is currently blocked because OpenTelemetry does not build.

coryan avatar Nov 08 '23 19:11 coryan

For the m32 build. It seems the std::to_string(double) overload is missing with 32-bits:

echo '#include <string>' | g++ -m32 -x c++   -E - | grep to_string
      _S_to_string_view(__sv_type __svt) noexcept
 : basic_string(_S_to_string_view(__t).substr(__pos, __n), __a) { }
 : basic_string(__sv_wrapper(_S_to_string_view(__t)), __a) { }
  to_string(int __val)
  to_string(unsigned __val)
  to_string(long __val)
  to_string(unsigned long __val)
  to_string(long long __val)
  to_string(unsigned long long __val)
echo '#include <string>' | g++  -x c++   -E - | grep to_string
      _S_to_string_view(__sv_type __svt) noexcept
 : basic_string(_S_to_string_view(__t).substr(__pos, __n), __a) { }
 : basic_string(__sv_wrapper(_S_to_string_view(__t)), __a) { }
  to_string(int __val)
  to_string(unsigned __val)
  to_string(long __val)
  to_string(unsigned long __val)
  to_string(long long __val)
  to_string(unsigned long long __val)
  to_string(float __val)
  to_string(double __val)
  to_string(long double __val)

I tracked this down to a missing #define in one of the configuration files:

find /usr/include/c++/13 -type f | xargs grep _GLIBCXX11_USE_C99_STDIO

/usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h:# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO
/usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h:/* #undef _GLIBCXX11_USE_C99_STDIO */
/usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h:# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO
/usr/include/c++/13/x86_64-redhat-linux/bits/c++config.h:#define _GLIBCXX11_USE_C99_STDIO 1

/usr/include/c++/13/x86_64-redhat-linux/32/bits/c++config.h:# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO
/usr/include/c++/13/x86_64-redhat-linux/32/bits/c++config.h:/* #undef _GLIBCXX11_USE_C99_STDIO */

It would be nice if we could write a simple repro and file a bug with Fedora (or GCC?)

coryan avatar Nov 10 '23 20:11 coryan

https://bugzilla.redhat.com/show_bug.cgi?id=2249136

coryan avatar Nov 10 '23 21:11 coryan