From f1c9cab841c5371a6224c2963e1a449c5289e8e5 Mon Sep 17 00:00:00 2001 From: Bronek Kozicki <brok@incorrekt.com> Date: Fri, 1 Dec 2023 05:46:06 +0000 Subject: [PATCH] Workarounds for gcc-13 compatibility (#4817) Workaround for compilation errors with gcc-13 and other compilers relying on `libstdc++` version 13. This is temporary until actual fix is available for us to use: https://github.com/boostorg/beast/pull/2682 Some boost.beast files (which we do use) rely on an old gcc-12 behaviour where `#include <cstdint>` was not needed even though types from this header were used. This was broken by a change in libstdc++ version 13: https://gcc.gnu.org/gcc-13/porting_to.html#header-dep-changes The necessary fix was implemented in boost.beast, however it is not yet available. Until it is available, we can use this workaround to enable compilation of `rippled` with gcc-13, clang-16, etc. --- src/ripple/app/misc/detail/Work.h | 4 ++++ src/ripple/beast/rfc2616.h | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/src/ripple/app/misc/detail/Work.h b/src/ripple/app/misc/detail/Work.h index 15be569566e..afd49adf326 100644 --- a/src/ripple/app/misc/detail/Work.h +++ b/src/ripple/app/misc/detail/Work.h @@ -20,6 +20,10 @@ #ifndef RIPPLE_APP_MISC_DETAIL_WORK_H_INCLUDED #define RIPPLE_APP_MISC_DETAIL_WORK_H_INCLUDED +// TODO: This include <cstdint> is a workaround for beast compilation bug. +// Remove when fix https://github.com/boostorg/beast/pull/2682/ is available. +#include <cstdint> + #include <boost/beast/http/message.hpp> #include <boost/beast/http/string_body.hpp> diff --git a/src/ripple/beast/rfc2616.h b/src/ripple/beast/rfc2616.h index 5aff5526a89..7f96e924eb5 100644 --- a/src/ripple/beast/rfc2616.h +++ b/src/ripple/beast/rfc2616.h @@ -20,11 +20,16 @@ #ifndef BEAST_RFC2616_HPP #define BEAST_RFC2616_HPP +// TODO: This include <cstdint> is a workaround for beast compilation bug. +// Remove when fix https://github.com/boostorg/beast/pull/2682/ is available. +#include <cstdint> + #include <boost/beast/http/message.hpp> #include <boost/beast/http/rfc7230.hpp> #include <boost/range/algorithm/equal.hpp> #include <boost/range/iterator_range.hpp> #include <boost/utility/string_ref.hpp> + #include <algorithm> #include <cctype> #include <iterator>