hyperledger-archives / iroha

Iroha - A simple, decentralized ledger

Home Page:http://iroha.tech

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Why Hyperledger Iroha v1.0 beta-4 version do not release Linux-x86_64-binaries.tar.gz?

aalinyu opened this issue · comments

Why Hyperledger Iroha v1.0 beta-4 version do not release Linux-x86_64-binaries.tar.gz?
Why just release source code, When I compile the source code ,can not continue
by clone code: HTTP request failed
Can realese the complied with Linux-x86_64-binaries.tar.gz in beta-4?

Why only release source code?

When i am compling the souce code get:

make[2]: *** [../external/src/reactive_extensions_rxcpp-stamp/reactive_extensions_rxcpp-download] Error 1
make[1]: *** [CMakeFiles/reactive_extensions_rxcpp.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
Cloning into 'grpc_grpc'...
error: RPC failed; curl 56 LibreSSL SSL_read: SSL_ERROR_SYSCALL, errno 60
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
-- Had to git clone more than once:
          3 times.
CMake Error at /Users/aalin/Downloads/iroha-1.0.0_beta-4/external/tmp/grpc_grpc-gitclone.cmake:66 (message):
  Failed to clone repository: 'https://github.com/grpc/grpc'


make[2]: *** [../external/src/grpc_grpc-stamp/grpc_grpc-download] Error 1
make[1]: *** [CMakeFiles/grpc_grpc.dir/all] Error 2
make: *** [all] Error 2

It's caused by failed git clone.

Recently, I tried to build Iroha under Ubuntu 18.04. Several dependences (e.g. grpc, soci) can be installed using apt-get, i.e.:

build-essential cmake libboost-all-dev libgtest-dev google-mock libgflags-dev libtbb-dev rapidjson-dev libspdlog-dev libprotobuf-dev libgrpc++-dev libsoci-dev protobuf-compiler protobuf-compiler-grpc libpq-dev

But gtest, rxcpp and ed25519 still need to be pulled from git repo.

BTW, I have no success to build Iroha v1.0.0_beta-4 under Ubuntu 18.04, more investigation is needed.

With following patch, compilation can go further, seems that grpc has changed a lot from 0.11 to 1.3.

diff --git a/cmake/functions.cmake b/cmake/functions.cmake
index 93f93523a..90ccc03d1 100644
--- a/cmake/functions.cmake
+++ b/cmake/functions.cmake
@@ -73,7 +73,7 @@ function(compile_proto_to_cpp PROTO)
   add_custom_command(
       OUTPUT ${SCHEMA_OUT_DIR}/${GEN_PB_HEADER} ${SCHEMA_OUT_DIR}/${GEN_PB}
       COMMAND ${GEN_COMMAND}
-      ARGS -I${GEN_ARGS} -I${CMAKE_CURRENT_SOURCE_DIR} ${ARGN} --cpp_out=${SCHEMA_OUT_DIR} ${PROTO}
+      ARGS -I${GEN_ARGS} -I${CMAKE_CURRENT_SOURCE_DIR} ${ARGN} --cpp_out=${SCHEMA_OUT_DIR} ${SCHEMA_PATH}/${PROTO}
       DEPENDS protoc ${SCHEMA_PATH}/${PROTO}
       WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
       )
@@ -85,7 +85,7 @@ function(compile_proto_only_grpc_to_cpp PROTO)
   add_custom_command(
       OUTPUT ${SCHEMA_OUT_DIR}/${GEN_GRPC_PB_HEADER} ${SCHEMA_OUT_DIR}/${GEN_GRPC_PB}
       COMMAND ${CMAKE_COMMAND} -E env LD_LIBRARY_PATH=${protobuf_LIBRARY_DIR}:$ENV{LD_LIBRARY_PATH} "${protoc_EXECUTABLE}"
-      ARGS -I${protobuf_INCLUDE_DIR} -I${CMAKE_CURRENT_SOURCE_DIR} ${ARGN} --grpc_out=${SCHEMA_OUT_DIR} --plugin=protoc-gen-grpc="${grpc_CPP_PLUGIN}" ${PROTO}
+      ARGS -I${protobuf_INCLUDE_DIR} -I${CMAKE_CURRENT_SOURCE_DIR} ${ARGN} --grpc_out=${SCHEMA_OUT_DIR} --plugin=protoc-gen-grpc="${grpc_CPP_PLUGIN}" ${SCHEMA_PATH}/${PROTO}
       DEPENDS grpc_cpp_plugin ${SCHEMA_PATH}/${PROTO}
       WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
       )
diff --git a/irohad/torii/impl/command_service.cpp b/irohad/torii/impl/command_service.cpp
index 9dd6dbf80..1e676a658 100644
--- a/irohad/torii/impl/command_service.cpp
+++ b/irohad/torii/impl/command_service.cpp
@@ -165,12 +165,12 @@ namespace torii {
               }
               // form an error message, shared between all txs in a sequence
               auto first_tx_blob =
-                  shared_model::proto::makeBlob(txs[0].payload());
+                  shared_model::proto::makeBlob(txs.Get(0).payload());
               auto first_tx_hash =
                   shared_model::crypto::DefaultHashProvider::makeHash(
                       first_tx_blob);
               auto last_tx_blob =
-                  shared_model::proto::makeBlob(txs[txs.size() - 1].payload());
+                  shared_model::proto::makeBlob(txs.Get(txs.size() - 1).payload());
               auto last_tx_hash =
                   shared_model::crypto::DefaultHashProvider::makeHash(
                       last_tx_blob);
diff --git a/shared_model/backend/protobuf/util.hpp b/shared_model/backend/protobuf/util.hpp
index 981974907..86f38a147 100644
--- a/shared_model/backend/protobuf/util.hpp
+++ b/shared_model/backend/protobuf/util.hpp
@@ -28,7 +28,7 @@ namespace shared_model {
     template <typename T>
     crypto::Blob makeBlob(T &&message) {
       crypto::Blob::Bytes data;
-      data.resize(message.ByteSizeLong());
+      data.resize(message.ByteSize());
       message.SerializeToArray(data.data(), data.size());
       return crypto::Blob(std::move(data));
     }
diff --git a/shared_model/interfaces/iroha_internal/transaction_sequence.cpp b/shared_model/interfaces/iroha_internal/transaction_sequence.cpp
index 025413a28..1b98ea9f7 100644
--- a/shared_model/interfaces/iroha_internal/transaction_sequence.cpp
+++ b/shared_model/interfaces/iroha_internal/transaction_sequence.cpp
@@ -3,6 +3,8 @@
  * SPDX-License-Identifier: Apache-2.0
  */

+#include <unordered_map>
+
 #include "interfaces/iroha_internal/transaction_sequence.hpp"

 #include "interfaces/iroha_internal/transaction_batch.hpp"

I have no success to build Iroha v1.0.0_beta-4 under Centos 6.8 too

commented

The version of Iroha mentioned is old. Please try a new one if issue is still occurring.