Don't return SemanticsFunction by value. (#2968) #18
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Part of the Carbon Language project, under the Apache License v2.0 with LLVM | |
# Exceptions. See /LICENSE for license information. | |
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | |
name: test | |
on: | |
push: | |
branches: [trunk] | |
paths: | |
# Conservatively run the tests. However, skip them if the only paths in | |
# the pull request match files that we know don't impact the build. | |
- '**' | |
- '!**/*.md' | |
- '!LICENSE' | |
- '!CODEOWNERS' | |
- '!.git*' | |
pull_request_target: | |
paths: | |
# Conservatively run the tests. However, skip them if the only paths in | |
# the pull request match files that we know don't impact the build. | |
- '**' | |
- '!**/*.md' | |
- '!LICENSE' | |
- '!CODEOWNERS' | |
- '!.git*' | |
merge_group: | |
paths: | |
# Conservatively run the tests. However, skip them if the only paths in | |
# the pull request match files that we know don't impact the build. | |
- '**' | |
- '!**/*.md' | |
- '!LICENSE' | |
- '!CODEOWNERS' | |
- '!.git*' | |
# Cancel previous workflows on the PR when there are multiple fast commits. | |
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
strategy: | |
matrix: | |
# At present, these images are newer than "latest". We use them to test | |
# against more recent tooling versions. | |
# https://github.com/actions/runner-images | |
os: [ubuntu-22.04, macos-12] | |
build_mode: [fastbuild, opt] | |
runs-on: ${{ matrix.os }} | |
steps: | |
# Checkout the pull request head or the branch. | |
- name: Checkout pull request | |
if: github.event_name == 'pull_request_target' | |
uses: actions/checkout@v3 | |
with: | |
ref: ${{ github.event.pull_request.head.sha }} | |
- name: Checkout branch | |
if: github.event_name != 'pull_request_target' | |
uses: actions/checkout@v3 | |
# Setup Python and related tools. | |
- uses: actions/setup-python@v4 | |
with: | |
# Match the min version listed in docs/project/contribution_tools.md | |
python-version: '3.9' | |
# Use LLVM following: | |
# https://github.com/actions/runner-images/blob/main/images/macos/macos-12-Readme.md | |
# Both 14 and 15 are candidates because GitHub is testing new images. | |
- name: Setup LLVM and Clang (macOS) | |
if: matrix.os == 'macos-12' | |
run: | | |
LLVM_PATH="$(brew --prefix llvm@15)" | |
if [[ ! -e "${LLVM_PATH}" ]]; then | |
LLVM_PATH="$(brew --prefix llvm@14)" | |
fi | |
echo "Using ${LLVM_PATH}" | |
echo "${LLVM_PATH}/bin" >> $GITHUB_PATH | |
echo '*** ls "${LLVM_PATH}"' | |
ls "${LLVM_PATH}" | |
echo '*** ls "${LLVM_PATH}/bin"' | |
ls "${LLVM_PATH}/bin" | |
# Use LLVM following: | |
# https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md | |
# Both 14 and 15 are candidates for forwards compatibility, although 15 | |
# isn't provided. | |
- name: Setup LLVM and Clang (Linux) | |
if: matrix.os == 'ubuntu-22.04' | |
run: | | |
LLVM_PATH="/usr/lib/llvm-15" | |
if [[ ! -e "${LLVM_PATH}" ]]; then | |
LLVM_PATH="/usr/lib/llvm-14" | |
fi | |
echo "Using ${LLVM_PATH}" | |
echo "${LLVM_PATH}/bin" >> $GITHUB_PATH | |
echo '*** ls "${LLVM_PATH}"' | |
ls "${LLVM_PATH}" | |
echo '*** ls "${LLVM_PATH}/bin"' | |
ls "${LLVM_PATH}/bin" | |
# Print the various tool paths and versions to help in debugging. | |
- name: Print tool debugging info | |
run: | | |
echo '*** PATH' | |
echo $PATH | |
echo '*** bazelisk' | |
which bazelisk | |
bazelisk --version | |
echo '*** python' | |
which python | |
python --version | |
echo '*** clang' | |
which clang | |
clang --version | |
echo '*** clang++' | |
which clang++ | |
clang++ --version | |
# Extract our access key for our build cache. | |
- name: Extract access key | |
env: | |
GCP_BUILDS_SERVICE_ACCOUNT: ${{ secrets.GCP_BUILDS_SERVICE_ACCOUNT }} | |
run: | | |
echo "$GCP_BUILDS_SERVICE_ACCOUNT" \ | |
| base64 -d > $HOME/gcp-builds-service-account.json | |
# We need to replace the `.` with a `_` for the build cache. | |
- name: Setup LLVM and Clang (macOS) | |
if: matrix.os == 'macos-12' | |
run: | | |
echo "os_for_cache=macos-12" >> $GITHUB_ENV | |
- name: Setup LLVM and Clang (Linux) | |
if: matrix.os == 'ubuntu-22.04' | |
run: | | |
echo "os_for_cache=ubuntu-22_04" >> $GITHUB_ENV | |
# Add our bazel configuration and print basic info to ease debugging. | |
- name: Configure Bazel and print info | |
env: | |
# Add a cache version for changes that bazel won't otherwise detect, | |
# like llvm version changes. | |
CACHE_VERSION: 1 | |
run: | | |
cat >user.bazelrc <<EOF | |
# Enable remote cache for our CI. | |
build --remote_cache=https://storage.googleapis.com/carbon-builds-github-v${CACHE_VERSION}-${{ env.os_for_cache }} | |
build --google_credentials=$HOME/gcp-builds-service-account.json | |
# General build options. | |
build --verbose_failures | |
test --test_output=errors | |
EOF | |
bazelisk info | |
# Build all targets first to isolate build failures. | |
- name: Build (${{ matrix.build_mode }}) | |
env: | |
# 'libtool_check_unique failed to generate' workaround. | |
# https://github.com/bazelbuild/bazel/issues/14113#issuecomment-999794586 | |
BAZEL_USE_CPP_ONLY_TOOLCHAIN: 1 | |
run: bazelisk build -c ${{ matrix.build_mode }} //...:all | |
# Run all test targets. | |
- name: Test (${{ matrix.build_mode }}) | |
env: | |
# 'libtool_check_unique failed to generate' workaround. | |
# https://github.com/bazelbuild/bazel/issues/14113#issuecomment-999794586 | |
BAZEL_USE_CPP_ONLY_TOOLCHAIN: 1 | |
run: bazelisk test -c ${{ matrix.build_mode }} //...:all |