Maxim Cournoyer <maxim.courno...@gmail.com> writes:
> 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. https://en.cppreference.com/w/cpp/algorithm/random_shuffle 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.