1a1e9a2340
When CONSERVE_MEMORY=ON and gcc is being used, we provide additional command line options that will minimize the amount of memory used by gcc when compiling Lean. This is an attempt to fix the "out-of-memory" failures when building Lean at Travis.
333 lines
14 KiB
YAML
333 lines
14 KiB
YAML
language: cpp
|
|
cache: apt
|
|
env:
|
|
global:
|
|
# GH_TOKEN=[secure] (to push to osx/windows repo under soonhokong)
|
|
- secure: "bDcZ1BusPgeFcilXBXqJ+aLWmCD6ET6SY6GaIDz66zFFVvHULkr8PcGQgKHw/VxH4Kbll52hkKwYgKhXyBF+VlHiyAxQHzlr17honzIl42vbz+tC5qr4/oDASolqayUtz9xJqNOFbTwvh5EHZLbG5hjudSdGE8LX3QC6IN7wYy8="
|
|
# DROPBOX_KEY=[secure] (to send binaries to dropbox, "access_token")
|
|
- secure: "CyASf1F7hGwB85jUQOfDoNBQSouSayP4BVvjqAJdRxirui/oyw2sJ02HC6ZTM+LO+ZyWy3eJOGwe81z6PEQFzovv9C8VLRbhV8Tk7aN+nQTCyyKLoxsON/T5PO/C74ZSu5hTNMwnHrbdphc88Y4ZrQqL2M3cTWT5nVFCshEq6IM="
|
|
# REPO=BLESSED (to perform extra stuff only for pushes to the blessed repo)
|
|
- secure: "iZEcYPaxqGRQs7loHwO88DlewbRngBwoNGfo438jabh0adF3y9zCPw0tcAtp6IJuCw8E6QVoM9JMwoQRvPbnqBelFjpXH+U3eYdaeeZRkBkyOthTWzzdwEexlnK7dXVEc+gTDjh2NBD9juXKDSJ5xOF1HfhEJaMXSLairnhpL6k="
|
|
# COVERALLS_REPO_TOKEN=[secure] (from https://coveralls.io/r/leanprover/lean)
|
|
- secure: "j14U5pV2qkArCTt4MdI+rYe9MzcIcoMYrPX3Kp4bFNAyxfTALHG25bZUaEyqBJKPevch02+i8hs3I/+b9Iue0j8be8hjy7GSKDEkhbd8HIWJMvMBM1Y+h88ZPTvTiEB9OCbHa6PrETN+3WO8cSe3PufWO7cwoOqzWuY440ZZqSM="
|
|
# BB_TOKEN=[secure] (to push to https://bitbucket.org/leanprover/lean for backup & email diff)
|
|
- secure: "NvPi430kKhteshcxiYP4oHbMFaSiz6bmoENA55sxD7bI0EmsKvuRJFPfFr3g8gl9hNnuNABOTK4xNcWjNDRtHBjnGYHytyaYLEYjpNGTlmTzc21q/FheWL32K2rkvvaRa0ZrDt8p1k1lr07Z69oFFIGCigAdcTCEhMO9Clxlxts="
|
|
matrix:
|
|
# =======================================================
|
|
# TESTCOV Build
|
|
# =======================================================
|
|
# TC. g++-4.8 | DEBUG | CDASH
|
|
- CMAKE_CXX_COMPILER=g++-4.8
|
|
CMAKE_BUILD_TYPE=Debug
|
|
TESTCOV=ON
|
|
PUSH_TO_CDASH=TRUE
|
|
TCMALLOC=OFF
|
|
LUA=52
|
|
CONSERVE_MEMORY=ON
|
|
# =======================================================
|
|
# DEBUG Build
|
|
# =======================================================
|
|
# D1. clang++-3.3 | DEBUG | TCMALLOC | CDASH
|
|
- CMAKE_CXX_COMPILER=clang++-3.3
|
|
CMAKE_BUILD_TYPE=DEBUG
|
|
TCMALLOC=ON
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=52
|
|
# D2. g++-4.8 | DEBUG | TCMALLOC | CDASH + TRIGGERS
|
|
- CMAKE_CXX_COMPILER=g++-4.8
|
|
CMAKE_BUILD_TYPE=DEBUG
|
|
TRIGGER_BB=TRUE
|
|
TRIGGER_OSX=TRUE
|
|
TRIGGER_WINDOWS=TRUE
|
|
TCMALLOC=ON
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=52
|
|
CONSERVE_MEMORY=ON
|
|
# D3. clang++-3.3 | DEBUG
|
|
- CMAKE_CXX_COMPILER=clang++-3.3
|
|
CMAKE_BUILD_TYPE=DEBUG
|
|
TCMALLOC=OFF
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=52
|
|
# D4. g++-4.8 | DEBUG
|
|
- CMAKE_CXX_COMPILER=g++-4.8
|
|
CMAKE_BUILD_TYPE=DEBUG
|
|
TCMALLOC=OFF
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=52
|
|
CONSERVE_MEMORY=ON
|
|
# =======================================================
|
|
# RELEASE Build
|
|
# =======================================================
|
|
# R1. clang++-3.3 | RELEASE | TCMALLOC | CDASH
|
|
- CMAKE_CXX_COMPILER=clang++-3.3
|
|
CMAKE_BUILD_TYPE=RELEASE
|
|
TCMALLOC=ON
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=52
|
|
# R2. g++-4.8 | RELEASE | TCMALLOC | CDASH + UPLOAD=>DROPBOX
|
|
- CMAKE_CXX_COMPILER=g++-4.8
|
|
CMAKE_BUILD_TYPE=RELEASE
|
|
TCMALLOC=ON
|
|
UPLOAD=linux_tcmalloc
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=52
|
|
PACKAGE=TRUE
|
|
CONSERVE_MEMORY=ON
|
|
# R3. clang++-3.3 | RELEASE
|
|
- CMAKE_CXX_COMPILER=clang++-3.3
|
|
CMAKE_BUILD_TYPE=RELEASE
|
|
TCMALLOC=OFF
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=52
|
|
# R4. g++-4.8 | RELEASE | UPLOAD=>DROPBOX
|
|
- CMAKE_CXX_COMPILER=g++-4.8
|
|
CMAKE_BUILD_TYPE=RELEASE
|
|
TCMALLOC=OFF
|
|
UPLOAD=linux
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=52
|
|
CONSERVE_MEMORY=ON
|
|
# =======================================================
|
|
# MEMCHECK Build
|
|
# =======================================================
|
|
# M1-1. clang++-3.3 | DEBUG | MEMCHECK | CDASH
|
|
- CMAKE_CXX_COMPILER=clang++-3.3
|
|
CMAKE_BUILD_TYPE=DEBUG
|
|
TCMALLOC=OFF
|
|
MEMCHECK=TRUE
|
|
MEMCHECK_RANGE=1,40
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=52
|
|
# M1-2. clang++-3.3 | DEBUG | MEMCHECK | CDASH
|
|
- CMAKE_CXX_COMPILER=clang++-3.3
|
|
CMAKE_BUILD_TYPE=DEBUG
|
|
TCMALLOC=OFF
|
|
MEMCHECK=TRUE
|
|
MEMCHECK_RANGE=40,80
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=52
|
|
# M2-1. g++-4.8 | DEBUG | MEMCHECK | CDASH
|
|
- CMAKE_CXX_COMPILER=g++-4.8
|
|
CMAKE_BUILD_TYPE=DEBUG
|
|
TCMALLOC=OFF
|
|
MEMCHECK=TRUE
|
|
MEMCHECK_RANGE=1,40
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=52
|
|
CONSERVE_MEMORY=ON
|
|
# M2-2. g++-4.8 | DEBUG | MEMCHECK | CDASH
|
|
- CMAKE_CXX_COMPILER=g++-4.8
|
|
CMAKE_BUILD_TYPE=DEBUG
|
|
TCMALLOC=OFF
|
|
MEMCHECK=TRUE
|
|
MEMCHECK_RANGE=40,80
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=52
|
|
CONSERVE_MEMORY=ON
|
|
# =======================================================
|
|
# DOXYGEN Build
|
|
# =======================================================
|
|
# DOC. g++-4.8 | DEBUG | TCMALLOC | DOXYGEN=>DROPBOX
|
|
- CMAKE_CXX_COMPILER=g++-4.8
|
|
CMAKE_BUILD_TYPE=DOXYGEN
|
|
BUILD_DOXYGEN=TRUE
|
|
TCMALLOC=OFF
|
|
LUA=52
|
|
CONSERVE_MEMORY=ON
|
|
# =======================================================
|
|
# Different Lua Versions
|
|
# =======================================================
|
|
# L51. g++-4.8 | RELEASE | | CDASH
|
|
- CMAKE_CXX_COMPILER=g++-4.8
|
|
CMAKE_BUILD_TYPE=RELEASE
|
|
TCMALLOC=OFF
|
|
UPLOAD=linux
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=51
|
|
CONSERVE_MEMORY=ON
|
|
# LJIT. g++-4.8 | RELEASE | | CDASH
|
|
- CMAKE_CXX_COMPILER=g++-4.8
|
|
CMAKE_BUILD_TYPE=RELEASE
|
|
TCMALLOC=OFF
|
|
UPLOAD=linux
|
|
PUSH_TO_CDASH=TRUE
|
|
LUA=JIT
|
|
CONSERVE_MEMORY=ON
|
|
|
|
install:
|
|
- until sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/test; do echo retry; done
|
|
- until sudo add-apt-repository --yes ppa:h-rayflood/llvm; do echo retry; done
|
|
- until sudo add-apt-repository --yes ppa:kalakris/cmake; do echo retry; done
|
|
- until sudo apt-get -qq update; do echo retry; done
|
|
- if [[ $TCMALLOC == ON ]]; then until sudo add-apt-repository --yes ppa:agent-8131/ppa && sudo apt-get -qq update && sudo apt-get -qq install libgoogle-perftools-dev; do echo retry; done; fi
|
|
- until sudo apt-get -qq install libgmp-dev libmpfr-dev; do echo retry; done
|
|
- until sudo apt-get -qq install cmake python; do echo retry; done
|
|
- if [[ $LUA == 52 ]]; then
|
|
until sudo apt-get -qq install liblua5.2.0 lua5.2-0 lua5.2-dev; do echo retry; done;
|
|
fi
|
|
- if [[ $LUA == 51 ]]; then
|
|
until sudo apt-get -qq install liblua5.1-0 liblua5.1-0-dev lua5.1; do echo retry; done;
|
|
fi
|
|
- if [[ $LUA == JIT ]]; then
|
|
until sudo add-apt-repository --yes ppa:miurahr/openresty-devel; do echo retry; done;
|
|
until sudo apt-get -qq update; do echo retry; done;
|
|
until sudo apt-get -qq install libluajit-5.1-dev luajit; do echo retry; done;
|
|
fi
|
|
- wget http://dl.dropboxusercontent.com/u/203889738/gcc/ninja.tar.gz;
|
|
tar xfz ninja.tar.gz;
|
|
cd ninja;
|
|
./bootstrap.py > /dev/null 2>&1;
|
|
sudo cp -v ninja /usr/bin/;
|
|
cd ..;
|
|
- until sudo apt-get -qq install libstdc++-4.8-dev; do echo retry; done
|
|
- if [[ $REPO == BLESSED && $MEMCHECK == TRUE ]]; then
|
|
sudo apt-get -qq install valgrind;
|
|
fi
|
|
- if [[ $CMAKE_CXX_COMPILER == g++-4.8 ]]; then until sudo apt-get -qq install g++-4.8; do echo retry; done fi
|
|
- if [[ $CMAKE_CXX_COMPILER == clang++-3.3 ]]; then until sudo apt-get -qq install clang-3.3; do echo retry; done fi
|
|
- if [[ $REPO == BLESSED && ($UPLOAD || $BUILD_DOXYGEN == TRUE) ]]; then
|
|
sudo apt-get -qq install python python-pip;
|
|
sudo pip install dropbox;
|
|
fi
|
|
- if [[ $TESTCOV == ON ]]; then
|
|
wget http://downloads.sourceforge.net/ltp/lcov-1.10.tar.gz;
|
|
tar xvfz lcov-1.10.tar.gz;
|
|
sudo cp -v lcov-1.10/bin/{lcov,genpng,gendesc,genhtml,geninfo} /usr/bin/;
|
|
sudo chmod 777 /usr/bin/lcov /usr/bin/genhtml /usr/bin/geninfo /usr/bin/genpng /usg/bin/gendesc;
|
|
rm -rf lcov-1.10.tar.gz lcov-1.10;
|
|
sudo mv -v `which gcov-4.8` `which gcov`;
|
|
fi
|
|
|
|
before_script:
|
|
- if [[ $REPO == BLESSED && $TRIGGER_BB == TRUE ]]; then
|
|
git fetch --unshallow;
|
|
git push -q https://soonhok:${BB_TOKEN}@bitbucket.org/leanprover/lean.git +HEAD:master;
|
|
fi
|
|
- if [[ $REPO == BLESSED && $TRIGGER_OSX == TRUE ]]; then
|
|
MSG=`git log --pretty=oneline --abbrev-commit -n 1 | cut -d ' ' -f 2-`;
|
|
cp .travis.yml /tmp/.travis.temp.yml;
|
|
cp .travis.osx.yml .travis.yml;
|
|
git config --global user.email "notifications@travis-ci.org";
|
|
git config --global user.name "Travis CI";
|
|
git add .travis.yml;
|
|
git commit -m "$MSG";
|
|
git push -q https://soonhokong:${GH_TOKEN}@github.com/soonhokong/lean-osx.git +HEAD:master;
|
|
mv /tmp/.travis.temp.yml .travis.yml;
|
|
git reset --hard HEAD~;
|
|
fi
|
|
- if [[ $REPO == BLESSED && $TRIGGER_WINDOWS == TRUE ]]; then
|
|
MSG=`git log --pretty=oneline --abbrev-commit -n 1 | cut -d ' ' -f 2-`;
|
|
cp .travis.yml /tmp/.travis.temp.yml;
|
|
cp .travis.windows.yml .travis.yml;
|
|
git config --global user.email "notifications@travis-ci.org";
|
|
git config --global user.name "Travis CI";
|
|
git add .travis.yml;
|
|
git commit -m "$MSG";
|
|
git push -q https://soonhokong:${GH_TOKEN}@github.com/soonhokong/lean-windows.git +HEAD:master;
|
|
mv /tmp/.travis.temp.yml .travis.yml;
|
|
git reset --hard HEAD~;
|
|
fi
|
|
|
|
script:
|
|
- mkdir -p build
|
|
- cd build
|
|
- if [[ $CMAKE_BUILD_TYPE == RELEASE && $CMAKE_CXX_COMPILER=clang++-3.3 ]]; then
|
|
GENERATOR=;
|
|
else
|
|
GENERATOR=-GNinja;
|
|
fi
|
|
- if [[ $TESTCOV != ON ]]; then
|
|
TESTCOV=OFF;
|
|
fi
|
|
- /usr/bin/cmake -DIGNORE_SORRY=ON -DCONSERVE_MEMORY=${CONSERVE_MEMORY} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DTESTCOV=${TESTCOV} -DTCMALLOC=${TCMALLOC} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} ${GENERATOR} -DCMAKE_PROGRAM_PATH=/usr/bin ../src;
|
|
- if [[ $CMAKE_BUILD_TYPE == DEBUG || $CMAKE_BUILD_TYPE == RELEASE || $TESTCOV == ON ]]; then
|
|
SITE=Ubuntu12.04@Travis;
|
|
if [[ $CMAKE_BUILD_TYPE == RELEASE ]]; then
|
|
BUILD_TYPE=Release;
|
|
else
|
|
BUILD_TYPE=Debug;
|
|
fi;
|
|
LUA_VERSION=LUA_${LUA};
|
|
BUILD_NAME=${TRAVIS_BRANCH}_${CMAKE_CXX_COMPILER}_${BUILD_TYPE}_${LUA_VERSION};
|
|
if [[ $TCMALLOC == ON ]]; then
|
|
BUILD_NAME=${BUILD_NAME}_TC;
|
|
fi;
|
|
CONFIG_FILE=DartConfiguration.tcl;
|
|
sed -i "s/^Site:.*/Site:$SITE/" $CONFIG_FILE;
|
|
sed -i "s/BuildName:.*/BuildName:$BUILD_NAME/" $CONFIG_FILE;
|
|
if [[ $MEMCHECK == TRUE ]]; then
|
|
ninja -j 1;
|
|
else
|
|
ctest -D ExperimentalConfigure;
|
|
sed -i "s/^Site:.*/Site:$SITE/" $CONFIG_FILE;
|
|
sed -i "s/BuildName:.*/BuildName:$BUILD_NAME/" $CONFIG_FILE;
|
|
ctest -D ExperimentalBuild -VV;
|
|
yes "C" | ctest -D ExperimentalTest -VV | ../script/demangle_cpptype.py;
|
|
fi;
|
|
fi
|
|
- cd ..
|
|
|
|
after_script:
|
|
- cd build
|
|
- if [[ $REPO == BLESSED && $TESTCOV == ON ]]; then
|
|
ctest -D ExperimentalCoverage;
|
|
ninja -j 1 cov;
|
|
npm install coveralls --save;
|
|
cat coverage.info.cleaned | ./node_modules/coveralls/bin/coveralls.js;
|
|
fi
|
|
- if [[ $REPO == BLESSED && $MEMCHECK == TRUE ]]; then
|
|
MEMCHECK_SUPP=`readlink -f ../src/memcheck.supp`;
|
|
CONFIG_FILE=DartConfiguration.tcl;
|
|
sed -i "s,^MemoryCheckSuppressionFile:\W*$,MemoryCheckSuppressionFile:$MEMCHECK_SUPP," $CONFIG_FILE;
|
|
ulimit -s unlimited;
|
|
yes "C" | ctest -D ExperimentalMemCheck -LE expensive -VV -I $MEMCHECK_RANGE | ../script/demangle_cpptype.py;
|
|
fi
|
|
- if [[ $REPO == BLESSED && $PUSH_TO_CDASH == TRUE ]]; then
|
|
GIT_COMMIT=`git log --oneline -n 1 | cut -d ' ' -f 1`;
|
|
GIT_SUBJECT=`git log --oneline -n 1 | cut -d ' ' -f 2-`;
|
|
GIT_SUBJECT=${GIT_SUBJECT//\"/\\\"};
|
|
GIT_SUBJECT=${GIT_SUBJECT//,/\,};
|
|
GIT_SUBJECT=$(echo -e $(printf '%q' "$GIT_SUBJECT"));
|
|
find Testing -name "*.xml" -exec sed -i "s,Generator=\".*\",Generator=\"${GIT_COMMIT}###${GIT_SUBJECT}\"," {} ";";
|
|
find Testing \( -name "LastTest_*.log" -o -name "LastDynamicAnalysis_*.log" \) -exec sh -c 'TMP=`mktemp /tmp/ctesttmp_XXXX`; ../script/demangle_cpptype.py {} > $TMP; mv -v $TMP {}' ";";
|
|
ctest -D ExperimentalSubmit;
|
|
fi
|
|
- if [[ $REPO == BLESSED && $PACKAGE == TRUE ]]; then
|
|
make package;
|
|
fi
|
|
- cd ..
|
|
- if [[ $REPO == BLESSED && $BUILD_DOXYGEN == TRUE ]]; then
|
|
sudo apt-get -qq install graphviz doxygen parallel;
|
|
script/doxygen.sh > /dev/null;
|
|
DOXYGEN_DIR=doc/html;
|
|
find $DOXYGEN_DIR -type f -name "*.md5" -exec rm {} ";";
|
|
find $DOXYGEN_DIR -type f | split -l 100 - doxygen_files.txt.;
|
|
ls -1 doxygen_files.txt.* | travis_wait parallel -u -j 10 ./script/dropbox_upload.py --destpath /Public --dropbox-token ${DROPBOX_KEY} --copylist {};
|
|
fi
|
|
- if [[ $REPO == BLESSED && $UPLOAD ]]; then
|
|
UPLOAD_DIR=bin;
|
|
BINARY=lean_${UPLOAD};
|
|
NOW=`TZ='America/Los_Angeles' date +"%Y%m%d_%H%M"`;
|
|
GIT_COMMIT=`git log --oneline -n 1 | cut -d ' ' -f 1`;
|
|
OS=linux;
|
|
LUA_VERSION=LUA_${LUA};
|
|
ARCHIVE_BINARY=${NOW}_${TRAVIS_BRANCH}_${GIT_COMMIT}_${OS}_${CMAKE_CXX_COMPILER}_${BUILD_TYPE}_${LUA_VERSION};
|
|
if [[ $TCMALLOC == ON ]]; then
|
|
ARCHIVE_BINARY=${ARCHIVE_BINARY}_tcmalloc;
|
|
fi;
|
|
mkdir ${UPLOAD_DIR};
|
|
if [[ $REPO == BLESSED && $PACKAGE == TRUE ]]; then
|
|
cp -v build/lean*.tar.gz ${UPLOAD_DIR}/;
|
|
fi;
|
|
cp -v build/shell/lean ${UPLOAD_DIR}/${BINARY};
|
|
tar cvfz ${UPLOAD_DIR}/${ARCHIVE_BINARY}.tar.gz ${UPLOAD_DIR}/${BINARY};
|
|
script/dropbox_upload.py --srcpath ${UPLOAD_DIR} --destpath /Public/${UPLOAD_DIR} --dropbox-token ${DROPBOX_KEY};
|
|
fi
|
|
|
|
notifications:
|
|
email:
|
|
recipients:
|
|
- lean-build@googlegroups.com
|
|
on_success: always
|
|
on_failure: always
|