hyperledger-iroha is broken

  • Open
  • quality assurance status badge
Details
2 participants
  • Maxim Cournoyer
  • Csepp
Owner
unassigned
Submitted by
Maxim Cournoyer
Severity
normal
M
M
Maxim Cournoyer wrote on 3 Nov 2022 20:57
(name . bug-guix)(address . bug-guix@gnu.org)
87fsezak1e.fsf@gmail.com
Hi,

I've tried fixing hyperledger-iroha without success. Updating it to
latest would require prometheus-cpp, not yet packaged. Anything I've
tried always end up with C++ compilation errors, such as this one
(protobuf 3.14):

Toggle snippet (9 lines)
c++14 -Wall -fdiagnostics-color=always -O2 -g -DNDEBUG -fPIC -MD -MT shared_model/backend/protobuf/CMakeFiles/shared_model_proto_backend.dir/queries/impl/proto_get_signatories.o -MF CMakeFiles/shared_model_proto_backend.dir/queries/impl/proto_get_signatories.o.d -o CMakeFiles/shared_model_proto_backend.dir/queries/impl/proto_get_signatories.o -c /tmp/guix-build-hyperledger-iroha-1.1.1.drv-0/source/shared_model/backend/protobuf/queries/impl/proto_get_signatories.cpp
/tmp/guix-build-hyperledger-iroha-1.1.1.drv-0/source/irohad/consensus/yac/impl/peer_orderer_impl.cpp: In member function ‘virtual boost::optional<iroha::consensus::yac::ClusterOrdering> iroha::consensus::yac::PeerOrdererImpl::getOrdering(const iroha::consensus::yac::YacHash&, std::vector<std::shared_ptr<shared_model::interface::Peer> >)’:
/tmp/guix-build-hyperledger-iroha-1.1.1.drv-0/source/irohad/consensus/yac/impl/peer_orderer_impl.cpp:28:14: error: ‘shuffle’ is not a member of ‘std’
28 | std::shuffle(peers.begin(), peers.end(), gen);
| ^~~~~~~
make[2]: *** [irohad/consensus/yac/CMakeFiles/yac.dir/build.make:121: irohad/consensus/yac/CMakeFiles/yac.dir/impl/peer_orderer_impl.o] Error 1
make[2]: *** Waiting for unfinished jobs....

--
Thanks,
Maxim
C
C
Csepp wrote on 4 Nov 2022 12:01
(name . Maxim Cournoyer)(address . maxim.cournoyer@gmail.com)
87fsezc73v.fsf@riseup.net
Maxim Cournoyer <maxim.cournoyer@gmail.com> writes:

Toggle quote (15 lines)
> Hi,
>
> I've tried fixing hyperledger-iroha without success. Updating it to
> latest would require prometheus-cpp, not yet packaged. Anything I've
> tried always end up with C++ compilation errors, such as this one
> (protobuf 3.14):
>
> c++14 -Wall -fdiagnostics-color=always -O2 -g -DNDEBUG -fPIC -MD -MT shared_model/backend/protobuf/CMakeFiles/shared_model_proto_backend.dir/queries/impl/proto_get_signatories.o -MF CMakeFiles/shared_model_proto_backend.dir/queries/impl/proto_get_signatories.o.d -o CMakeFiles/shared_model_proto_backend.dir/queries/impl/proto_get_signatories.o -c /tmp/guix-build-hyperledger-iroha-1.1.1.drv-0/source/shared_model/backend/protobuf/queries/impl/proto_get_signatories.cpp
> /tmp/guix-build-hyperledger-iroha-1.1.1.drv-0/source/irohad/consensus/yac/impl/peer_orderer_impl.cpp: In member function ‘virtual boost::optional<iroha::consensus::yac::ClusterOrdering> iroha::consensus::yac::PeerOrdererImpl::getOrdering(const iroha::consensus::yac::YacHash&, std::vector<std::shared_ptr<shared_model::interface::Peer> >)’:
> /tmp/guix-build-hyperledger-iroha-1.1.1.drv-0/source/irohad/consensus/yac/impl/peer_orderer_impl.cpp:28:14: error: ‘shuffle’ is not a member of ‘std’
> 28 | std::shuffle(peers.begin(), peers.end(), gen);
> | ^~~~~~~
> make[2]: *** [irohad/consensus/yac/CMakeFiles/yac.dir/build.make:121: irohad/consensus/yac/CMakeFiles/yac.dir/impl/peer_orderer_impl.o] Error 1
> make[2]: *** Waiting for unfinished jobs....

At first I thought it might be using a C++ standard that is too new or
too old, but std::shuffle seems to have been standardized in C++11 and
has not been removed since. Hmm.
Still, I'd try compiling again with different compiler flags, might have
some luck. Or looking into how std::shuffle is defined in the standard library.
?