| #!/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 some setup and contains some utilities used for in the |
| # monolithic-linux.sh and monolithic-windows.sh scripts. |
| |
| 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}" |
| |
| sccache --zero-stats |
| |
| function at-exit { |
| retcode=$? |
| |
| mkdir -p artifacts |
| sccache --show-stats |
| sccache --show-stats >> artifacts/sccache_stats.txt |
| cp "${MONOREPO_ROOT}"/*.ninja_log artifacts/ || : |
| cp "${MONOREPO_ROOT}"/*.log artifacts/ || : |
| cp "${BUILD_DIR}"/test-results.*.xml artifacts/ || : |
| |
| # If building fails there will be no results files. |
| shopt -s nullglob |
| |
| if [[ -n "$GITHUB_ACTIONS" ]]; then |
| python "${MONOREPO_ROOT}"/.ci/generate_test_report_github.py \ |
| $retcode "${BUILD_DIR}"/test-results.*.xml "${MONOREPO_ROOT}"/ninja*.log \ |
| >> $GITHUB_STEP_SUMMARY |
| python "${MONOREPO_ROOT}"/.ci/premerge_advisor_explain.py \ |
| $(git rev-parse HEAD~1) $retcode "${GITHUB_TOKEN}" \ |
| $GITHUB_PR_NUMBER "${BUILD_DIR}"/test-results.*.xml \ |
| "${MONOREPO_ROOT}"/ninja*.log |
| fi |
| |
| if [[ "$retcode" != "0" ]]; then |
| if [[ -n "$GITHUB_ACTIONS" ]]; then |
| python "${MONOREPO_ROOT}"/.ci/premerge_advisor_upload.py \ |
| $(git rev-parse HEAD~1) $GITHUB_RUN_NUMBER \ |
| "${BUILD_DIR}"/test-results.*.xml "${MONOREPO_ROOT}"/ninja*.log |
| else |
| python "${MONOREPO_ROOT}"/.ci/premerge_advisor_upload.py \ |
| $(git rev-parse HEAD) $BUILDBOT_BUILDNUMBER \ |
| "${BUILD_DIR}"/test-results.*.xml "${MONOREPO_ROOT}"/ninja*.log |
| fi |
| fi |
| } |
| trap at-exit EXIT |
| |
| function start-group { |
| groupname=$1 |
| if [[ -n "$GITHUB_ACTIONS" ]]; then |
| echo "::endgroup" |
| echo "::group::$groupname" |
| elif [[ -n "$POSTCOMMIT_CI" ]]; then |
| echo "@@@$STEP@@@" |
| else |
| echo "Starting $groupname" |
| fi |
| } |
| |
| export PIP_BREAK_SYSTEM_PACKAGES=1 |
| pip install -q -r "${MONOREPO_ROOT}"/.ci/all_requirements.txt |
| |
| # The ARM64 builders run on AWS and don't have access to the GCS cache. |
| if [[ -n "$GITHUB_ACTIONS" ]] && [[ "$RUNNER_ARCH" != "ARM64" ]]; then |
| python .ci/cache_lit_timing_files.py download |
| fi |