Skip to content

Commit

Permalink
Merge bitcoin/bitcoin#30834: test: Work around boost compilation error
Browse files Browse the repository at this point in the history
fa9d7d5 test: Work around boost compilation error (MarcoFalke)
fa3ecdf Revert "build: work around issue with Boost <= 1.80 and Clang >= 18" (MarcoFalke)

Pull request description:

  There seems to be an issue compiling the `chainstatemanager_rebalance_caches` test case with some specific versions of Boost in combination with some specific versions of Clang. For example, Boost 1.74 may fail in combination with Clang 18. [1]

  The error stems from a mixed-type closeness comparison. Given that the comparison is using floating point, and isn't meant to be exact, work around the compile error by ensuring both sides of the comparison are using the same type (`double`).

  This also allows to drop a previous workaround.

  [1] Error:

  ```
  In file included from /usr/include/boost/mpl/integral_c.hpp:32:
  /usr/include/boost/mpl/aux_/integral_wrapper.hpp:73:31: error: integer value -1 is outside the valid range of values [0, 3] for the enumeration type 'udt_builtin_mixture_enum' [-Wenum-constexpr-conversion]
     73 |     typedef AUX_WRAPPER_INST( BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (value - 1)) ) prior;
        |                               ^
  /usr/include/boost/mpl/aux_/static_cast.hpp:24:47: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST'
     24 | #   define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
        |                                               ^
  In file included from ../../../src/test/validation_chainstatemanager_tests.cpp:8:
  In file included from ../../../src/node/chainstatemanager_args.h:9:
  In file included from ../../../src/validation.h:28:
  In file included from ../../../src/txmempool.h:26:
  In file included from /usr/include/boost/multi_index/hashed_index.hpp:38:
  In file included from /usr/include/boost/multi_index/detail/node_handle.hpp:22:
  In file included from /usr/include/boost/multi_index_container_fwd.hpp:18:
  In file included from /usr/include/boost/multi_index/indexed_by.hpp:17:
  In file included from /usr/include/boost/mpl/vector.hpp:36:
  In file included from /usr/include/boost/mpl/vector/vector20.hpp:18:
  In file included from /usr/include/boost/mpl/vector/vector10.hpp:18:
  In file included from /usr/include/boost/mpl/vector/vector0.hpp:24:
  In file included from /usr/include/boost/mpl/vector/aux_/clear.hpp:18:
  In file included from /usr/include/boost/mpl/vector/aux_/vector0.hpp:22:
  In file included from /usr/include/boost/mpl/vector/aux_/iterator.hpp:19:
  In file included from /usr/include/boost/mpl/plus.hpp:19:
  In file included from /usr/include/boost/mpl/aux_/arithmetic_op.hpp:17:
  In file included from /usr/include/boost/mpl/integral_c.hpp:32:
  /usr/include/boost/mpl/aux_/integral_wrapper.hpp:73:31: error: integer value -1 is outside the valid range of values [0, 3] for the enumeration type 'int_float_mixture_enum' [-Wenum-constexpr-conversion]
  /usr/include/boost/mpl/aux_/static_cast.hpp:24:47: note: expanded from macro 'BOOST_MPL_AUX_STATIC_CAST'
     24 | #   define BOOST_MPL_AUX_STATIC_CAST(T, expr) static_cast<T>(expr)
        |                                               ^
  2 errors generated.

ACKs for top commit:
  hebasto:
    ACK fa9d7d5.
  fanquake:
    ACK fa9d7d5

Tree-SHA512: 4964b23162f2351c7d3cf7e9efa7860d62f3b6717c3cc5be967d286f1ddb3539c2637247c79aa83123d36ff111ba77df22be2a25487ddd94dc1321d5e751dc70
  • Loading branch information
fanquake committed Sep 6, 2024
2 parents bbf95c0 + fa9d7d5 commit a5fa907
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 14 deletions.
8 changes: 4 additions & 4 deletions src/test/validation_chainstatemanager_tests.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,10 +155,10 @@ BOOST_FIXTURE_TEST_CASE(chainstatemanager_rebalance_caches, TestChain100Setup)
manager.MaybeRebalanceCaches();
}

BOOST_CHECK_CLOSE(c1.m_coinstip_cache_size_bytes, max_cache * 0.05, 1);
BOOST_CHECK_CLOSE(c1.m_coinsdb_cache_size_bytes, max_cache * 0.05, 1);
BOOST_CHECK_CLOSE(c2.m_coinstip_cache_size_bytes, max_cache * 0.95, 1);
BOOST_CHECK_CLOSE(c2.m_coinsdb_cache_size_bytes, max_cache * 0.95, 1);
BOOST_CHECK_CLOSE(double(c1.m_coinstip_cache_size_bytes), max_cache * 0.05, 1);
BOOST_CHECK_CLOSE(double(c1.m_coinsdb_cache_size_bytes), max_cache * 0.05, 1);
BOOST_CHECK_CLOSE(double(c2.m_coinstip_cache_size_bytes), max_cache * 0.95, 1);
BOOST_CHECK_CLOSE(double(c2.m_coinsdb_cache_size_bytes), max_cache * 0.95, 1);
}

struct SnapshotTestSetup : TestChain100Setup {
Expand Down
10 changes: 0 additions & 10 deletions src/txmempool.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,17 +23,7 @@
#include <util/result.h>
#include <util/feefrac.h>

// This works around a bug in Boost <= 1.80.0 when using Clang >=18.
// See https://github.com/bitcoin/bitcoin/issues/30751.
#if defined(__clang__)
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wenum-constexpr-conversion"
#endif
#include <boost/multi_index/hashed_index.hpp>
#if defined(__clang__)
#pragma clang diagnostic pop
#endif

#include <boost/multi_index/identity.hpp>
#include <boost/multi_index/indexed_by.hpp>
#include <boost/multi_index/ordered_index.hpp>
Expand Down

0 comments on commit a5fa907

Please sign in to comment.