diff --git a/CMakeLists.txt b/CMakeLists.txt index 2fa3dec..ad37e83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -531,14 +531,14 @@ add_definitions("-DBLOCKCHAIN_DB=${BLOCKCHAIN_DB}") # Can't install hook in static build on OSX, because OSX linker does not support --wrap # On ARM, having libunwind package (with .so's only) installed breaks static link. # When possible, avoid stack tracing using libunwind in favor of using easylogging++. -if (APPLE OR NETBSD) +if (APPLE) set(DEFAULT_STACK_TRACE OFF) set(LIBUNWIND_LIBRARIES "") elseif (DEPENDS AND NOT LINUX) set(DEFAULT_STACK_TRACE OFF) set(LIBUNWIND_LIBRARIES "") elseif(CMAKE_C_COMPILER_ID STREQUAL "GNU" AND NOT MINGW) - set(DEFAULT_STACK_TRACE OFF) + set(DEFAULT_STACK_TRACE ON) set(STACK_TRACE_LIB "easylogging++") # for diag output only set(LIBUNWIND_LIBRARIES "") elseif (ARM) @@ -547,7 +547,7 @@ elseif (ARM) else() find_package(Libunwind) if(LIBUNWIND_FOUND) - set(DEFAULT_STACK_TRACE OFF) + set(DEFAULT_STACK_TRACE ON) set(STACK_TRACE_LIB "libunwind") # for diag output only else() set(DEFAULT_STACK_TRACE OFF) @@ -1107,7 +1107,9 @@ include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) if(MINGW) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wa,-mbig-obj") set(EXTRA_LIBRARIES mswsock;ws2_32;iphlpapi;crypt32;bcrypt) - if(NOT DEPENDS) + if(DEPENDS) + set(ICU_LIBRARIES icuio icui18n icuuc icudata icutu iconv) + else() set(ICU_LIBRARIES icuio icuin icuuc icudt icutu iconv) endif() elseif(APPLE OR OPENBSD OR ANDROID) diff --git a/contrib/depends/config.site.in b/contrib/depends/config.site.in new file mode 100644 index 0000000..11dab89 --- /dev/null +++ b/contrib/depends/config.site.in @@ -0,0 +1,66 @@ +depends_prefix="`dirname ${ac_site_file}`/.." + +cross_compiling=maybe +host_alias=@HOST@ +ac_tool_prefix=${host_alias}- + +if test -z $with_boost; then + with_boost=$depends_prefix +fi + +if test x@host_os@ = xdarwin; then + BREW=no + PORT=no +fi + +PATH=$depends_prefix/native/bin:$PATH +PKG_CONFIG="`which pkg-config` --static" + +# These two need to remain exported because pkg-config does not see them +# otherwise. That means they must be unexported at the end of configure.ac to +# avoid ruining the cache. Sigh. +export PKG_CONFIG_PATH=$depends_prefix/share/pkgconfig:$depends_prefix/lib/pkgconfig +if test -z "@allow_host_packages@"; then + export PKGCONFIG_LIBDIR= +fi + +CPPFLAGS="-I$depends_prefix/include/ $CPPFLAGS" +LDFLAGS="-L$depends_prefix/lib $LDFLAGS" + +CC="@CC@" +CXX="@CXX@" +OBJC="${CC}" +CCACHE=$depends_prefix/native/bin/ccache +PYTHONPATH=$depends_prefix/native/lib/python/dist-packages:$PYTHONPATH + +if test -n "@AR@"; then + AR=@AR@ + ac_cv_path_ac_pt_AR=${AR} +fi + +if test -n "@RANLIB@"; then + RANLIB=@RANLIB@ + ac_cv_path_ac_pt_RANLIB=${RANLIB} +fi + +if test -n "@NM@"; then + NM=@NM@ + ac_cv_path_ac_pt_NM=${NM} +fi + +if test -n "@debug@"; then + enable_reduce_exports=no +fi + +if test -n "@CFLAGS@"; then + CFLAGS="@CFLAGS@ $CFLAGS" +fi +if test -n "@CXXFLAGS@"; then + CXXFLAGS="@CXXFLAGS@ $CXXFLAGS" +fi +if test -n "@CPPFLAGS@"; then + CPPFLAGS="@CPPFLAGS@ $CPPFLAGS" +fi +if test -n "@LDFLAGS@"; then + LDFLAGS="@LDFLAGS@ $LDFLAGS" +fi diff --git a/src/blockchain_db/blockchain_db.cpp b/src/blockchain_db/blockchain_db.cpp index 1982ee1..b74fd44 100644 --- a/src/blockchain_db/blockchain_db.cpp +++ b/src/blockchain_db/blockchain_db.cpp @@ -356,16 +356,16 @@ uint64_t BlockchainDB::add_block( const std::pair& blck slippage_counts[asset_type] = 0; slippage_counts[asset_type] += tx.first.amount_burnt; } + } - // Is this an AUDIT TX? - if (tx.first.type == cryptonote::transaction_type::AUDIT) { - audit_total += tx.first.amount_burnt; - } - - // Is this a STAKE TX? - if (tx.first.type == cryptonote::transaction_type::STAKE) { - yield_total += tx.first.amount_burnt; - } + // Is this an AUDIT TX? + if (tx.first.type == cryptonote::transaction_type::AUDIT) { + audit_total += tx.first.amount_burnt; + } + + // Is this a STAKE TX? + if (tx.first.type == cryptonote::transaction_type::STAKE) { + yield_total += tx.first.amount_burnt; } ++tx_i; } diff --git a/src/cryptonote_basic/cryptonote_format_utils.cpp b/src/cryptonote_basic/cryptonote_format_utils.cpp index 7a51ea6..1ddaf03 100644 --- a/src/cryptonote_basic/cryptonote_format_utils.cpp +++ b/src/cryptonote_basic/cryptonote_format_utils.cpp @@ -1243,31 +1243,35 @@ namespace cryptonote //--------------------------------------------------------------- bool check_output_types(const transaction& tx, const uint8_t hf_version) { + if (tx.type == cryptonote::transaction_type::AUDIT || tx.type == cryptonote::transaction_type::STAKE) { + CHECK_AND_ASSERT_MES(tx.vout.size() == 1, false, "audit and stake transactions should have 1 output"); + } + for (const auto &o: tx.vout) { if (hf_version > HF_VERSION_REQUIRE_VIEW_TAGS) { // from v15, require outputs have view tags CHECK_AND_ASSERT_MES(o.target.type() == typeid(txout_to_tagged_key), false, "wrong variant type: " - << o.target.type().name() << ", expected txout_to_tagged_key in transaction id=" << get_transaction_hash(tx)); + << o.target.type().name() << ", expected txout_to_tagged_key in transaction"); } else if (hf_version < HF_VERSION_VIEW_TAGS) { // require outputs to be of type txout_to_key CHECK_AND_ASSERT_MES(o.target.type() == typeid(txout_to_key), false, "wrong variant type: " - << o.target.type().name() << ", expected txout_to_key in transaction id=" << get_transaction_hash(tx)); + << o.target.type().name() << ", expected txout_to_key in transaction"); } else //(hf_version == HF_VERSION_VIEW_TAGS || hf_version == HF_VERSION_VIEW_TAGS+1) { // require outputs be of type txout_to_key OR txout_to_tagged_key // to allow grace period before requiring all to be txout_to_tagged_key CHECK_AND_ASSERT_MES(o.target.type() == typeid(txout_to_key) || o.target.type() == typeid(txout_to_tagged_key), false, "wrong variant type: " - << o.target.type().name() << ", expected txout_to_key or txout_to_tagged_key in transaction id=" << get_transaction_hash(tx)); + << o.target.type().name() << ", expected txout_to_key or txout_to_tagged_key in transaction"); // require all outputs in a tx be of the same type CHECK_AND_ASSERT_MES(o.target.type() == tx.vout[0].target.type(), false, "non-matching variant types: " << o.target.type().name() << " and " << tx.vout[0].target.type().name() << ", " - << "expected matching variant types in transaction id=" << get_transaction_hash(tx)); + << "expected matching variant types in transaction"); } // Verify the asset type