conan-equal-newone / yenten

Yenten; cryptocurrency of the cpu, by the cpu, for the cpu
https://conan-equal-newone.github.io/yenten/
MIT License
41 stars 52 forks source link

Does not compile on Arch Linux #3

Open aprokofj opened 6 years ago

aprokofj commented 6 years ago

Make fails with the following output:

In file included from chainparams.h:9:0, from protocol.h:13, from addrman.h:9, from addrman.cpp:5: bignum.h: In function ‘const CBigNum operator<<(const CBigNum&, unsigned int)’: bignum.h:576:33: error: cannot convert ‘CBigNum’ to ‘BIGNUM {aka bignum_st}’ for argument ‘1’ to ‘int BN_lshift(BIGNUM, const BIGNUM, int)’ if (!BN_lshift(&r, &a, shift)) ^ bignum.h: In function ‘bool operator==(const CBigNum&, const CBigNum&)’: bignum.h:588:83: error: cannot convert ‘const CBigNum’ to ‘const BIGNUM {aka const bignum_st}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM, const BIGNUM)’ inline bool operator==(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) == 0); } ^ bignum.h: In function ‘bool operator!=(const CBigNum&, const CBigNum&)’: bignum.h:589:83: error: cannot convert ‘const CBigNum’ to ‘const BIGNUM {aka const bignum_st}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM, const BIGNUM)’ inline bool operator!=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) != 0); } ^ bignum.h: In function ‘bool operator<=(const CBigNum&, const CBigNum&)’: bignum.h:590:83: error: cannot convert ‘const CBigNum’ to ‘const BIGNUM {aka const bignum_st}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM, const BIGNUM)’ inline bool operator<=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) <= 0); } ^ bignum.h: In function ‘bool operator>=(const CBigNum&, const CBigNum&)’: bignum.h:591:83: error: cannot convert ‘const CBigNum’ to ‘const BIGNUM {aka const bignum_st}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM, const BIGNUM)’ inline bool operator>=(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) >= 0); } ^ bignum.h: In function ‘bool operator<(const CBigNum&, const CBigNum&)’: bignum.h:592:83: error: cannot convert ‘const CBigNum’ to ‘const BIGNUM {aka const bignum_st}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM, const BIGNUM)’ inline bool operator<(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) < 0); } ^ bignum.h: In function ‘bool operator>(const CBigNum&, const CBigNum&)’: bignum.h:593:83: error: cannot convert ‘const CBigNum’ to ‘const BIGNUM {aka const bignum_st}’ for argument ‘1’ to ‘int BN_cmp(const BIGNUM, const BIGNUM*)’ inline bool operator>(const CBigNum& a, const CBigNum& b) { return (BN_cmp(&a, &b) > 0); }

jarhat commented 6 years ago

+1

WorldBot commented 6 years ago

got same error from debian 9.3, look like that's fails with OpenSSL 1.1.0f I got it running by installing libssl1.0-dev ( apt-get install libssl1.0-dev ) but that can make perhaps some dependance problems for others stuff idk

tokoro10g commented 6 years ago

Installing openssl-1.0 and

CPPFLAGS="-I/usr/include/openssl-1.0" LDFLAGS="-L/usr/lib/openssl-1.0" ./configure ...(options)...

did the trick. Hope it helps ;)

derekneely commented 6 years ago

You may want to look at this guy's Docker file. He's using Alpine but may lend some help on packages and config options.

https://github.com/mecab/docker-yentend/blob/master/Dockerfile

Helped me getting it up and going on Debian 8.

aprokofj commented 6 years ago

@tokoro10g tokoro10g, your suggestion solved the previous issue, but now there is another problem:

rpcserver.cpp:436:102: error: wrong number of template arguments (2, should be 1) oid RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor, ^ In file included from /usr/include/boost/asio.hpp:30:0, from rpcprotocol.h:15, from rpcserver.h:10, from rpcserver.cpp:6: /usr/include/boost/asio/basic_socket_acceptor.hpp:73:7: note: provided for ‘template class boost::asio::basic_socket_acceptor’ class basic_socket_acceptor ^~~~~ rpcserver.cpp:436:104: error: template argument 1 is invalid d RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor, ^ rpcserver.cpp:446:95: error: wrong number of template arguments (2, should be 1) tatic void RPCListen(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor, ^ In file included from /usr/include/boost/asio.hpp:30:0, from rpcprotocol.h:15, from rpcserver.h:10, from rpcserver.cpp:6: /usr/include/boost/asio/basic_socket_acceptor.hpp:73:7: note: provided for ‘template class boost::asio::basic_socket_acceptor’ class basic_socket_acceptor ^~~~~ rpcserver.cpp:446:97: error: template argument 1 is invalid tic void RPCListen(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor, ^ rpcserver.cpp: In function ‘void RPCListen(int, boost::asio::ssl::context&, bool)’: rpcserver.cpp:451:109: error: base operand of ‘->’ is not a pointer ed_ptr< AcceptedConnectionImpl > conn(new AcceptedConnectionImpl(acceptor->get_io_service(), context, fUseSSL)); ^~ rpcserver.cpp:453:13: error: base operand of ‘->’ is not a pointer acceptor->async_accept( ^~ rpcserver.cpp: At global scope: rpcserver.cpp:469:102: error: wrong number of template arguments (2, should be 1) oid RPCAcceptHandler(boost::shared_ptr< basic_socket_acceptor<Protocol, SocketAcceptorService> > acceptor,

tokoro10g commented 6 years ago

@aprokofj You also need to downgrade boost to 1.65.1. The interface was changed in the latest version.

Note: you can use agetpkg to get older packages.