language: cpp compiler: - clang - gcc env: - TARGET=debug - TARGET=debug.nounity # We can specify any combination of builds here, for example, to # include release builds, too, uncomment the following lines. #- TARGET=release #- TARGET=release.nounity before_install: - sudo apt-get update -qq - sudo apt-get install -qq python-software-properties - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test - sudo add-apt-repository -y ppa:afrank/boost - sudo apt-get update -qq - sudo apt-get install -qq g++-4.8 - sudo apt-get install -qq libboost1.57-all-dev - sudo apt-get install -qq mlocate - sudo updatedb - sudo locate libboost | grep /lib | grep -e ".a$" - sudo apt-get install -qq protobuf-compiler libprotobuf-dev libssl-dev exuberant-ctags # We need gcc >= 4.8 for some c++11 features - sudo apt-get install -qq gcc-4.8 - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 - sudo update-alternatives --set gcc /usr/bin/gcc-4.8 # Stuff is gold. Nuff said ;) - sudo apt-get -y install binutils-gold # We can get a backtrace if the guy crashes - sudo apt-get -y install gdb # What versions are we ACTUALLY running? - g++ -v - clang -v # Avoid `spurious errors` caused by ~/.npm permission issues # Does it already exist? Who owns? What permissions? - ls -lah ~/.npm || mkdir ~/.npm # Make sure we own it - sudo chown -R $USER ~/.npm script: # Set so any failing command will abort the build - set -e # Make sure vcxproj is up to date - scons vcxproj - git diff --exit-code # $CC will be either `clang` or `gcc` (If only we could do -j12 ;) - scons $CC.$TARGET # We can be sure we're using the build/$CC.$TARGET variant (-f so never err) - rm -f build/rippled - export RIPPLED_PATH="$PWD/build/$CC.$TARGET/rippled" # See what we've actually built - ldd $RIPPLED_PATH # Run unittests (under gdb) - | # create gdb script echo "set env MALLOC_CHECK_=3" > script.gdb echo "run" >> script.gdb echo "backtrace full" >> script.gdb # gdb --help - cat script.gdb | gdb --ex 'set print thread-events off' --return-child-result --args $RIPPLED_PATH --unittest - npm install # Use build/(gcc|clang).$TARGET/rippled - | echo "exports.default_server_config = {\"rippled_path\" : \"$RIPPLED_PATH\"};" > test/config.js # Run integration tests - npm test notifications: email: false irc: channels: - "chat.freenode.net#ripple-dev"