Index: zorg/buildbot/builders/sanitizers/buildbot_functions.sh =================================================================== --- zorg/buildbot/builders/sanitizers/buildbot_functions.sh +++ zorg/buildbot/builders/sanitizers/buildbot_functions.sh @@ -90,6 +90,29 @@ fi } +function buildbot_update_git { + if [[ -d "$BUILDBOT_MONO_REPO_PATH" ]]; then + LLVM=$BUILDBOT_MONO_REPO_PATH/llvm + else + ( + [[ -d llvm-project ]] || git clone https://github.com/llvm/llvm-project.git + cd llvm-project + git fetch + git clean -fd + if [[ "$BUILDBOT_REVISION" == "" ]] ; then + REV=origin/master + else + REV=$(git log --format="%H" -n1 --grep "^llvm-svn: ${BUILDBOT_REVISION}$" origin/master) + [[ "$REV" != "" ]] || exit 1 + fi + git checkout $REV + git status + git log -n1 --oneline + ) || { echo @@@STEP_EXCEPTION@@@ ; exit 1 ; } + LLVM=$ROOT/llvm-project/llvm + fi +} + function set_chrome_suid_sandbox { export CHROME_DEVEL_SANDBOX=/usr/local/sbin/chrome-devel-sandbox } Index: zorg/buildbot/builders/sanitizers/buildbot_gn.sh =================================================================== --- zorg/buildbot/builders/sanitizers/buildbot_gn.sh +++ zorg/buildbot/builders/sanitizers/buildbot_gn.sh @@ -7,17 +7,56 @@ ROOT=`pwd` PLATFORM=`uname` -export PATH="/usr/local/bin:$PATH" CHECK_LIBCXX=${CHECK_LIBCXX:-0} -CHECK_LLD=${CHECK_LLD:-0} -LLVM=$ROOT/llvm +CHECK_LLD=${CHECK_LLD:-1} +STAGE1_DIR=llvm_build0 +STAGE1_CLOBBER= +STAGE2_DIR=llvm_build if [ "$BUILDBOT_CLOBBER" != "" ]; then echo @@@BUILD_STEP clobber@@@ rm -rf llvm + rm -rf llvm-project + rm -rf gn + rm -rf ${STAGE1_DIR} + rm -rf ${STAGE2_DIR} fi +( + LLVM=$ROOT/llvm + CMAKE_COMMON_OPTIONS="-GNinja -DCMAKE_BUILD_TYPE=Release -DLLVM_PARALLEL_LINK_JOBS=20" + build_stage1_clang_at_revison +) + +echo @@@BUILD_STEP build GN@@@ +[[ -d gn ]] || git clone https://gn.googlesource.com/gn +( + export PATH="$PATH:$(readlink -f $STAGE1_DIR)/bin" + cd gn + # Does not work with 0d038c2e0a32a528713d3dfaf1f1e0cdfe87fd46 + git checkout 0d038c2e0a32a528713d3dfaf1f1e0cdfe87fd46^ + python build/gen.py + ninja -C out +) || { echo @@@STEP_EXCEPTION@@@ ; exit 1 ; } + echo @@@BUILD_STEP update@@@ -buildbot_update +buildbot_update_git + +( + echo @@@BUILD_STEP configure@@@ + export PATH=$(readlink -f gn/out/):$PATH + $LLVM/utils/gn/gn.py gen ${STAGE2_DIR} \ + --list --short --overrides-only \ + --args="clang_base_path=\"$(readlink -f $STAGE1_DIR)\" use_lld=true is_optimized=true is_debug=false" +) || echo @@@STEP_FAILURE@@@ + +( + cd $STAGE2_DIR + echo @@@BUILD_STEP build all@@@ + for TARGET in "" $(ninja -t targets | grep -o "^check-[^:]*") ; do + echo @@@BUILD_STEP $TARGET@@@ + ninja $TARGET || echo @@@STEP_FAILURE@@@ + done +)