mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-18 21:06:50 +00:00

The CI builds now send the results of every lit run to a unique file. This means we can read them all to make a combined report for all tests. This report will be shown as an "annotation" in the build results: https://buildkite.com/docs/agent/v3/cli-annotate#creating-an-annotation Here is an example: https://buildkite.com/llvm-project/github-pull-requests/builds/112660 (make sure it is showing "All" instead of "Failures") This is an alternative to using the existing Buildkite plugin: https://github.com/buildkite-plugins/junit-annotate-buildkite-plugin As the plugin is: * Specific to Buildkite, and we may move away from Buildkite. * Requires docker, unless we were to fork it ourselves. * Does not let you customise the report format unless again, we make our own fork. Annotations use GitHub's flavour of Markdown so the main code in the script generates that text. There is an extra "style" argument generated to make the formatting nicer in Buildkite. "context" is the name of the annotation that will be created. By using different context names for Linux and Windows results we get 2 separate annotations. The script also handles calling the buildkite-agent. This makes passing extra arguments to the agent easier, rather than piping the output of this script into the agent. In the future we can remove the agent part of it and simply use the report content. Either printed to stdout or as a comment on the GitHub PR.
76 lines
2.7 KiB
Bash
Executable File
76 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
#===----------------------------------------------------------------------===##
|
|
#
|
|
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
# See https://llvm.org/LICENSE.txt for license information.
|
|
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
#
|
|
#===----------------------------------------------------------------------===##
|
|
|
|
#
|
|
# This script performs a monolithic build of the monorepo and runs the tests of
|
|
# most projects on Windows. This should be replaced by per-project scripts that
|
|
# run only the relevant tests.
|
|
#
|
|
|
|
set -ex
|
|
set -o pipefail
|
|
|
|
MONOREPO_ROOT="${MONOREPO_ROOT:="$(git rev-parse --show-toplevel)"}"
|
|
BUILD_DIR="${BUILD_DIR:=${MONOREPO_ROOT}/build}"
|
|
|
|
rm -rf "${BUILD_DIR}"
|
|
|
|
if [[ -n "${CLEAR_CACHE:-}" ]]; then
|
|
echo "clearing sccache"
|
|
rm -rf "$SCCACHE_DIR"
|
|
fi
|
|
|
|
sccache --zero-stats
|
|
function at-exit {
|
|
mkdir -p artifacts
|
|
sccache --show-stats >> artifacts/sccache_stats.txt
|
|
|
|
# If building fails there will be no results files.
|
|
shopt -s nullglob
|
|
python "${MONOREPO_ROOT}"/.ci/generate_test_report.py ":windows: Windows x64 Test Results" \
|
|
"windows-x64-test-results" "${BUILD_DIR}"/test-results.*.xml
|
|
}
|
|
trap at-exit EXIT
|
|
|
|
projects="${1}"
|
|
targets="${2}"
|
|
|
|
echo "--- cmake"
|
|
pip install -q -r "${MONOREPO_ROOT}"/mlir/python/requirements.txt
|
|
pip install -q -r "${MONOREPO_ROOT}"/.ci/requirements.txt
|
|
|
|
# The CMAKE_*_LINKER_FLAGS to disable the manifest come from research
|
|
# on fixing a build reliability issue on the build server, please
|
|
# see https://github.com/llvm/llvm-project/pull/82393 and
|
|
# https://discourse.llvm.org/t/rfc-future-of-windows-pre-commit-ci/76840/40
|
|
# for further information.
|
|
# We limit the number of parallel compile jobs to 24 control memory
|
|
# consumption and improve build reliability.
|
|
cmake -S "${MONOREPO_ROOT}"/llvm -B "${BUILD_DIR}" \
|
|
-D LLVM_ENABLE_PROJECTS="${projects}" \
|
|
-G Ninja \
|
|
-D CMAKE_BUILD_TYPE=Release \
|
|
-D LLVM_ENABLE_ASSERTIONS=ON \
|
|
-D LLVM_BUILD_EXAMPLES=ON \
|
|
-D COMPILER_RT_BUILD_LIBFUZZER=OFF \
|
|
-D LLVM_LIT_ARGS="-v --xunit-xml-output ${BUILD_DIR}/test-results.xml --use-unique-output-file-name --timeout=1200 --time-tests" \
|
|
-D COMPILER_RT_BUILD_ORC=OFF \
|
|
-D CMAKE_C_COMPILER_LAUNCHER=sccache \
|
|
-D CMAKE_CXX_COMPILER_LAUNCHER=sccache \
|
|
-D MLIR_ENABLE_BINDINGS_PYTHON=ON \
|
|
-D CMAKE_EXE_LINKER_FLAGS="/MANIFEST:NO" \
|
|
-D CMAKE_MODULE_LINKER_FLAGS="/MANIFEST:NO" \
|
|
-D CMAKE_SHARED_LINKER_FLAGS="/MANIFEST:NO" \
|
|
-D LLVM_PARALLEL_COMPILE_JOBS=16 \
|
|
-D LLVM_PARALLEL_LINK_JOBS=4
|
|
|
|
echo "--- ninja"
|
|
# Targets are not escaped as they are passed as separate arguments.
|
|
ninja -C "${BUILD_DIR}" -k 0 ${targets}
|