Merge pull request #13431 from NathanReb/notify-ppx-maintainers #66
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
name: Build | |
on: | |
push: | |
branches: | |
- '4.**' | |
- '5.**' | |
- 'trunk' | |
pull_request: | |
# Restrict the GITHUB_TOKEN | |
permissions: {} | |
env: | |
# List of test directories for the debug-s4096 and linux-O0 jobs. These | |
# directories are selected because of their tendencies to reach corner cases | |
# in the runtime system. | |
PARALLEL_TESTS: parallel callback gc-roots weak-ephe-final | |
# Fully print commands executed by Make | |
# MAKEFLAGS: V=1 | |
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency | |
# Concurrent workflows are grouped by the PR or branch that triggered them | |
# (github.ref) and the name of the workflow (github.workflow). The | |
# 'cancel-in-progress' option then make sure that only one workflow is running | |
# at a time. This doesn't prevent new jobs from running, rather it cancels | |
# already running jobs before scheduling new jobs. | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'pull_request' || github.sha }} | |
cancel-in-progress: true | |
jobs: | |
# This job will do the initial build of the compiler (on linux), with flambda on. | |
# We then upload the compiler tree as a build artifact to enable re-use in | |
# subsequent jobs. | |
build: | |
runs-on: 'ubuntu-latest' | |
outputs: | |
manual_changed: ${{ steps.manual.outputs.manual_changed }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: Check for manual changes | |
id: manual | |
run: >- | |
tools/ci/actions/check-manual-modified.sh | |
'${{ github.ref }}' | |
'${{ github.event_name }}' | |
'${{ github.event.pull_request.base.ref }}' | |
'${{ github.event.pull_request.base.sha }}' | |
'${{ github.event.pull_request.head.ref }}' | |
'${{ github.event.pull_request.head.sha }}' | |
'${{ github.event.ref }}' | |
'${{ github.event.before }}' | |
'${{ github.event.ref }}' | |
'${{ github.event.after }}' | |
'${{ github.event.repository.full_name }}' | |
- name: Configure tree | |
run: | | |
MAKE_ARG=-j CONFIG_ARG='--enable-flambda --enable-cmm-invariants --enable-dependency-generation --enable-native-toplevel' OCAMLRUNPARAM=b,v=0 bash -xe tools/ci/actions/runner.sh configure | |
- name: Build | |
run: | | |
MAKE_ARG=-j bash -xe tools/ci/actions/runner.sh build | |
- name: Prepare Artifact | |
run: tar --zstd -cf /tmp/sources.tar.zstd . | |
- name: Upload Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: compiler | |
path: /tmp/sources.tar.zstd | |
retention-days: 1 | |
# Full testsuite run, and other sanity checks | |
# "extra" testsuite runs, reusing the previously built compiler tree. | |
# debug: running the full testsuite with the | |
# debug runtime and minor heap verification. | |
# debug-s4096: select testsuite run with the debug runtime and a small | |
# minor heap. | |
normal: | |
name: ${{ matrix.name }} | |
needs: build | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
include: | |
- id: normal | |
name: normal | |
dependencies: texlive-latex-extra texlive-fonts-recommended hevea sass gdb lldb python3-lldb-14 | |
- id: debug | |
name: extra (debug) | |
- id: debug-s4096 | |
name: extra (debug-s4096) | |
steps: | |
- name: Download Artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: compiler | |
- name: Unpack Artifact | |
run: | | |
tar --zstd -xf sources.tar.zstd | |
rm -f sources.tar.zstd | |
- name: Packages | |
if: matrix.dependencies != '' | |
run: | | |
sudo apt-get update -y && sudo apt-get install -y ${{ matrix.dependencies }} | |
# Work around lldb on Ubuntu 22.04 issue https://github.com/llvm/llvm-project/issues/55575 | |
sudo ln -s /usr/lib/llvm-14/lib/python3.10/dist-packages/lldb/* /usr/lib/python3/dist-packages/lldb/ | |
- name: Run the testsuite | |
if: matrix.id == 'normal' | |
run: | | |
MAKE_ARG=-j OCAMLRUNPARAM=b,v=0 bash -xe tools/ci/actions/runner.sh test | |
- name: Run the testsuite (debug runtime) | |
if: matrix.id == 'debug' | |
env: | |
OCAMLRUNPARAM: v=0,V=1 | |
USE_RUNTIME: d | |
run: | | |
bash -cxe "SHOW_TIMINGS=1 tools/ci/actions/runner.sh test" | |
- name: Run the testsuite (s=4096, debug runtime) | |
if: matrix.id == 'debug-s4096' | |
env: | |
OCAMLRUNPARAM: s=4096,v=0 | |
USE_RUNTIME: d | |
run: | | |
for dir in $PARALLEL_TESTS; do \ | |
bash -cxe "SHOW_TIMINGS=1 tools/ci/actions/runner.sh test_prefix $dir"; \ | |
done | |
- name: Build API Documentation | |
if: matrix.id == 'normal' | |
run: | | |
MAKE_ARG=-j OCAMLRUNPARAM=b,v=0 bash -xe tools/ci/actions/runner.sh api-docs | |
- name: Install | |
if: matrix.id == 'normal' | |
run: | | |
MAKE_ARG=-j OCAMLRUNPARAM=b,v=0 bash -xe tools/ci/actions/runner.sh install | |
- name: Build the manual | |
if: matrix.id == 'normal' && needs.build.outputs.manual_changed == 'true' | |
run: | | |
MAKE_ARG=-j OCAMLRUNPARAM=b,v=0 bash -xe tools/ci/actions/runner.sh manual | |
- name: Other checks | |
if: matrix.id == 'normal' | |
run: | | |
MAKE_ARG=-j OCAMLRUNPARAM=b,v=0 bash -xe tools/ci/actions/runner.sh other-checks | |
# MacOS build+testsuite run, and Linux O0 run. | |
others: | |
name: ${{ matrix.name }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
include: | |
- name: linux-O0 | |
os: ubuntu-latest | |
config_arg: CFLAGS='-O0' | |
- name: macos-x86_64 | |
os: macos-13 | |
- name: macos-arm64 | |
os: macos-14 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
persist-credentials: false | |
- name: MacOS 13 Dependencies | |
if: matrix.os == 'macos-13' | |
run: | | |
brew install parallel | |
# Allows starting up lldb from a remote terminal | |
sudo DevToolsSecurity --enable | |
spctl developer-mode enable-terminal | |
# Select latest supported version | |
sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer | |
lldb --version | |
- name: MacOS 14 Dependencies | |
if: matrix.os == 'macos-14' | |
run: | | |
brew install parallel | |
# Allows starting up lldb from a remote terminal | |
# Note: in order to start lldb, the user must also be in | |
# one of these groups: "admin" or "_developer". | |
sudo DevToolsSecurity --enable | |
spctl developer-mode enable-terminal | |
# Select latest supported version | |
sudo xcode-select -s /Applications/Xcode_15.4.app/Contents/Developer | |
lldb --version | |
- name: configure tree | |
run: | | |
CONFIG_ARG='${{ matrix.config_arg }}' MAKE_ARG=-j bash -xe tools/ci/actions/runner.sh configure | |
- name: Build | |
run: | | |
MAKE_ARG=-j bash -xe tools/ci/actions/runner.sh build | |
- name: Run the testsuite | |
if: ${{ matrix.name != 'linux-O0' }} | |
run: | | |
bash -c 'SHOW_TIMINGS=1 tools/ci/actions/runner.sh test' | |
- name: Run the testsuite (linux-O0) | |
if: ${{ matrix.name == 'linux-O0' }} | |
env: | |
OCAMLRUNPARAM: v=0,V=1 | |
USE_RUNTIME: d | |
run: | | |
for dir in $PARALLEL_TESTS; do \ | |
bash -cxe "SHOW_TIMINGS=1 tools/ci/actions/runner.sh test_prefix $dir"; \ | |
done | |
i386: | |
runs-on: ubuntu-latest | |
container: | |
image: debian:12 | |
options: --platform linux/i386 --user root | |
steps: | |
- name: OS Dependencies | |
run: | | |
apt-get update | |
apt-get install -y git gcc make parallel | |
adduser --disabled-password --gecos '' ocaml | |
- name: Checkout | |
# See https://github.com/actions/checkout/issues/334 | |
uses: actions/checkout@v1 | |
- name: configure tree | |
run: | | |
chown -R ocaml:ocaml . | |
MAKE_ARG=-j su ocaml -c "bash -xe tools/ci/actions/runner.sh configure" | |
- name: Build | |
run: | | |
MAKE_ARG=-j su ocaml -c "bash -xe tools/ci/actions/runner.sh build" | |
- name: Run the testsuite | |
run: | | |
su ocaml -c "bash -xe tools/ci/actions/runner.sh test" |