Skip to content

Commit 5fc1ee2

Browse files
committed
Merge branch 'master' into HEAD
2 parents 261c438 + 3f08d6b commit 5fc1ee2

File tree

160 files changed

+6360
-1992
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

160 files changed

+6360
-1992
lines changed

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,6 @@
2121
path = externals/binaryen
2222
url = https://github.com/EOSIO/binaryen
2323

24+
[submodule "libraries/softfloat"]
25+
path = libraries/softfloat
26+
url = https://github.com/eosio/berkeley-softfloat-3

CMakeLists.txt

+43-14
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
# Defines EOS library target.
22
project( EOS )
3+
34
cmake_minimum_required( VERSION 2.8.12 )
45

56
enable_testing()
67

78
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/libraries/fc/CMakeModules")
89
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
910

10-
INCLUDE( VersionMacros )
11-
INCLUDE( SetupTargetMacros )
11+
include( GNUInstallDirs )
12+
include( VersionMacros )
13+
include( SetupTargetMacros )
14+
include( InstallDirectoryPermissions )
1215

1316
set( BLOCKCHAIN_NAME "Eos" )
1417
set( CMAKE_CXX_STANDARD 14 )
@@ -17,8 +20,8 @@ set(VERSION_MAJOR 3)
1720
set(VERSION_MINOR 0)
1821
set(VERSION_PATCH 1)
1922

20-
set( CLI_CLIENT_EXECUTABLE_NAME eos_client )
21-
set( GUI_CLIENT_EXECUTABLE_NAME eos )
23+
set( CLI_CLIENT_EXECUTABLE_NAME eosioc )
24+
set( GUI_CLIENT_EXECUTABLE_NAME eosio )
2225
set( CUSTOM_URL_SCHEME "gcs" )
2326
set( INSTALLER_APP_ID "68ad7005-8eee-49c9-95ce-9eed97e5b347" )
2427

@@ -45,6 +48,33 @@ if (USE_PCH)
4548
include (cotire)
4649
endif(USE_PCH)
4750

51+
# add defaults for openssl
52+
if ("${OPENSSL_ROOT_DIR}" STREQUAL "")
53+
if (NOT "$ENV{OPENSSL_ROOT_DIR}" STREQUAL "")
54+
set(OPENSSL_ROOT_DIR $ENV{OPENSSL_ROOT_DIR})
55+
set(OPENSSL_INCLUDE_DIR ${OPENSSL_ROOT_DIR}/include)
56+
elseif (APPLE)
57+
set(OPENSSL_ROOT_DIR "/usr/local/opt/openssl")
58+
set(OPENSSL_INCLUDE_DIR "/usr/local/opt/openssl/include")
59+
elseif(UNIX AND NOT APPLE)
60+
set(OPENSSL_ROOT_DIR "/usr/include/openssl")
61+
set(OPENSSL_INCLUDE_DIR "/usr/include/openssl/include")
62+
else()
63+
message(FATAL_ERROR "openssl not found and don't know where to look, please specify OPENSSL_ROOT_DIR")
64+
endif()
65+
endif()
66+
67+
if ("${OPENSSL_LIBRARIES}" STREQUAL "")
68+
if (NOT "$ENV{OPENSSL_LIBRARIES}" STREQUAL "")
69+
set(OPENSSL_LIBRARIES $ENV{OPENSSL_LIBRARIES})
70+
elseif (APPLE)
71+
set(OPENSSL_LIBRARIES "/usr/local/opt/openssl/lib")
72+
elseif(UNIX AND NOT APPLE)
73+
set(OPENSSL_LIBRARIES "/usr/include/openssl")
74+
else()
75+
message(FATAL_ERROR "openssl libs not found and don't know where to look, please specify OPENSSL_LIBRARIES")
76+
endif()
77+
endif()
4878

4979
if(UNIX)
5080
if(APPLE)
@@ -114,12 +144,6 @@ if( WIN32 )
114144

115145
else( WIN32 ) # Apple AND Linux
116146

117-
find_library(READLINE_LIBRARIES NAMES readline)
118-
find_path(READLINE_INCLUDE_DIR readline/readline.h)
119-
#if(NOT READLINE_INCLUDE_DIR OR NOT READLINE_LIBRARIES)
120-
# MESSAGE(FATAL_ERROR "Could not find lib readline.")
121-
#endif()
122-
123147
if( APPLE )
124148
# Apple Specific Options Here
125149
message( STATUS "Configuring Eos on OS X" )
@@ -164,19 +188,24 @@ if(ENABLE_COVERAGE_TESTING)
164188
find_program( GENHTML_PATH NAMES genhtml)
165189
endif()
166190

191+
add_subdirectory( externals )
192+
167193
include(wasm)
168-
include(installer)
169194

170-
add_subdirectory( externals )
171-
add_subdirectory( contracts )
172195
add_subdirectory( libraries )
196+
add_subdirectory( contracts )
173197
add_subdirectory( plugins )
174198
add_subdirectory( programs )
175199
add_subdirectory( scripts )
176200
add_subdirectory( tests )
177201
add_subdirectory( tools )
202+
add_subdirectory( debian )
178203

179-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/genesis.json ${CMAKE_CURRENT_BINARY_DIR}/genesis.json COPYONLY)
204+
install(FILES genesis.json DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/eosio/node_00)
205+
install_directory_permissions(DIRECTORY ${CMAKE_INSTALL_FULL_SYSCONFDIR}/eosio)
206+
install_directory_permissions(DIRECTORY ${CMAKE_INSTALL_FULL_SYSCONFDIR}/eosio/node_00)
207+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/genesis.json ${CMAKE_CURRENT_BINARY_DIR}/etc/eosio/node_00/genesis.json COPYONLY)
180208

209+
include(installer)
181210

182211
include(doxygen)

CMakeModules/FindWasm.cmake

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,15 @@
11
# - Try to find WASM
22

33
# TODO: Check if compiler is able to generate wasm32
4-
4+
if ("${WASM_ROOT}" STREQUAL "")
5+
if (APPLE)
6+
set( WASM_ROOT "/usr/local/wasm" )
7+
elseif (UNIX AND NOT APPLE)
8+
set( WASM_ROOT "$ENV{HOME}/opt/wasm" )
9+
else()
10+
message(FATAL_ERROR "WASM not found and don't know where to look, please specify WASM_ROOT")
11+
endif()
12+
endif()
513
find_program(WASM_CLANG clang PATHS ${WASM_ROOT}/bin NO_DEFAULT_PATH)
614
find_program(WASM_LLC llc PATHS ${WASM_ROOT}/bin NO_DEFAULT_PATH)
715
find_program(WASM_LLVM_LINK llvm-link PATHS ${WASM_ROOT}/bin NO_DEFAULT_PATH)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# Fix directory permissions after installation of header files (primarily).
2+
macro(install_directory_permissions)
3+
cmake_parse_arguments(ARG "" "DIRECTORY" "" ${ARGN})
4+
set(dir ${ARG_DIRECTORY})
5+
install(DIRECTORY DESTINATION ${dir}
6+
DIRECTORY_PERMISSIONS OWNER_READ
7+
OWNER_WRITE
8+
OWNER_EXECUTE
9+
GROUP_READ
10+
GROUP_EXECUTE
11+
WORLD_READ
12+
WORLD_EXECUTE
13+
)
14+
endmacro(install_directory_permissions)

CMakeModules/installer.cmake

+28-15
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,49 @@
11
include(InstallRequiredSystemLibraries)
22

3+
#install_directory_permissions( DIRECTORY usr/${CMAKE_INSTALL_INCLUDEDIR}/eosio )
4+
35
set(CPACK_PACKAGE_CONTACT "[email protected]")
46
set(CPACK_OUTPUT_FILE_PREFIX ${CMAKE_BINARY_DIR}/packages)
5-
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install)
7+
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
8+
set(CMAKE_INSTALL_PREFIX ${CMAKE_BINARY_DIR}/install)
9+
endif()
610

7-
SET(CPACK_PACKAGE_DIRECTORY "${CMAKE_INSTALL_PREFIX}")
11+
SET(CPACK_PACKAGE_DIRECTORY "${CMAKE_BINARY_DIR}/install")
812
set(CPACK_PACKAGE_NAME "EOS.IO")
913
set(CPACK_PACKAGE_VENDOR "block.one")
1014
set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
1115
set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
1216
set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_PATCH}")
1317
set(CPACK_PACKAGE_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
14-
set(CPACK_PACKAGE_DESCRIPTION "A client for the EOS.IO network")
15-
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "A client for the EOS.IO network")
18+
set(CPACK_PACKAGE_DESCRIPTION "Software for the EOS.IO network")
19+
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Software for the EOS.IO network")
1620
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt")
1721
set(CPACK_PACKAGE_INSTALL_DIRECTORY "EOS.IO ${CPACK_PACKAGE_VERSION}")
1822

1923
if(WIN32)
20-
set(CPACK_GENERATOR "ZIP;NSIS")
21-
set(CPACK_NSIS_EXECUTABLES_DIRECTORY .)
22-
set(CPACK_NSIS_PACKAGE_NAME "EOS.IO v${CPACK_PACKAGE_VERSION}")
23-
set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}")
24-
set(CPACK_NSIS_DEFINES " !define MUI_STARTMENUPAGE_DEFAULTFOLDER \\\"EOS.IO\\\"")
25-
# it seems like windows zip files usually don't have a single directory inside them, unix tgz frequently do
26-
SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
24+
set(CPACK_GENERATOR "ZIP;NSIS")
25+
set(CPACK_NSIS_EXECUTABLES_DIRECTORY .)
26+
set(CPACK_NSIS_PACKAGE_NAME "EOS.IO v${CPACK_PACKAGE_VERSION}")
27+
set(CPACK_NSIS_DISPLAY_NAME "${CPACK_NSIS_PACKAGE_NAME}")
28+
set(CPACK_NSIS_DEFINES " !define MUI_STARTMENUPAGE_DEFAULTFOLDER \\\"EOS.IO\\\"")
29+
# windows zip files usually don't have a single directory inside them, unix tgz usually do
30+
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 0)
2731
elseif(APPLE)
2832
set(CPACK_GENERATOR "DragNDrop")
2933
else()
30-
# Linux gets a .tgz
31-
SET(CPACK_GENERATOR "TGZ;DEB")
32-
SET(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
33-
SET(CPACK_INCLUDE_TOPLEVEL_DIRECTORY 1)
34+
set(CPACK_GENERATOR "DEB")
35+
set(CPACK_DEBIAN_PACKAGE_RELEASE 0)
36+
if(CMAKE_VERSION VERSION_GREATER 3.6.0) # Buggy in 3.5, behaves like VERSION_GREATER_EQUAL
37+
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
38+
else()
39+
string(TOLOWER ${CPACK_PACKAGE_NAME} CPACK_DEBIAN_PACKAGE_NAME)
40+
execute_process(COMMAND dpkg --print-architecture OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE)
41+
SET(CPACK_PACKAGE_FILE_NAME ${CPACK_DEBIAN_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}-${CPACK_DEBIAN_PACKAGE_RELEASE}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE})
42+
endif()
43+
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
44+
set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY TRUE)
45+
set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION TRUE)
46+
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE "https://github.com/EOSIO/eos")
3447
endif()
3548

3649
include(CPack)

CMakeModules/wasm.cmake

+6-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ macro(compile_wast)
5454
endif()
5555

5656
set(WASM_COMMAND ${WASM_CLANG} -emit-llvm -O3 ${STDFLAG} --target=wasm32 -ffreestanding
57-
-nostdlib -nostdlibinc -fno-threadsafe-statics -fno-rtti -fno-exceptions
57+
-nostdlib -nostdlibinc -fno-threadsafe-statics -fno-rtti -fno-exceptions
5858
-c ${infile} -o ${outfile}.bc
5959
)
6060
if (${ARG_NOWARNINGS})
@@ -111,6 +111,8 @@ macro(add_wast_library)
111111
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
112112
VERBATIM
113113
)
114+
#TODO: Fix this path on pending cmake install changes
115+
install(FILES ${${ARG_TARGET}_BC_FILENAME} DESTINATION usr/share/eosio/contractsdk/lib)
114116

115117
endmacro(add_wast_library)
116118

@@ -188,4 +190,7 @@ macro(add_wast_executable)
188190

189191
set(extra_target_dependency)
190192

193+
add_test(NAME "validate_${target}_abi"
194+
COMMAND ${CMAKE_BINARY_DIR}/scripts/abi_is_json.py ${ABI_FILES})
195+
191196
endmacro(add_wast_executable)

Docker/Dockerfile

+20-15
Original file line numberDiff line numberDiff line change
@@ -30,61 +30,66 @@ RUN wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.
3030
&& cd boost_1_64_0 \
3131
&& ./bootstrap.sh --prefix=/usr/local \
3232
&& echo 'using clang : 4.0 : clang++-4.0 ;' >> project-config.jam \
33-
&& ./b2 -d0 -j4 --with-thread --with-date_time --with-system --with-filesystem --with-program_options \
33+
&& ./b2 -d0 -j$(nproc) --with-thread --with-date_time --with-system --with-filesystem --with-program_options \
3434
--with-signals --with-serialization --with-chrono --with-test --with-context --with-locale --with-coroutine --with-iostreams toolset=clang link=static install \
35-
&& cd .. && rm -rf boost_1_64_0
35+
&& cd - && rm -rf boost_1_64_0
3636

37-
RUN wget https://github.com/mongodb/mongo-c-driver/releases/download/1.8.0/mongo-c-driver-1.8.0.tar.gz -O - | tar -xz \
38-
&& cd mongo-c-driver-1.8.0 \
37+
RUN wget https://github.com/mongodb/mongo-c-driver/releases/download/1.9.3/mongo-c-driver-1.9.3.tar.gz -O - | tar -xz \
38+
&& cd mongo-c-driver-1.9.3 \
3939
&& ./configure --disable-automatic-init-and-cleanup --prefix=/usr/local \
40-
&& make install \
41-
&& cd .. && rm -rf mongo-c-driver-1.8.0
40+
&& make -j$(nproc) install \
41+
&& cd - && rm -rf mongo-c-driver-1.9.3
4242

4343
RUN git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/llvm.git \
4444
&& git clone --depth 1 --single-branch --branch release_40 https://github.com/llvm-mirror/clang.git llvm/tools/clang \
4545
&& cd llvm \
4646
&& cmake -H. -Bbuild -GNinja -DCMAKE_INSTALL_PREFIX=/opt/wasm -DLLVM_TARGETS_TO_BUILD= -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly -DCMAKE_BUILD_TYPE=Release \
4747
&& cmake --build build --target install \
48-
&& cd .. && rm -rf llvm
48+
&& cd - && rm -rf llvm
4949

5050
RUN wget https://github.com/WebAssembly/binaryen/archive/1.37.21.tar.gz -O - | tar -xz \
5151
&& cd binaryen-1.37.21 \
5252
&& cmake -H. -Bbuild -GNinja -DCMAKE_BUILD_TYPE=Release \
5353
&& cmake --build build --target install \
54-
&& cd .. && rm -rf binaryen-1.37.21
54+
&& cd - && rm -rf binaryen-1.37.21
5555

5656

5757
RUN git clone --depth 1 git://github.com/cryptonomex/secp256k1-zkp \
5858
&& cd secp256k1-zkp \
5959
&& ./autogen.sh \
6060
&& ./configure --prefix=/usr/local \
61-
&& make install \
62-
&& cd .. && rm -rf secp256k1-zkp
61+
&& make -j$(nproc) install \
62+
&& cd - && rm -rf secp256k1-zkp
6363

6464
RUN git clone --depth 1 -b releases/stable git://github.com/mongodb/mongo-cxx-driver \
6565
&& cd mongo-cxx-driver \
6666
&& cmake -H. -Bbuild -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local\
67-
&& cmake --build build --target install
67+
&& cmake --build build --target install && cd - && rm -rf mongo-cxx-driver
6868

69+
RUN git clone --depth 1 --single-branch --branch master https://github.com/ucb-bar/berkeley-softfloat-3.git \
70+
&& cd berkeley-softfloat-3/build/Linux-x86_64-GCC \
71+
&& make -j${nproc} SPECIALIZE_TYPE="8086-SSE" SOFTFLOAT_OPS="-DSOFTFLOAT_ROUND_EVEN -DINLINE_LEVEL=5 -DSOFTFLOAT_FAST_DIV32TO16 -DSOFTFLOAT_FAST_DIV64TO32" \
72+
&& mkdir -p /opt/berkeley-softfloat-3 && cp softfloat.a /opt/berkeley-softfloat-3/libsoftfloat.a \
73+
&& mv ../../source/include /opt/berkeley-softfloat-3/include && cd - && rm -rf berkeley-softfloat-3
74+
ENV SOFTFLOAT_ROOT /opt/berkeley-softfloat-3
6975

7076
### If you don't want to change the depedencies, you can comment out above lines and uncomnent the following line to get faster build time.
7177
# FROM huangminghuang/eos_builder as builder
7278

7379
RUN git clone -b master --depth 1 https://github.com/EOSIO/eos.git --recursive \
7480
&& cd eos \
7581
&& cmake -H. -B"/tmp/build" -GNinja -DCMAKE_BUILD_TYPE=Release -DWASM_ROOT=/opt/wasm -DCMAKE_CXX_COMPILER=clang++ \
76-
-DCMAKE_C_COMPILER=clang -DCMAKE_INSTALL_PREFIX=/opt/eos -DSecp256k1_ROOT_DIR=/usr/local \
82+
-DCMAKE_C_COMPILER=clang -DCMAKE_INSTALL_PREFIX=/tmp/build -DSecp256k1_ROOT_DIR=/usr/local \
7783
&& cmake --build /tmp/build --target install
7884

79-
80-
8185
FROM ubuntu:16.04
8286
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -y install openssl && rm -rf /var/lib/apt/lists/*
8387
COPY --from=builder /usr/local/lib/* /usr/local/lib/
84-
COPY --from=builder /tmp/build/install/bin /opt/eosio/bin
88+
COPY --from=builder /tmp/build/bin /opt/eosio/bin
8589
COPY --from=builder /tmp/build/contracts /contracts
8690
COPY --from=builder /eos/Docker/config.ini /eos/genesis.json /
8791
COPY start_eosiod.sh /opt/eosio/bin/start_eosiod.sh
92+
ENV EOSIO_ROOT=/opt/eosio
8893
RUN chmod +x /opt/eosio/bin/start_eosiod.sh
8994
ENV LD_LIBRARY_PATH /usr/local/lib
9095
VOLUME /opt/eosio/bin/data-dir

0 commit comments

Comments
 (0)