Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Can't build new qtum release mainnet-fastlane-v0.20.2 #916

Open
gituser opened this issue Mar 19, 2021 · 1 comment
Open

Can't build new qtum release mainnet-fastlane-v0.20.2 #916

gituser opened this issue Mar 19, 2021 · 1 comment

Comments

@gituser
Copy link

gituser commented Mar 19, 2021

Can't build new version of qtum mainnet-fastlane-v0.20.2:

/usr/bin/ccache g++ -m64 -std=c++14 -DHAVE_CONFIG_H -I. -I../src/config   -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -DQTUM_BUILD -I.  -DBOOST_SP_USE_STD_ATOMIC -DBOOST_AC_USE_STD_ATOMIC -pthread -I/home/build/qtum/source/depends/x86_64-pc-linux-gnu/share/../include -I./leveldb/include -I./leveldb/helpers/memenv -I/home/build/qtum/source/depends/x86_64-pc-linux-gnu/include -I/home/build/qtum/source/depends/x86_64-pc-linux-gnu/include -I./cpp-ethereum/utils -I./secp256k1/include -I./libff/libff -I./libff -I./univalue/include -I./cpp-ethereum -I./cpp-ethereum/evmc/include -I./cpp-ethereum/ethash/include -I./cpp-ethereum/utils/libscrypt -DQTUM_BUILD -I/home/build/qtum/source/depends/x86_64-pc-linux-gnu/share/../include/  -DQTUM_BUILD -DHAVE_BUILD_INFO -D__STDC_FORMAT_MACROS  -fstack-reuse=none -Wstack-protector -fstack-protector-all      -DETH_FATDB=1 -fPIE -pipe -O2  -MT cpp-ethereum/libaleth-interpreter/libbitcoin_common_a-VMOpt.o -MD -MP -MF cpp-ethereum/libaleth-interpreter/.deps/libbitcoin_common_a-VMOpt.Tpo -c -o cpp-ethereum/libaleth-interpreter/libbitcoin_common_a-VMOpt.o `test -f 'cpp-ethereum/libaleth-interpreter/VMOpt.cpp' || echo './'`cpp-ethereum/libaleth-interpreter/VMOpt.cpp
In file included from ./cpp-ethereum/intx/intx.hpp:7:0,
                 from cpp-ethereum/libaleth-interpreter/VM.h:9,
                 from cpp-ethereum/libaleth-interpreter/VM.cpp:5:
./cpp-ethereum/intx/int128.hpp: In function 'constexpr intx::uint128 intx::fast_add(intx::uint128, intx::uint128)':
./cpp-ethereum/intx/int128.hpp:204:28: error: cannot convert 'intx::uint128 {aka intx::uint<128u>}' to 'uint128_native {aka __int128 unsigned}' in initialization
     return uint128_native{x} + uint128_native{y};
                            ^
./cpp-ethereum/intx/int128.hpp:204:48: error: cannot convert 'intx::uint128 {aka intx::uint<128u>}' to 'uint128_native {aka __int128 unsigned}' in initialization
     return uint128_native{x} + uint128_native{y};
                                                ^
In file included from ./cpp-ethereum/intx/intx.hpp:7:0,
                 from cpp-ethereum/libaleth-interpreter/VM.h:9,
                 from cpp-ethereum/libaleth-interpreter/VM.cpp:5:
./cpp-ethereum/intx/int128.hpp: In function 'constexpr int intx::from_dec_digit(char)':
./cpp-ethereum/intx/int128.hpp:801:38: error: call to non-constexpr function 'void intx::throw_(const char*) [with T = std::invalid_argument]'
         throw_<std::invalid_argument>("invalid digit");
                                      ^
In file included from ./cpp-ethereum/intx/intx.hpp:7:0,
                 from cpp-ethereum/libaleth-interpreter/VM.h:9,
                 from cpp-ethereum/libaleth-interpreter/VM.cpp:5:
./cpp-ethereum/intx/int128.hpp: In instantiation of 'constexpr intx::div_result<QuotT, RemT>::operator std::tuple<QuotT&, RemT&>() [with QuotT = long unsigned int; RemT = long unsigned int]':
./cpp-ethereum/intx/intx.hpp:752:28:   required from here
./cpp-ethereum/intx/int128.hpp:517:80: error: converting to 'std::tuple<long unsigned int&, long unsigned int&>' from initializer list would use explicit constructor 'constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with _T1 = long unsigned int&; _T2 = long unsigned int&]'
     constexpr operator std::tuple<QuotT&, RemT&>() noexcept { return {quot, rem}; }
                                                                                ^
./cpp-ethereum/intx/int128.hpp: In instantiation of 'constexpr intx::div_result<QuotT, RemT>::operator std::tuple<QuotT&, RemT&>() [with QuotT = long unsigned int; RemT = intx::uint<128u>]':
./cpp-ethereum/intx/intx.hpp:776:28:   required from here
./cpp-ethereum/intx/int128.hpp:517:80: error: converting to 'std::tuple<long unsigned int&, intx::uint<128u>&>' from initializer list would use explicit constructor 'constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with _T1 = long unsigned int&; _T2 = intx::uint<128u>&]'
In file included from ./cpp-ethereum/intx/intx.hpp:7:0,
                 from cpp-ethereum/libaleth-interpreter/VM.h:9,
                 from cpp-ethereum/libaleth-interpreter/VM.cpp:5:
./cpp-ethereum/intx/int128.hpp: In instantiation of 'constexpr intx::result_with_carry<T>::operator std::tuple<T&, bool&>() [with T = long unsigned int]':
./cpp-ethereum/intx/intx.hpp:790:31:   required from here
./cpp-ethereum/intx/int128.hpp:100:79: error: converting to 'std::tuple<long unsigned int&, bool&>' from initializer list would use explicit constructor 'constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with _T1 = long unsigned int&; _T2 = bool&]'
     constexpr operator std::tuple<T&, bool&>() noexcept { return {value, carry}; }
                                                                               ^
In file included from cpp-ethereum/libaleth-interpreter/VM.h:9:0,
                 from cpp-ethereum/libaleth-interpreter/VM.cpp:5:
./cpp-ethereum/intx/intx.hpp: In member function 'void dev::eth::VM::interpretCases()':
cpp-ethereum/libaleth-interpreter/VM.cpp:765:46:   in constexpr expansion of 'intx::operator""_u256(((const char*)"1"))'
./cpp-ethereum/intx/intx.hpp:1109:34: error: 'constexpr Int intx::from_string(const char*) [with Int = intx::uint<256u>]' called in a constant expression
     return from_string<uint256>(s);
                                  ^
In file included from ./cpp-ethereum/intx/intx.hpp:7:0,
                 from cpp-ethereum/libaleth-interpreter/VM.h:9,
                 from cpp-ethereum/libaleth-interpreter/VM.cpp:5:
./cpp-ethereum/intx/int128.hpp:815:15: note: 'constexpr Int intx::from_string(const char*) [with Int = intx::uint<256u>]' is not usable as a constexpr function because:
 constexpr Int from_string(const char* str)
               ^
./cpp-ethereum/intx/int128.hpp:815:15: sorry, unimplemented: unexpected AST of kind loop_expr
./cpp-ethereum/intx/int128.hpp:815: confused by earlier errors, bailing out
Makefile:13325: recipe for target 'cpp-ethereum/libaleth-interpreter/libbitcoin_common_a-VM.o' failed
make[2]: *** [cpp-ethereum/libaleth-interpreter/libbitcoin_common_a-VM.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from ./cpp-ethereum/intx/intx.hpp:7:0,
                 from cpp-ethereum/libaleth-interpreter/VM.h:9,
                 from cpp-ethereum/libaleth-interpreter/VMOpt.cpp:4:
./cpp-ethereum/intx/int128.hpp: In function 'constexpr intx::uint128 intx::fast_add(intx::uint128, intx::uint128)':
./cpp-ethereum/intx/int128.hpp:204:28: error: cannot convert 'intx::uint128 {aka intx::uint<128u>}' to 'uint128_native {aka __int128 unsigned}' in initialization
     return uint128_native{x} + uint128_native{y};
                            ^
./cpp-ethereum/intx/int128.hpp:204:48: error: cannot convert 'intx::uint128 {aka intx::uint<128u>}' to 'uint128_native {aka __int128 unsigned}' in initialization
     return uint128_native{x} + uint128_native{y};
                                                ^
In file included from ./cpp-ethereum/intx/intx.hpp:7:0,
                 from cpp-ethereum/libaleth-interpreter/VM.h:9,
                 from cpp-ethereum/libaleth-interpreter/VMOpt.cpp:4:
./cpp-ethereum/intx/int128.hpp: In function 'constexpr int intx::from_dec_digit(char)':
./cpp-ethereum/intx/int128.hpp:801:38: error: call to non-constexpr function 'void intx::throw_(const char*) [with T = std::invalid_argument]'
         throw_<std::invalid_argument>("invalid digit");
                                      ^
In file included from ./cpp-ethereum/intx/intx.hpp:7:0,
                 from cpp-ethereum/libaleth-interpreter/VM.h:9,
                 from cpp-ethereum/libaleth-interpreter/VMOpt.cpp:4:
./cpp-ethereum/intx/int128.hpp: In instantiation of 'constexpr intx::div_result<QuotT, RemT>::operator std::tuple<QuotT&, RemT&>() [with QuotT = long unsigned int; RemT = long unsigned int]':
./cpp-ethereum/intx/intx.hpp:752:28:   required from here
./cpp-ethereum/intx/int128.hpp:517:80: error: converting to 'std::tuple<long unsigned int&, long unsigned int&>' from initializer list would use explicit constructor 'constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with _T1 = long unsigned int&; _T2 = long unsigned int&]'
     constexpr operator std::tuple<QuotT&, RemT&>() noexcept { return {quot, rem}; }
                                                                                ^
./cpp-ethereum/intx/int128.hpp: In instantiation of 'constexpr intx::div_result<QuotT, RemT>::operator std::tuple<QuotT&, RemT&>() [with QuotT = long unsigned int; RemT = intx::uint<128u>]':
./cpp-ethereum/intx/intx.hpp:776:28:   required from here
./cpp-ethereum/intx/int128.hpp:517:80: error: converting to 'std::tuple<long unsigned int&, intx::uint<128u>&>' from initializer list would use explicit constructor 'constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with _T1 = long unsigned int&; _T2 = intx::uint<128u>&]'
In file included from ./cpp-ethereum/intx/intx.hpp:7:0,
                 from cpp-ethereum/libaleth-interpreter/VM.h:9,
                 from cpp-ethereum/libaleth-interpreter/VMOpt.cpp:4:
./cpp-ethereum/intx/int128.hpp: In instantiation of 'constexpr intx::result_with_carry<T>::operator std::tuple<T&, bool&>() [with T = long unsigned int]':
./cpp-ethereum/intx/intx.hpp:790:31:   required from here
./cpp-ethereum/intx/int128.hpp:100:79: error: converting to 'std::tuple<long unsigned int&, bool&>' from initializer list would use explicit constructor 'constexpr std::tuple<_T1, _T2>::tuple(const _T1&, const _T2&) [with _T1 = long unsigned int&; _T2 = bool&]'
     constexpr operator std::tuple<T&, bool&>() noexcept { return {value, carry}; }
                                                                               ^
Makefile:13339: recipe for target 'cpp-ethereum/libaleth-interpreter/libbitcoin_common_a-VMOpt.o' failed
make[2]: *** [cpp-ethereum/libaleth-interpreter/libbitcoin_common_a-VMOpt.o] Error 1
mv -f bench/.deps/bench_bench_qtum-wallet_balance.Tpo bench/.deps/bench_bench_qtum-wallet_balance.Po
mv -f bench/.deps/bench_bench_qtum-coin_selection.Tpo bench/.deps/bench_bench_qtum-coin_selection.Po
make[2]: Leaving directory '/home/build/qtum/source/src'
Makefile:23745: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/build/qtum/source/src'
Makefile:798: recipe for target 'all-recursive' failed
make: *** [all-recursive] Error 1
Build Failed.

Actual behavior

To reproduce

Try to compile mainnet-fastlane-v0.20.2 on latest Ubuntu 16.04 using internal depends system.
Previous release compiled just fine on the same system.

Here is a build script I'm using:

#!/bin/bash
VER=$(git describe --tags)
daemon=$(pname=$(pwd); echo ${pname##/*/})
#BOOST_DIR=/home/build/boost/installed
HOST_CXXFLAGS="-O2 -g"
HOST_CFLAGS="-O2 -g"
#HOST_LDFLAGS="-L/usr/lib/x86_64-linux-gnu -static-libstdc++ -static"

git submodule update --init --recursive
#cd src/cpp-ethereum
#git submodule update --init --recursive
#cd -

make clean

#build dependencies
#CC=/usr/bin/gcc CXX=/usr/bin/g++ CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}" 
make -j4 -C depends NO_ZMQ=1 NO_QT=1 NO_UPNP=1

if [ "$?" != 0 ]; then
   echo "[-] make depends failed!"
   exit 1
fi

DEPENDS="$(pwd)/depends/x86_64-pc-linux-gnu"

./autogen.sh
./configure --without-miniupnpc --without-gui --disable-zmq --prefix=$DEPENDS # CFLAGS="${HOST_CFLAGS}" CXXFLAGS="${HOST_CXXFLAGS}"

if [ "$?" != 0 ]; then
    echo "Configure failed"
    exit 1;
fi
make V=1 -j4
if [ "$?" == 0 ]; then
#	strip src/${daemon}d src/${daemon}-cli
	mkdir ../$VER
	find src -maxdepth 1 -type f -executable -exec cp -prv {} ../$VER/ \;
#	strip ../$VER/*
#	cp -prv src/${daemon}d src/${daemon}-cli ../$VER/
	rm -rf ../current
	ln -sf $VER ../current
else
	echo "Build Failed."
fi

System information

Ubuntu 16.04 Xenial (latest).

@gituser
Copy link
Author

gituser commented Mar 19, 2021

ping @qtum-neil

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant