提交 e47ae41b 编写于 作者: A Adam Mitz

Travis build and mongo library configuration

上级 f4f85503
......@@ -3,7 +3,9 @@ compiler: clang
services: mongodb
matrix:
- dist: trusty
include:
- os: linux
dist: trusty
sudo: false
addons:
apt:
......@@ -16,33 +18,65 @@ matrix:
- g++-6
- ninja-build
- libgmp-dev
env: WASM_BRANCH=master CMAKE_DIR=$TRAVIS_BUILD_DIR/ext/cmake-3.9.0-Linux-x86_64/bin/
env:
- WASM_BRANCH=master
- CMAKE_DIR=$TRAVIS_BUILD_DIR/ext/cmake-3.9.0-Linux-x86_64/bin/
- CC=clang-4.0
- CXX=clang++-4.0
- LD_LIBRARY_PATH=$TRAVIS_BUILD_DIR/ext/lib
- MONGOCXX_CMAKE_OPTIONS="-DLIBBSON_DIR=$TRAVIS_BUILD_DIR/ext -DLIBMONGOC_DIR=$TRAVIS_BUILD_DIR/ext"
- EOS_CMAKE_OPTIONS="-DBOOST_ROOT=$TRAVIS_BUILD_DIR/ext"
- os: osx
osx_image: xcode9.1
env: WASM_BRANCH=macos
env:
- WASM_BRANCH=macos
- CC=/usr/local/opt/llvm@4/bin/clang
- CXX=/usr/local/opt/llvm@4/bin/clang++
- MONGOCXX_CMAKE_OPTIONS="-DLIBBSON_DIR=/usr/local -DLIBMONGOC_DIR=/usr/local"
- EOS_CMAKE_OPTIONS="-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl"
before_install:
- mkdir ext && cd ext
- cd $TRAVIS_BUILD_DIR/ext && git clone --depth=1 --single-branch git://github.com/cryptonomex/secp256k1-zkp
- cd secp256k1-zkp && ./autogen.sh && ./configure --prefix=$TRAVIS_BUILD_DIR/ext CC=clang-4.0 CXX=clang++-4.0 && make && make install
- cd $TRAVIS_BUILD_DIR/ext && git clone --depth=1 --single-branch -b $WASM_BRANCH git://github.com/oci-labs/clang-WebAssembly wasm-compiler
- if [ "$TRAVIS_OS_NAME" == "osx" ]; then brew install boost openssl llvm@4 gmp gettext ninja
- CMAKE_OPTIONS="-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DCMAKE_CXX_COMPILER=/usr/local/opt/llvm@4/bin/clang++ -DCMAKE_C_COMPILER=/usr/local/opt/llvm@4/bin/clang"
- else
- wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.bz2 && tar xjf boost_1_64_0.tar.bz2
- "cd boost_1_64_0 && ./bootstrap.sh --prefix=$TRAVIS_BUILD_DIR/ext && echo 'using clang : 4.0 : clang++-4.0 ;' >> project-config.jam && ./b2 -d0 -j4 --with-thread --with-date_time --with-system --with-filesystem --with-program_options --with-signals --with-serialization --with-chrono --with-test --with-context --with-locale --with-coroutine toolset=clang link=static install"
- cd $TRAVIS_BUILD_DIR/ext && wget https://cmake.org/files/v3.9/cmake-3.9.0-Linux-x86_64.tar.gz && tar xzf cmake-3.9.0-Linux-x86_64.tar.gz
- cd $TRAVIS_BUILD_DIR/ext && wget https://github.com/mongodb/mongo-c-driver/releases/download/1.8.0/mongo-c-driver-1.8.0.tar.gz && tar xzf mongo-c-driver-1.8.0.tar.gz
- cd mongo-c-driver-1.8.0 && ./configure --disable-automatic-init-and-cleanup --enable-static CC=clang-4.0 CXX=clang++-4.0 && make && sudo make install
- cd $TRAVIS_BUILD_DIR/ext && git clone https://github.com/mongodb/mongo-cxx-driver.git --branch releases/stable --depth 1
- export CC="clang-4.0" && export CXX="clang++-4.0" && export LD_LIBRARY_PATH=/usr/local/lib
- cd mongo-cxx-driver/build && $TRAVIS_BUILD_DIR/ext/cmake-3.9.0-Linux-x86_64/bin/cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER=clang++-4.0 -DCMAKE_C_COMPILER=clang-4.0 -DCMAKE_INSTALL_PREFIX=/usr/local .. && sudo make EP_mnmlstc_core && make && sudo make install
- CMAKE_OPTIONS="-DCMAKE_CXX_COMPILER=clang++-4.0 -DCMAKE_C_COMPILER=clang-4.0 -DBOOST_ROOT=$TRAVIS_BUILD_DIR/ext"
- fi
- cd $TRAVIS_BUILD_DIR
- |
mkdir ext && cd ext
git clone --depth 1 -b $WASM_BRANCH git://github.com/oci-labs/clang-WebAssembly wasm-compiler
if [ "$TRAVIS_OS_NAME" == "osx" ]; then
brew install boost openssl llvm@4 gmp gettext ninja
brew link gettext --force
else
wget https://dl.bintray.com/boostorg/release/1.64.0/source/boost_1_64_0.tar.bz2
tar xjf boost_1_64_0.tar.bz2
cd boost_1_64_0
./bootstrap.sh --prefix=$TRAVIS_BUILD_DIR/ext
"echo 'using clang : 4.0 : clang++-4.0 ;' >> project-config.jam"
./b2 -d0 -j4 --with-thread --with-date_time --with-system --with-filesystem --with-program_options --with-signals --with-serialization --with-chrono --with-test --with-context --with-locale --with-coroutine toolset=clang link=static install
cd $TRAVIS_BUILD_DIR/ext
wget https://cmake.org/files/v3.9/cmake-3.9.0-Linux-x86_64.tar.gz
tar xzf cmake-3.9.0-Linux-x86_64.tar.gz
wget https://github.com/mongodb/mongo-c-driver/releases/download/1.8.0/mongo-c-driver-1.8.0.tar.gz
tar xzf mongo-c-driver-1.8.0.tar.gz
cd mongo-c-driver-1.8.0
./configure --disable-automatic-init-and-cleanup --enable-static --prefix=$TRAVIS_BUILD_DIR/ext
make
make install
fi
cd $TRAVIS_BUILD_DIR/ext
git clone --depth 1 git://github.com/cryptonomex/secp256k1-zkp
cd secp256k1-zkp
./autogen.sh
./configure --prefix=$TRAVIS_BUILD_DIR/ext
make
make install
cd $TRAVIS_BUILD_DIR/ext
git clone --depth 1 -b releases/stable git://github.com/mongodb/mongo-cxx-driver
cd mongo-cxx-driver/build
${CMAKE_DIR}cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$TRAVIS_BUILD_DIR/ext $MONGOCXX_CMAKE_OPTIONS ..
ninja install
cd $TRAVIS_BUILD_DIR
script:
- mkdir build && cd build
- ${CMAKE_DIR}cmake -G Ninja -DWASM_LLVM_CONFIG=$TRAVIS_BUILD_DIR/ext/wasm-compiler/bin/llvm-config -DSecp256k1_ROOT_DIR=$TRAVIS_BUILD_DIR/ext -DBINARYEN_ROOT=$TRAVIS_BUILD_DIR/ext/wasm-compiler/ $CMAKE_OPTIONS ..
- ${CMAKE_DIR}cmake -G Ninja -DWASM_LLVM_CONFIG=$TRAVIS_BUILD_DIR/ext/wasm-compiler/bin/llvm-config -DSecp256k1_ROOT_DIR=$TRAVIS_BUILD_DIR/ext -DBINARYEN_ROOT=$TRAVIS_BUILD_DIR/ext/wasm-compiler $EOS_CMAKE_OPTIONS ..
- ninja -j4
- tests/eosd_run_test.sh
- tests/chain_test
......
......@@ -6,22 +6,30 @@ add_library( db_plugin
find_package(libmongoc-1.0 1.8)
if (libmongoc-1.0_FOUND)
message("-- mongoc found version \"${MONGOC_VERSION}\"")
message("-- mongoc include path \"${MONGOC_INCLUDE_DIRS}\"")
message("-- mongoc libraries \"${MONGOC_LIBRARIES}\"")
find_package(PkgConfig QUIET)
# EOS has no direct dependencies on libmongoc but its shared libraries
# will need to be present at runtime for the C++ libraries we use:
# libbsoncxx & libmongocxx (both from github.com/mongodb/mongo-cxx-driver)
# NOTE: For this to work, the PKG_CONFIG_PATH variable (man pkg-config) must be set to point to the
# 'lib/pkgconfig' subdirectory of the directory used as the argument to CMAKE_INSTALL_PREFIX when
# building libmongocxx and libbsoncxx.
pkg_search_module(BSONCXX REQUIRED libbsoncxx)
pkg_search_module(MONGOCXX REQUIRED libmongocxx)
# The *.cmake package files provided by mongo-cxx-driver don't give us the
# absolute path to the libraries, which is needed whenever they are not
# installed in system-known locations. CMake requires the absolute paths
# in target_link_libraries() since we are builiding an archive and the
# link step for all executables using this archive must include the
# mongo-cxx-driver libraries libmongocxx and libbsoncxx.
find_package(libbsoncxx REQUIRED)
message("Found bsoncxx headers: ${LIBBSONCXX_INCLUDE_DIRS}")
find_library(EOS_LIBBSONCXX ${LIBBSONCXX_LIBRARIES}
PATHS ${LIBBSONCXX_LIBRARY_DIRS} NO_DEFAULT_PATH)
message("Found bsoncxx library: ${EOS_LIBBSONCXX}")
find_package(libmongocxx REQUIRED)
message("Found mongocxx headers: ${LIBMONGOCXX_INCLUDE_DIRS}")
find_library(EOS_LIBMONGOCXX ${LIBMONGOCXX_LIBRARIES}
PATHS ${LIBMONGOCXX_LIBRARY_DIRS} NO_DEFAULT_PATH)
message("Found mongocxx library: ${EOS_LIBMONGOCXX}")
link_directories(
${MONGOCXX_LIBRARY_DIRS}
${BSONCXX_LIBRARY_DIRS}
)
add_definitions(-DMONGODB)
else()
message("Could NOT find MongoDB. db_plugin with MongoDB support will not be included.")
......@@ -44,13 +52,17 @@ else()
endif()
target_include_directories(db_plugin
PRIVATE ${MONGOCXX_INCLUDE_DIRS}
PRIVATE ${BSONCXX_INCLUDE_DIRS}
PRIVATE ${LIBMONGOCXX_INCLUDE_DIRS} ${LIBBSONCXX_INCLUDE_DIRS}
PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include"
)
target_compile_definitions(db_plugin
PRIVATE ${LIBMONGOCXX_DEFINITIONS} ${LIBBSONCXX_DEFINITIONS}
)
target_link_libraries(db_plugin
PUBLIC chain_plugin eos_chain appbase
PRIVATE ${MONGOCXX_LIBRARIES} ${BSONCXX_LIBRARIES}
${EOS_LIBMONGOCXX} ${EOS_LIBBSONCXX}
)
install( TARGETS
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册