diff --git a/.travis.yml b/.travis.yml index b997200..4d131c9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,11 +5,7 @@ sudo: false cache: apt: true directories: - - $HOME/.cache/cmake - - $HOME/.cache/boost - - $HOME/.cache/zmq - - $HOME/.cache/grpc - - $HOME/.cache/protobuf + - $HOME/.cache/spack addons: apt: @@ -19,25 +15,17 @@ addons: - tree - gcc-6 - g++-6 # also possible: g++5.2 or g++-6 - - clang-3.5 - - openmpi-bin - - libopenmpi-dev + - gfortran-6 env: global: - - CMAKE_ROOT: $HOME/.cache/cmake - - BOOST_ROOT: $HOME/.cache/boost - - ZMQ_ROOT: $HOME/.cache/zmq - - GRPC_ROOT: $HOME/.cache/grpc - - PROTOBUF_ROOT: $HOME/.cache/protobuf - - BOOST_LIBRARY_DIR: $HOME/.cache/boost - - BOOST_MIN: 106100 # careful: hard coded below - GRAYBAT_ROOT: $TRAVIS_BUILD_DIR + - SPACK_DIR: $HOME/.cache/spack + - SPACK_HZDR_DIR: $HOME/spack-repo matrix: - COMPILER=gcc STRATEGY="" before_install: - - mkdir -p $HOME/build - export CMAKE_FLAGS="-DCMAKE_CXX_FLAGS=\"-Werror\"" - if [ "$COMPILER" == "gcc" ]; then echo "Using g++-6"; @@ -54,105 +42,22 @@ before_install: - $CC --version install: + - echo "Install stage" + - tree -L 3 $SPACK_DIR + - rm -fr $SPACK_DIR ############################################################################# - # CMAKE # + # SPACK # ############################################################################# - - export PATH=$CMAKE_ROOT/bin:$PATH - - CMAKE_33_FOUND=$(cmake --version | grep " 3\.3\." >/dev/null && { echo 0; } || { echo 1; }) - - if [ $CMAKE_33_FOUND -ne 0 ]; then - mkdir -p $CMAKE_ROOT && - cd $CMAKE_ROOT && - travis_retry wget --no-check-certificate http://www.cmake.org/files/v3.3/cmake-3.3.2-Linux-x86_64.tar.gz && - tar -xzf cmake-3.3.2-Linux-x86_64.tar.gz --overwrite && - mv -f cmake-3.3.2-Linux-x86_64/* . && - rm -rf cmake-3.3.2-Linux-x86_64.tar.gz cmake-3.3.2-Linux-x86_64 && - cd -; + - if [ ! -d "$SPACK_DIR" ] ; then + git clone https://github.com/LLNL/spack.git $SPACK_DIR; fi - - cmake --version - ############################################################################# - # BOOST # - ############################################################################# - - export CMAKE_PREFIX_PATH=$BOOST_ROOT:$CMAKE_PREFIX_PATH - # cmake --find-package -DNAME=Boost -DCOMPILER_ID=GNU -DLANGUAGE=CXX -DMODE=EXIST - - echo -e "#include \n#include \nint main() { std::cout << BOOST_VERSION << std::endl; return 0; }" - | $CXX -I$BOOST_ROOT/include -x c++ - >/dev/null || { echo 0; } - - ls $BOOST_ROOT - - BOOST_FOUND=$([ $(./a.out) -ge $BOOST_MIN ] && { echo 0; } || { echo 1; }) - - if [ $BOOST_FOUND -ne 0 ]; then - mkdir -p $BOOST_ROOT && - cd $BOOST_ROOT && - travis_retry wget --no-check-certificate -O boost.tar.bz2 http://sourceforge.net/projects/boost/files/boost/1.61.0/boost_1_61_0.tar.bz2/download && - tar -xjf boost.tar.bz2 --overwrite && - cd boost_1_61_0 && - echo "using gcc "":"" 6 "":"" /usr/bin/g++-6 ; " >> tools/build/src/user-config.jam && - ./bootstrap.sh toolset=gcc-6 --with-libraries=filesystem,mpi,program_options,system,test,serialization --prefix=$BOOST_ROOT && - echo "using mpi ;" >> tools/build/src/user-config.jam && - ./b2 -j2 -target=shared,static && - ./b2 install && - rm -rf boost.tar.bz2 boost_1_61_0 && - cd $HOME; - fi - ############################################################################# - # ZMQ # - ############################################################################# - - export CMAKE_PREFIX_PATH=$ZMQ_ROOT:$CMAKE_PREFIX_PATH - - echo $CMAKE_PREFIX_PATH - - ls $ZMQ_ROOT - - if [ ! "$(ls -A $ZMQ_ROOT)" ]; then - cd /tmp/ && - travis_retry git clone https://github.com/zeromq/libzmq.git&& - travis_retry git clone https://github.com/zeromq/cppzmq.git; - cd /tmp/libzmq/ && - ./autogen.sh && - mkdir -p $ZMQ_ROOT && - ./configure --prefix=$ZMQ_ROOT && - make && - make install && - cp /tmp/cppzmq/zmq.hpp $ZMQ_ROOT/include/ && - cp /tmp/cppzmq/zmq_addon.hpp $ZMQ_ROOT/include/; - else - echo "ZeroMQ directory already exists"; - fi - ############################################################################# - # PROTOBUF - ############################################################################# - - export CMAKE_PREFIX_PATH=$PROTOBUF_ROOT:$CMAKE_PREFIX_PATH - - echo $CMAKE_PREFIX_PATH - - tree $PROTOBUF_ROOT - - if [ ! "$(ls -A $PROTOBUF_ROOT)" ]; then - cd /tmp/; - travis_retry git clone https://github.com/google/protobuf.git; - cd /tmp/protobuf/; - ./autogen.sh; - mkdir -p $PROTOBUF_ROOT; - ./configure --prefix=$PROTOBUF_ROOT; - make check; - make install; - else - echo "Protobuf directory already exists"; - fi - ############################################################################# - # GRPC # - ############################################################################# - - export CMAKE_PREFIX_PATH=$GRPC_ROOT:$CMAKE_PREFIX_PATH - - echo $CMAKE_PREFIX_PATH - - tree $GRPC_ROOT - - if [ ! "$(ls -A $GRPC_ROOT)" ]; then - cd /tmp/; - travis_retry git clone -b $(curl -L http://grpc.io/release) https://github.com/grpc/grpc; - cd /tmp/grpc/; - git submodule update --init; - mkdir -p $GRPC_ROOT; - make prefix=$GRPC_ROOT install; - else - echo "Grpc directory already exists"; + - if [ ! -d "$SPACK_HZDR_DIR" ] ; then + git clone https://github.com/ComputationalRadiationPhysics/spack-repo.git $SPACK_HZDR_DIR; fi + - $SPACK_DIR/bin/spack repo add $SPACK_HZDR_DIR || true + - travis_wait 50 $SPACK_DIR/bin/spack install graybat@develop +mpi +zeromq + - tree -L 3 $SPACK_DIR + - tree -L 3 $SPACK_HZDR_DIR script: - - cd $HOME/build - - cmake $CMAKE_FLAGS $GRAYBAT_ROOT - - make check - - make signaling - - ./signaling& - - ctest --output-on-failure - - killall signaling \ No newline at end of file + - echo "Script state" diff --git a/CMakeLists.txt b/CMakeLists.txt index a8d0df5..b86758e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -90,13 +90,18 @@ add_executable(benchmark ${BENCHMARKS} ${graybat_GENERATED_FILES}) target_link_libraries(benchmark ${LIBS}) # Test cases -file(GLOB INTEGRATION_TESTS test/integration/*.cpp) -add_executable(check ${INTEGRATION_TESTS} ${graybat_GENERATED_FILES}) -target_compile_definitions(check PRIVATE ${graybat_DEFINITIONS}) -target_link_libraries(check ${LIBS}) -add_test(graybat_check_build "${CMAKE_COMMAND}" --build ${CMAKE_BINARY_DIR} --target check) -add_test(graybat_test_run_2_peers mpiexec -n 2 check ) -set_tests_properties(graybat_test_run_2_peers PROPERTIES DEPENDS graybat_check_build) +if(graybat_BMPI_CP_ENABLED) + file(GLOB INTEGRATION_TESTS test/integration/*.cpp) + add_executable(check ${INTEGRATION_TESTS} ${graybat_GENERATED_FILES}) + target_compile_definitions(check PRIVATE ${graybat_DEFINITIONS}) + target_link_libraries(check ${LIBS}) + if(NOT graybat_ZMQ_CP_ENABLED) + add_test(graybat_check_build "${CMAKE_COMMAND}" --build ${CMAKE_BINARY_DIR} --target check) + add_test(graybat_test_run_2_peers + ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} check ${MPIEXEC_POSTFLAGS}) + set_tests_properties(graybat_test_run_2_peers PROPERTIES DEPENDS graybat_check_build) + endif() +endif() file(GLOB UNIT_TESTS test/unit/main.cpp test/unit/*Tests.cpp) add_executable(unit_tests ${UNIT_TESTS} ${graybat_GENERATED_FILES})