Skip to content

Commit

Permalink
Merge pull request libbitcoin#1415 from evoskuil/master
Browse files Browse the repository at this point in the history
Add checkpoint tests against std::less<>.
  • Loading branch information
evoskuil authored Mar 6, 2024
2 parents 9bfcd25 + f744e8b commit 6437bcb
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 113 deletions.
36 changes: 18 additions & 18 deletions builds/cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -45,71 +45,71 @@ set( CMAKE_CXX_STANDARD_REQUIRED ON )
# Warn on all stuff.
check_cxx_compiler_flag( "-Wall" HAS_FLAG_WALL )
if ( HAS_FLAG_WALL )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-Wall> )
add_compile_options( "-Wall" )
else()
message( FATAL_ERROR "Compiler does not support -Wall" )
endif()

# Warn on extra stuff.
check_cxx_compiler_flag( "-Wextra" HAS_FLAG_WEXTRA )
if ( HAS_FLAG_WEXTRA )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-Wextra> )
add_compile_options( "-Wextra" )
else()
message( FATAL_ERROR "Compiler does not support -Wextra" )
endif()

# Disallow warning on style order of declarations.
check_cxx_compiler_flag( "-Wno-reorder" HAS_FLAG_WNO-REORDER )
if ( HAS_FLAG_WNO-REORDER )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-Wno-reorder> )
add_compile_options( "-Wno-reorder" )
else()
message( FATAL_ERROR "Compiler does not support -Wno-reorder" )
endif()

# Suppress warning for incomplete field initialization.
check_cxx_compiler_flag( "-Wno-missing-field-initializers" HAS_FLAG_WNO-MISSING-FIELD-INITIALIZERS )
if ( HAS_FLAG_WNO-MISSING-FIELD-INITIALIZERS )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-Wno-missing-field-initializers> )
add_compile_options( "-Wno-missing-field-initializers" )
else()
message( FATAL_ERROR "Compiler does not support -Wno-missing-field-initializers" )
endif()

# Conform to style.
check_cxx_compiler_flag( "-Wno-missing-braces" HAS_FLAG_WNO-MISSING-BRACES )
if ( HAS_FLAG_WNO-MISSING-BRACES )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-Wno-missing-braces> )
add_compile_options( "-Wno-missing-braces" )
else()
message( FATAL_ERROR "Compiler does not support -Wno-missing-braces" )
endif()

# Ignore comments within comments or commenting of backslash extended lines.
check_cxx_compiler_flag( "-Wno-comment" HAS_FLAG_WNO-COMMENT )
if ( HAS_FLAG_WNO-COMMENT )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-Wno-comment> )
add_compile_options( "-Wno-comment" )
else()
message( FATAL_ERROR "Compiler does not support -Wno-comment" )
endif()

# Suppress warning for copy of implicitly generated copy constructor.
check_cxx_compiler_flag( "-Wno-deprecated-copy" HAS_FLAG_WNO-DEPRECATED-COPY )
if ( HAS_FLAG_WNO-DEPRECATED-COPY )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-Wno-deprecated-copy> )
add_compile_options( "-Wno-deprecated-copy" )
else()
message( FATAL_ERROR "Compiler does not support -Wno-deprecated-copy" )
endif()

# Suppress warning for ignored attributes (arising on template arguments).
check_cxx_compiler_flag( "-Wno-ignored-attributes" HAS_FLAG_WNO-IGNORED-ATTRIBUTES )
if ( HAS_FLAG_WNO-IGNORED-ATTRIBUTES )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-Wno-ignored-attributes> )
add_compile_options( "-Wno-ignored-attributes" )
else()
message( FATAL_ERROR "Compiler does not support -Wno-ignored-attributes" )
endif()

# Allow use of C99 'long long' type.
check_cxx_compiler_flag( "-Wno-long-long" HAS_FLAG_WNO-LONG-LONG )
if ( HAS_FLAG_WNO-LONG-LONG )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-Wno-long-long> )
add_compile_options( "-Wno-long-long" )
else()
message( FATAL_ERROR "Compiler does not support -Wno-long-long" )
endif()
Expand All @@ -118,7 +118,7 @@ endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
check_cxx_compiler_flag( "-Wno-mismatched-tags" HAS_FLAG_WNO-MISMATCHED-TAGS )
if ( HAS_FLAG_WNO-MISMATCHED-TAGS )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-Wno-mismatched-tags> )
add_compile_options( "-Wno-mismatched-tags" )
else()
message( FATAL_ERROR "Compiler does not support -Wno-mismatched-tags" )
endif()
Expand All @@ -128,7 +128,7 @@ endif()
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
check_cxx_compiler_flag( "-fno-var-tracking-assignments" HAS_FLAG_FNO-VAR-TRACKING-ASSIGNMENTS )
if ( HAS_FLAG_FNO-VAR-TRACKING-ASSIGNMENTS )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-fno-var-tracking-assignments> )
add_compile_options( "-fno-var-tracking-assignments" )
else()
message( FATAL_ERROR "Compiler does not support -fno-var-tracking-assignments" )
endif()
Expand Down Expand Up @@ -192,8 +192,8 @@ if (enable-avx2)
check_cxx_compiler_flag("-mavx -mavx2" HAS_FLAGS_AVX2)

if (HAS_FLAGS_AVX2)
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-mavx> )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-mavx2> )
add_compile_options( "-mavx" )
add_compile_options( "-mavx2" )
set( CMAKE_REQUIRED_FLAGS_PREV "${CMAKE_REQUIRED_FLAGS}" )
set( CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -mavx -mavx2" )
endif()
Expand Down Expand Up @@ -221,8 +221,8 @@ if (enable-avx512)
check_cxx_compiler_flag("-mavx512f -mavx512bw" HAS_FLAGS_AVX512)

if (HAS_FLAGS_AVX512)
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-mavx512f> )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-mavx512bw> )
add_compile_options( "-mavx512f" )
add_compile_options( "-mavx512bw" )
set( CMAKE_REQUIRED_FLAGS_PREV "${CMAKE_REQUIRED_FLAGS}" )
set( CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -mavx512f -mavx512bw" )
endif()
Expand Down Expand Up @@ -250,8 +250,8 @@ if (enable-shani)
check_cxx_compiler_flag("-msse4 -msha" HAS_FLAGS_SHANI)

if (HAS_FLAGS_SHANI)
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-msse4> )
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-msha> )
add_compile_options( "-msse4" )
add_compile_options( "-msha" )
set( CMAKE_REQUIRED_FLAGS_PREV "${CMAKE_REQUIRED_FLAGS}" )
set( CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -msse4 -msha" )
endif()
Expand Down Expand Up @@ -281,7 +281,7 @@ if (enable-sse4)
check_cxx_compiler_flag("-msse4.1" HAS_FLAGS_SSE4)

if (HAS_FLAGS_SSE4)
add_compile_options( $<$<COMPILE_LANGUAGE:CXX>:-msse4.1> )
add_compile_options( "-msse4.1" )
set( CMAKE_REQUIRED_FLAGS_PREV "${CMAKE_REQUIRED_FLAGS}" )
set( CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -msse4.1" )
endif()
Expand Down
4 changes: 2 additions & 2 deletions builds/cmake/CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@
"description": "Factored size optimization settings.",
"hidden": true,
"cacheVariables": {
"CMAKE_C_FLAGS": "$env{CMAKE_C_FLAGS} -Os",
"CMAKE_CXX_FLAGS": "$env{CMAKE_CXX_FLAGS} -Os"
"CMAKE_C_FLAGS": "$env{CMAKE_C_FLAGS} -Os -s",
"CMAKE_CXX_FLAGS": "$env{CMAKE_CXX_FLAGS} -Os -s"
}
},
{
Expand Down
31 changes: 0 additions & 31 deletions install-cmake.sh
Original file line number Diff line number Diff line change
Expand Up @@ -854,12 +854,7 @@ build_from_tarball_boost()
display_message "BOOST_OPTIONS : $*"
display_message "--------------------------------------------------------------------"

guessed_toolset=`./tools/build/src/engine/build.sh --guess-toolset`
CXXFLAGS="-w" ./tools/build/src/engine/build.sh ${guessed_toolset} --cxxflags="-w"
cp tools/build/src/engine/b2 .

./bootstrap.sh \
"--with-bjam=./b2" \
"--prefix=$PREFIX" \
"--with-icu=$ICU_PREFIX"

Expand All @@ -877,7 +872,6 @@ build_from_tarball_boost()
"$BOOST_CXXFLAGS" \
"$BOOST_LINKFLAGS" \
"link=$BOOST_LINK" \
"warnings=off" \
"boost.locale.iconv=$BOOST_ICU_ICONV" \
"boost.locale.posix=$BOOST_ICU_POSIX" \
"-sNO_BZIP2=1" \
Expand All @@ -901,22 +895,11 @@ build_from_tarball_boost()
build_all()
{
unpack_from_tarball "$ICU_ARCHIVE" "$ICU_URL" gzip "$BUILD_ICU"
local SAVE_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS ${ICU_FLAGS[@]}"
build_from_tarball "$ICU_ARCHIVE" source "$PARALLEL" "$BUILD_ICU" "${ICU_OPTIONS[@]}" $CUMULATIVE_FILTERED_ARGS
export CPPFLAGS=$SAVE_CPPFLAGS
unpack_from_tarball "$BOOST_ARCHIVE" "$BOOST_URL" bzip2 "$BUILD_BOOST"
local SAVE_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS ${BOOST_FLAGS[@]}"
build_from_tarball_boost "$BOOST_ARCHIVE" "$PARALLEL" "$BUILD_BOOST" "${BOOST_OPTIONS[@]}"
export CPPFLAGS=$SAVE_CPPFLAGS
create_from_github libbitcoin secp256k1 version8 "yes"
local SAVE_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS ${SECP256K1_FLAGS[@]}"
build_from_github secp256k1 "$PARALLEL" false "yes" "${SECP256K1_OPTIONS[@]}" $CUMULATIVE_FILTERED_ARGS
export CPPFLAGS=$SAVE_CPPFLAGS
local SAVE_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS ${BITCOIN_SYSTEM_FLAGS[@]}"
if [[ ! ($CI == true) ]]; then
create_from_github libbitcoin libbitcoin-system master "yes"
build_from_github_cmake libbitcoin-system "$PARALLEL" true "yes" "${BITCOIN_SYSTEM_OPTIONS[@]}" $CUMULATIVE_FILTERED_ARGS_CMAKE "$@"
Expand All @@ -927,7 +910,6 @@ build_all()
pop_directory
pop_directory
fi
export CPPFLAGS=$SAVE_CPPFLAGS
}


Expand All @@ -949,19 +931,6 @@ set_with_boost_prefix

remove_install_options

# Define build flags.
#==============================================================================
# Define icu flags.
#------------------------------------------------------------------------------
ICU_FLAGS=(
"-w")

# Define secp256k1 flags.
#------------------------------------------------------------------------------
SECP256K1_FLAGS=(
"-w")


# Define build options.
#==============================================================================
# Define icu options.
Expand Down
31 changes: 0 additions & 31 deletions install-cmakepresets.sh
Original file line number Diff line number Diff line change
Expand Up @@ -924,12 +924,7 @@ build_from_tarball_boost()
display_message "BOOST_OPTIONS : $*"
display_message "--------------------------------------------------------------------"

guessed_toolset=`./tools/build/src/engine/build.sh --guess-toolset`
CXXFLAGS="-w" ./tools/build/src/engine/build.sh ${guessed_toolset} --cxxflags="-w"
cp tools/build/src/engine/b2 .

./bootstrap.sh \
"--with-bjam=./b2" \
"--prefix=$PREFIX" \
"--with-icu=$ICU_PREFIX"

Expand All @@ -947,7 +942,6 @@ build_from_tarball_boost()
"$BOOST_CXXFLAGS" \
"$BOOST_LINKFLAGS" \
"link=$BOOST_LINK" \
"warnings=off" \
"boost.locale.iconv=$BOOST_ICU_ICONV" \
"boost.locale.posix=$BOOST_ICU_POSIX" \
"-sNO_BZIP2=1" \
Expand All @@ -971,22 +965,11 @@ build_from_tarball_boost()
build_all()
{
unpack_from_tarball "$ICU_ARCHIVE" "$ICU_URL" gzip "$BUILD_ICU"
local SAVE_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS ${ICU_FLAGS[@]}"
build_from_tarball "$ICU_ARCHIVE" source "$PARALLEL" "$BUILD_ICU" "${ICU_OPTIONS[@]}" $CUMULATIVE_FILTERED_ARGS
export CPPFLAGS=$SAVE_CPPFLAGS
unpack_from_tarball "$BOOST_ARCHIVE" "$BOOST_URL" bzip2 "$BUILD_BOOST"
local SAVE_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS ${BOOST_FLAGS[@]}"
build_from_tarball_boost "$BOOST_ARCHIVE" "$PARALLEL" "$BUILD_BOOST" "${BOOST_OPTIONS[@]}"
export CPPFLAGS=$SAVE_CPPFLAGS
create_from_github libbitcoin secp256k1 version8 "yes"
local SAVE_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS ${SECP256K1_FLAGS[@]}"
build_from_github secp256k1 "$PARALLEL" false "yes" "${SECP256K1_OPTIONS[@]}" $CUMULATIVE_FILTERED_ARGS
export CPPFLAGS=$SAVE_CPPFLAGS
local SAVE_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS ${BITCOIN_SYSTEM_FLAGS[@]}"
if [[ ! ($CI == true) ]]; then
create_from_github libbitcoin libbitcoin-system master "yes"
display_message "libbitcoin-system PRESET ${REPO_PRESET[libbitcoin-system]}"
Expand All @@ -999,7 +982,6 @@ build_all()
pop_directory
pop_directory
fi
export CPPFLAGS=$SAVE_CPPFLAGS
}


Expand All @@ -1021,19 +1003,6 @@ set_with_boost_prefix

remove_install_options

# Define build flags.
#==============================================================================
# Define icu flags.
#------------------------------------------------------------------------------
ICU_FLAGS=(
"-w")

# Define secp256k1 flags.
#------------------------------------------------------------------------------
SECP256K1_FLAGS=(
"-w")


# Define build options.
#==============================================================================
# Define icu options.
Expand Down
31 changes: 0 additions & 31 deletions install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -729,12 +729,7 @@ build_from_tarball_boost()
display_message "BOOST_OPTIONS : $*"
display_message "--------------------------------------------------------------------"

guessed_toolset=`./tools/build/src/engine/build.sh --guess-toolset`
CXXFLAGS="-w" ./tools/build/src/engine/build.sh ${guessed_toolset} --cxxflags="-w"
cp tools/build/src/engine/b2 .

./bootstrap.sh \
"--with-bjam=./b2" \
"--prefix=$PREFIX" \
"--with-icu=$ICU_PREFIX"

Expand All @@ -752,7 +747,6 @@ build_from_tarball_boost()
"$BOOST_CXXFLAGS" \
"$BOOST_LINKFLAGS" \
"link=$BOOST_LINK" \
"warnings=off" \
"boost.locale.iconv=$BOOST_ICU_ICONV" \
"boost.locale.posix=$BOOST_ICU_POSIX" \
"-sNO_BZIP2=1" \
Expand All @@ -776,22 +770,11 @@ build_from_tarball_boost()
build_all()
{
unpack_from_tarball "$ICU_ARCHIVE" "$ICU_URL" gzip "$BUILD_ICU"
local SAVE_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS ${ICU_FLAGS[@]}"
build_from_tarball "$ICU_ARCHIVE" source "$PARALLEL" "$BUILD_ICU" "${ICU_OPTIONS[@]}" "$@"
export CPPFLAGS=$SAVE_CPPFLAGS
unpack_from_tarball "$BOOST_ARCHIVE" "$BOOST_URL" bzip2 "$BUILD_BOOST"
local SAVE_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS ${BOOST_FLAGS[@]}"
build_from_tarball_boost "$BOOST_ARCHIVE" "$PARALLEL" "$BUILD_BOOST" "${BOOST_OPTIONS[@]}"
export CPPFLAGS=$SAVE_CPPFLAGS
create_from_github libbitcoin secp256k1 version8 "yes"
local SAVE_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS ${SECP256K1_FLAGS[@]}"
build_from_github secp256k1 "$PARALLEL" false "yes" "${SECP256K1_OPTIONS[@]}" "$@"
export CPPFLAGS=$SAVE_CPPFLAGS
local SAVE_CPPFLAGS="$CPPFLAGS"
export CPPFLAGS="$CPPFLAGS ${BITCOIN_SYSTEM_FLAGS[@]}"
if [[ ! ($CI == true) ]]; then
create_from_github libbitcoin libbitcoin-system master "yes"
build_from_github libbitcoin-system "$PARALLEL" true "yes" "${BITCOIN_SYSTEM_OPTIONS[@]}" "$@"
Expand All @@ -802,7 +785,6 @@ build_all()
pop_directory
pop_directory
fi
export CPPFLAGS=$SAVE_CPPFLAGS
}


Expand All @@ -823,19 +805,6 @@ set_pkgconfigdir
set_with_boost_prefix


# Define build flags.
#==============================================================================
# Define icu flags.
#------------------------------------------------------------------------------
ICU_FLAGS=(
"-w")

# Define secp256k1 flags.
#------------------------------------------------------------------------------
SECP256K1_FLAGS=(
"-w")


# Define build options.
#==============================================================================
# Define icu options.
Expand Down
4 changes: 4 additions & 0 deletions test/chain/checkpoint.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -127,27 +127,31 @@ BOOST_AUTO_TEST_CASE(checkpoint__lesser__same__false)
const checkpoint instance1("0102030405060708090a0102030405060708090a0102030405060708090a0b0c", 42);
const checkpoint instance2("0102030405060708090a0102030405060708090a0102030405060708090a0b0c", 42);
BOOST_REQUIRE(!(instance1 < instance2));
BOOST_REQUIRE(!std::less<system::chain::checkpoint>{}(instance1, instance2));
}

BOOST_AUTO_TEST_CASE(checkpoint__lesser__lesser_hash_same_height__false)
{
const checkpoint instance1(null_hash, 42);
const checkpoint instance2("0102030405060708090a0102030405060708090a0102030405060708090a0b0c", 42);
BOOST_REQUIRE(!(instance1 < instance2));
BOOST_REQUIRE(!std::less<system::chain::checkpoint>{}(instance1, instance2));
}

BOOST_AUTO_TEST_CASE(checkpoint__lesser__same_hash_lesser_height__true)
{
const checkpoint instance1("0102030405060708090a0102030405060708090a0102030405060708090a0b0c", 41);
const checkpoint instance2("0102030405060708090a0102030405060708090a0102030405060708090a0b0c", 42);
BOOST_REQUIRE(instance1 < instance2);
BOOST_REQUIRE(std::less<system::chain::checkpoint>{}(instance1, instance2));
}

BOOST_AUTO_TEST_CASE(checkpoint__lesser__same_hash_greater_height__false)
{
const checkpoint instance1("0102030405060708090a0102030405060708090a0102030405060708090a0b0c", 43);
const checkpoint instance2("0102030405060708090a0102030405060708090a0102030405060708090a0b0c", 42);
BOOST_REQUIRE(!(instance1 < instance2));
BOOST_REQUIRE(!std::less<system::chain::checkpoint>{}(instance1, instance2));
}

BOOST_AUTO_TEST_CASE(checkpoint__equality__same__expected)
Expand Down

0 comments on commit 6437bcb

Please sign in to comment.