Skip to content

[R][C++] Passing builds on (unreleased) GCC 15 #45096

@jonkeane

Description

@jonkeane

Describe the enhancement requested

I've received the email from CRAN and we have until 2024-01-14 to send an update to CRAN that fixes the issues they are seeing building on the (yes, I know unreleased) GCC 15. It looks like the issue is with building thrift (it's possible this is already resolved upstream and we can bump the dependency version to fix it), but there might be more later in the build too that would be uncovered after that. I started trying to get a CI job with something like this running in #44970 though that never actually succeeded.

cc @kou and @pitrou who might have ideas on this

make[7]: Leaving directory '/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep-build'
make[6]: Leaving directory '/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep-build'
make[5]: Leaving directory '/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep-build'

-- stderr output is:
...skipping to end...
sr/local/gcc15/include/c++/15.0.0/bits/stl_iterator_base_types.h:129:34:�[m�[K �[01;36m�[Knote: �[m�[Kdeclared here
  129 |     struct _GLIBCXX17_DEPRECATED �[01;36m�[Kiterator�[m�[K
      |                                  �[01;36m�[K^~~~~~~~�[m�[K
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:�[m�[K In constructor '�[01m�[Kapache::thrift::transport::SSLContext::�[01;32m�[KSSLContext�[m�[K(const apache::thrift::transport::SSLProtocol&)�[m�[K':
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:185:36:�[m�[K �[01;35m�[Kwarning: �[m�[K'�[01m�[Kconst SSL_METHOD*�[01;32m�[K TLSv1_method�[m�[K()�[m�[K' is deprecated: Since OpenSSL 1.1.0 [�[01;35m�[K-Wdeprecated-declarations�[m�[K]
  185 |     ctx_ = SSL_CTX_new(�[01;35m�[KTLSv1_method()�[m�[K);
      |                        �[01;35m�[K~~~~~~~~~~~~^~�[m�[K
In file included from �[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:53�[m�[K:
�[01m�[K/usr/include/openssl/ssl.h:2020:50:�[m�[K �[01;36m�[Knote: �[m�[Kdeclared here
 2020 | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *�[01;36m�[KTLSv1_method�[m�[K(void); /* TLSv1.0 */
      |                                                  �[01;36m�[K^~~~~~~~~~~~�[m�[K
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:187:38:�[m�[K �[01;35m�[Kwarning: �[m�[K'�[01m�[Kconst SSL_METHOD*�[01;32m�[K TLSv1_1_method�[m�[K()�[m�[K' is deprecated: Since OpenSSL 1.1.0 [�[01;35m�[K-Wdeprecated-declarations�[m�[K]
  187 |     ctx_ = SSL_CTX_new(�[01;35m�[KTLSv1_1_method()�[m�[K);
      |                        �[01;35m�[K~~~~~~~~~~~~~~^~�[m�[K
�[01m�[K/usr/include/openssl/ssl.h:2028:50:�[m�[K �[01;36m�[Knote: �[m�[Kdeclared here
 2028 | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *�[01;36m�[KTLSv1_1_method�[m�[K(void); /* TLSv1.1 */
      |                                                  �[01;36m�[K^~~~~~~~~~~~~~�[m�[K
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:189:38:�[m�[K �[01;35m�[Kwarning: �[m�[K'�[01m�[Kconst SSL_METHOD*�[01;32m�[K TLSv1_2_method�[m�[K()�[m�[K' is deprecated: Since OpenSSL 1.1.0 [�[01;35m�[K-Wdeprecated-declarations�[m�[K]
  189 |     ctx_ = SSL_CTX_new(�[01;35m�[KTLSv1_2_method()�[m�[K);
      |                        �[01;35m�[K~~~~~~~~~~~~~~^~�[m�[K
�[01m�[K/usr/include/openssl/ssl.h:2036:50:�[m�[K �[01;36m�[Knote: �[m�[Kdeclared here
 2036 | OSSL_DEPRECATEDIN_1_1_0 __owur const SSL_METHOD *�[01;36m�[KTLSv1_2_method�[m�[K(void); /* TLSv1.2 */
      |                                                  �[01;36m�[K^~~~~~~~~~~~~~�[m�[K
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:�[m�[K In member function '�[01m�[Kvirtual void apache::thrift::transport::TSSLSocket::�[01;32m�[Kauthorize�[m�[K()�[m�[K':
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:758:43:�[m�[K �[01;35m�[Kwarning: �[m�[K'�[01m�[Kunsigned char*�[01;32m�[K ASN1_STRING_data�[m�[K(ASN1_STRING*)�[m�[K' is deprecated: Since OpenSSL 1.1.0 [�[01;35m�[K-Wdeprecated-declarations�[m�[K]
  758 |       char* data = (char*)�[01;35m�[KASN1_STRING_data(name->d.ia5)�[m�[K;
      |                           �[01;35m�[K~~~~~~~~~~~~~~~~^~~~~~~~~~~~~�[m�[K
In file included from �[01m�[K/usr/include/openssl/objects.h:21�[m�[K,
                 from �[01m�[K/usr/include/openssl/evp.h:43�[m�[K,
                 from �[01m�[K/usr/include/openssl/rand.h:23�[m�[K,
                 from �[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:52�[m�[K:
�[01m�[K/usr/include/openssl/asn1.h:680:40:�[m�[K �[01;36m�[Knote: �[m�[Kdeclared here
  680 | OSSL_DEPRECATEDIN_1_1_0 unsigned char *�[01;36m�[KASN1_STRING_data�[m�[K(ASN1_STRING *x);
      |                                        �[01;36m�[K^~~~~~~~~~~~~~~~�[m�[K
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:�[m�[K At global scope:
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:111:13:�[m�[K �[01;35m�[Kwarning: �[m�[K'�[01m�[Kvoid apache::thrift::transport::�[01;32m�[Kdyn_destroy�[m�[K(CRYPTO_dynlock_value*, const char*, int)�[m�[K' defined but not used [�[01;35m�[K-Wunused-function�[m�[K]
  111 | static void �[01;35m�[Kdyn_destroy�[m�[K(struct CRYPTO_dynlock_value* lock, const char*, int) {
      |             �[01;35m�[K^~~~~~~~~~~�[m�[K
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:101:13:�[m�[K �[01;35m�[Kwarning: �[m�[K'�[01m�[Kvoid apache::thrift::transport::�[01;32m�[Kdyn_lock�[m�[K(int, CRYPTO_dynlock_value*, const char*, int)�[m�[K' defined but not used [�[01;35m�[K-Wunused-function�[m�[K]
  101 | static void �[01;35m�[Kdyn_lock�[m�[K(int mode, struct CRYPTO_dynlock_value* lock, const char*, int) {
      |             �[01;35m�[K^~~~~~~~�[m�[K
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:97:30:�[m�[K �[01;35m�[Kwarning: �[m�[K'�[01m�[KCRYPTO_dynlock_value* apache::thrift::transport::�[01;32m�[Kdyn_create�[m�[K(const char*, int)�[m�[K' defined but not used [�[01;35m�[K-Wunused-function�[m�[K]
   97 | static CRYPTO_dynlock_value* �[01;35m�[Kdyn_create�[m�[K(const char*, int) {
      |                              �[01;35m�[K^~~~~~~~~~�[m�[K
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLSocket.cpp:76:13:�[m�[K �[01;35m�[Kwarning: �[m�[K'�[01m�[Kvoid apache::thrift::transport::�[01;32m�[KcallbackLocking�[m�[K(int, int, const char*, int)�[m�[K' defined but not used [�[01;35m�[K-Wunused-function�[m�[K]
   76 | static void �[01;35m�[KcallbackLocking�[m�[K(int mode, int n, const char*, int) {
      |             �[01;35m�[K^~~~~~~~~~~~~~~�[m�[K
In file included from �[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TServerSocket.h:25�[m�[K,
                 from �[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLServerSocket.h:23�[m�[K,
                 from �[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TSSLServerSocket.cpp:21�[m�[K:
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/concurrency/Mutex.h:47:26:�[m�[K �[01;31m�[Kerror: �[m�[K'�[01m�[Kint64_t�[m�[K' has not been declared
   47 |   virtual bool timedlock(�[01;31m�[Kint64_t�[m�[K milliseconds) const;
      |                          �[01;31m�[K^~~~~~~�[m�[K
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/concurrency/Mutex.h:25:1:�[m�[K �[01;36m�[Knote: �[m�[K'�[01m�[Kint64_t�[m�[K' is defined in header '�[01m�[K<cstdint>�[m�[K'; this is probably fixable by adding '�[01m�[K#include <cstdint>�[m�[K'
   24 | #include <thrift/TNonCopyable.h>
  +++ |+�[32m�[K#include <cstdint>�[m�[K
   25 | 
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/concurrency/Mutex.h:60:29:�[m�[K �[01;31m�[Kerror: �[m�[K'�[01m�[Kint64_t�[m�[K' has not been declared
   60 |   Guard(const Mutex& value, �[01;31m�[Kint64_t�[m�[K timeout = 0) : mutex_(&value) {
      |                             �[01;31m�[K^~~~~~~�[m�[K
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/concurrency/Mutex.h:60:29:�[m�[K �[01;36m�[Knote: �[m�[K'�[01m�[Kint64_t�[m�[K' is defined in header '�[01m�[K<cstdint>�[m�[K'; this is probably fixable by adding '�[01m�[K#include <cstdint>�[m�[K'
In file included from �[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TTransport.h:23�[m�[K,
                 from �[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TServerTransport.h:23�[m�[K,
                 from �[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TServerSocket.h:27�[m�[K:
�[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/Thrift.h:54:19:�[m�[K �[01;35m�[Kwarning: �[m�[K'�[01m�[Ktemplate<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator�[m�[K' is deprecated [�[01;35m�[K-Wdeprecated-declarations�[m�[K]
   54 |     : public std::�[01;35m�[Kiterator�[m�[K<std::forward_iterator_tag, std::pair<int, const char*> > {
      |                   �[01;35m�[K^~~~~~~~�[m�[K
In file included from �[01m�[K/usr/local/gcc15/include/c++/15.0.0/bits/stl_algobase.h:65�[m�[K,
                 from �[01m�[K/usr/local/gcc15/include/c++/15.0.0/bits/hashtable_policy.h:36�[m�[K,
                 from �[01m�[K/usr/local/gcc15/include/c++/15.0.0/bits/hashtable.h:37�[m�[K,
                 from �[01m�[K/usr/local/gcc15/include/c++/15.0.0/bits/unordered_map.h:33�[m�[K,
                 from �[01m�[K/usr/local/gcc15/include/c++/15.0.0/unordered_map:43�[m�[K,
                 from �[01m�[K/usr/local/gcc15/include/c++/15.0.0/functional:65�[m�[K,
                 from �[01m�[K/tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep/lib/cpp/src/thrift/transport/TServerSocket.h:23�[m�[K:
�[01m�[K/usr/local/gcc15/include/c++/15.0.0/bits/stl_iterator_base_types.h:129:34:�[m�[K �[01;36m�[Knote: �[m�[Kdeclared here
  129 |     struct _GLIBCXX17_DEPRECATED �[01;36m�[Kiterator�[m�[K
      |                                  �[01;36m�[K^~~~~~~~�[m�[K
make[7]: *** [lib/cpp/CMakeFiles/thrift.dir/build.make:580: lib/cpp/CMakeFiles/thrift.dir/src/thrift/transport/TSSLServerSocket.cpp.o] Error 1
make[6]: *** [CMakeFiles/Makefile2:152: lib/cpp/CMakeFiles/thrift.dir/all] Error 2
make[5]: *** [Makefile:156: all] Error 2

�[31mCMake Error at /tmp/Rtmp2lHvYG/file386a7a7398879e/thrift_ep-prefix/src/thrift_ep-stamp/thrift_ep-build-RELEASE.cmake:47 (message):
  Stopping after outputting logs.

�[0m
make[4]: *** [CMakeFiles/thrift_ep.dir/build.make:86: thrift_ep-prefix/src/thrift_ep-stamp/thrift_ep-build] Error 1
make[4]: Leaving directory '/tmp/Rtmp2lHvYG/file386a7a7398879e'
make[3]: *** [CMakeFiles/Makefile2:878: CMakeFiles/thrift_ep.dir/all] Error 2
make[3]: *** Waiting for unfinished jobs....
-- re2_ep build command succeeded.  See also /tmp/Rtmp2lHvYG/file386a7a7398879e/re2_ep-prefix/src/re2_ep-stamp/re2_ep-build-*.log
[ 11%] �[34m�[1mPerforming install step for 're2_ep'�[0m
-- re2_ep install command succeeded.  See also /tmp/Rtmp2lHvYG/file386a7a7398879e/re2_ep-prefix/src/re2_ep-stamp/re2_ep-install-*.log
[ 11%] �[34m�[1mCompleted 're2_ep'�[0m
make[4]: Leaving directory '/tmp/Rtmp2lHvYG/file386a7a7398879e'
[ 11%] Built target re2_ep
make[3]: Leaving directory '/tmp/Rtmp2lHvYG/file386a7a7398879e'
gmake[2]: *** [Makefile:146: all] Error 2
gmake[2]: Leaving directory '/tmp/Rtmp2lHvYG/file386a7a7398879e'
**** Complete build log may still be present at /tmp/Rtmp2lHvYG/file386a7a64b3a05b.log 
*** Failed to find Arrow C++ libraries.

Full logs: https://www.stats.ox.ac.uk/pub/bdr/gcc15/arrow.out

Component(s)

C++, R

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions