diff --git a/.travis.yml b/.travis.yml index 68080aba..db3dbaa7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,12 +7,15 @@ env: - PROTOBUF_VERSION=2.6.0 install: + - sudo pip install --user cpp-coveralls - echo | sudo apt-add-repository ppa:boost-latest/ppa - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test - sudo apt-get update - - sudo apt-get install -qq g++-4.8 + - sudo apt-get install -qq g++-4.8 lcov - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20 + - sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-4.8 20 - sudo update-alternatives --config g++ + - sudo update-alternatives --config gcov - sudo apt-get install libboost-dev - wget https://github.com/google/protobuf/releases/download/v$PROTOBUF_VERSION/protobuf-$PROTOBUF_VERSION.tar.gz @@ -44,22 +47,29 @@ install: before_script: - - echo 'SNAPPY_PATH=./thirdparty/snappy' > depends.mk - - echo 'PROTOBUF_PATH=./thirdparty/protobuf' >> depends.mk - - echo 'PROTOC=protoc' >> depends.mk - - echo 'PBRPC_PATH=./thirdparty/sofa-pbrpc/output' >> depends.mk - - echo 'TCMALLOC_PATH=./thirdparty' >> depends.mk - - echo 'COMMON_PATH=./common/output' >> depends.mk - - echo 'LEVELDB_PATH=./thirdparty' >> depends.mk + - export WORK_DIR=`pwd` + - echo $WORK_DIR + - echo "WORK_PATH=$WORK_DIR" > depends.mk + - echo "SNAPPY_PATH=$WORK_DIR/thirdparty/snappy" >> depends.mk + - echo "PROTOBUF_PATH=$WORK_DIR/thirdparty/protobuf" >> depends.mk + - echo "PROTOC=protoc" >> depends.mk + - echo "PBRPC_PATH=$WORK_DIR/thirdparty/sofa-pbrpc/output" >> depends.mk + - echo "TCMALLOC_PATH=$WORK_DIR/thirdparty" >> depends.mk + - echo "COMMON_PATH=$WORK_DIR/common/output" >> depends.mk + - echo "LEVELDB_PATH=$WORK_DIR/thirdparty" >> depends.mk + - sed -i "/-lpthread -lz -lrt/s/$/ -lgcov/g" Makefile + - sed -i "/CXXFLAGS =/s/$/ -fprofile-arcs -ftest-coverage/g" Makefile script: make -j4 && make check && make test addons: - coverity_scan: - project: - name: "bluebore/bfs" - notification_email: yanshiguang02@baidu.com - build_command_prepend: "make clean" - build_command: "make -j4" - branch_pattern: master + coverity_scan: + project: + name: "bluebore/bfs" + notification_email: yanshiguang02@baidu.com + build_command_prepend: "make clean" + build_command: "make -j4" + branch_pattern: master +after_script: + - COVERALLS_REPO_TOKEN=TnLIOj8lpAgN6CjpeGSDpXsu5IF5Bmluo find . -name *.gc* | xargs rm -f && make clean && make -j4 && make check && sudo ~/.local/bin/cpp-coveralls -e src/chunkserver/test -e src/nameserver/test -e thirdparty/ -e thirdsrc/ -e ut/ -e src/proto --gcov-options '\-lpr' diff --git a/Makefile b/Makefile index 33b4a375..bd9babe7 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ OPT ?= -g2 -Werror # (B) Debug mode, w/ full line-level debugging symbols include depends.mk #CXX=/opt/compiler/gcc-4.8.2/bin/g++ -INCLUDE_PATH = -I./src -I$(PROTOBUF_PATH)/include \ +INCLUDE_PATH = -I$(WORK_PATH)/src -I$(PROTOBUF_PATH)/include \ -I$(PBRPC_PATH)/include \ -I$(LEVELDB_PATH)/include \ -I$(SNAPPY_PATH)/include \ diff --git a/README.md b/README.md index 6dff82e5..336243e5 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ [The Baidu File System](http://github.com/baidu/bfs) ====== - [![Build Status](https://travis-ci.org/baidu/bfs.svg?branch=master)](https://travis-ci.org/baidu/bfs) [![Build Status](https://scan.coverity.com/projects/8135/badge.svg)](https://scan.coverity.com/projects/myawan-bfs-1/) + [![Build Status](https://travis-ci.org/baidu/bfs.svg?branch=master)](https://travis-ci.org/baidu/bfs) [![Build Status](https://scan.coverity.com/projects/8135/badge.svg)](https://scan.coverity.com/projects/myawan-bfs-1/) [![Coverage Status](https://coveralls.io/repos/github/baidu/bfs/badge.svg?branch=master)](https://coveralls.io/github/baidu/bfs?branch=master) The Baidu File System (BFS) is a distributed file system designed to support real-time applications. Like many other distributed file systems, BFS is highly fault-tolerant. But different from others, BFS provides low read/write latency while maintaining high throughput rates. Together with [Galaxy](https://github.com/baidu/galaxy) and [Tera](http://github.com/baidu/tera), BFS supports many real-time products in Baidu, including Baidu webpage database, Baidu incremental indexing system, Baidu user behavior analysis system, etc. diff --git a/build.sh b/build.sh index a75db86b..e63a5a6a 100755 --- a/build.sh +++ b/build.sh @@ -171,19 +171,21 @@ cd ${WORK_DIR} # config depengs.mk ######################################## -echo "PBRPC_PATH=./thirdparty" > depends.mk -echo "PROTOBUF_PATH=./thirdparty" >> depends.mk -echo "PROTOC_PATH=./thirdparty/bin/" >> depends.mk +echo "WORK_PATH=${WORK_DIR}" > depends.mk +echo "PBRPC_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "PROTOBUF_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "PROTOC_PATH=${WORK_DIR}/thirdparty/bin/" >> depends.mk echo 'PROTOC=$(PROTOC_PATH)protoc' >> depends.mk -echo "PBRPC_PATH=./thirdparty" >> depends.mk -echo "BOOST_PATH=./thirdparty/boost_1_57_0" >> depends.mk -echo "GFLAG_PATH=./thirdparty" >> depends.mk -echo "GTEST_PATH=./thirdparty" >> depends.mk -echo "COMMON_PATH=./thirdparty" >> depends.mk -echo "TCMALLOC_PATH=./thirdparty" >> depends.mk +echo "PBRPC_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "GFLAG_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "GTEST_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "COMMON_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "TCMALLOC_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "SNAPPY_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "LEVELDB_PATH=${WORK_DIR}/thirdparty" >> depends.mk ######################################## -# build tera +# build bfs ######################################## make clean diff --git a/internal_build.sh b/internal_build.sh index 97db005e..25aecaec 100755 --- a/internal_build.sh +++ b/internal_build.sh @@ -174,15 +174,18 @@ cd ${WORK_DIR} # config depengs.mk ######################################## -echo "PBRPC_PATH=./thirdparty" > depends.mk -echo "PROTOBUF_PATH=./thirdparty" >> depends.mk -echo "PROTOC_PATH=./thirdparty/bin/" >> depends.mk +echo "WORK_PATH=${WORK_DIR}" > depends.mk +echo "PBRPC_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "PROTOBUF_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "PROTOC_PATH=${WORK_DIR}/thirdparty/bin/" >> depends.mk echo 'PROTOC=$(PROTOC_PATH)protoc' >> depends.mk -echo "PBRPC_PATH=./thirdparty" >> depends.mk -echo "GFLAG_PATH=./thirdparty" >> depends.mk -echo "GTEST_PATH=./thirdparty" >> depends.mk -echo "COMMON_PATH=./thirdparty" >> depends.mk -echo "TCMALLOC_PATH=./thirdparty" >> depends.mk +echo "PBRPC_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "GFLAG_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "GTEST_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "COMMON_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "TCMALLOC_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "SNAPPY_PATH=${WORK_DIR}/thirdparty" >> depends.mk +echo "LEVELDB_PATH=${WORK_DIR}/thirdparty" >> depends.mk ######################################## # build bfs