Get simple setuptools setup.py working #371
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: CMake | |
on: | |
push: | |
branches: [ trunk ] | |
pull_request: | |
branches: [ trunk ] | |
jobs: | |
build: | |
strategy: | |
matrix: | |
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) | |
BUILD_TYPE: [DebugOpt, RelWithDebInfo] | |
# The CMake configure and build commands are platform agnostic and should work equally | |
# well on Windows or Mac. You can convert this to a matrix build if you need | |
# cross-platform coverage. | |
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Update package repos | |
run: sudo apt update | |
- name: Install ninja | |
run: sudo apt install -y ninja-build | |
- name: Configure CMake | |
run: | | |
cmake -GNinja -B ${{github.workspace}}/build \ | |
-DCMAKE_TOOLCHAIN_FILE=util/linux.cmake \ | |
-DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \ | |
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ | |
- name: Build | |
working-directory: ${{github.workspace}}/build | |
run: ninja -j4 | |
- name: Run C++ tests with Skybison | |
working-directory: ${{github.workspace}}/build | |
run: ${{github.workspace}}/third-party/gtest-parallel/gtest-parallel ./bin/python-tests | |
- name: Run C++ tests with Skybison (C++ interpreter) | |
working-directory: ${{github.workspace}}/build | |
run: PYRO_CPP_INTERPRETER=1 ${{github.workspace}}/third-party/gtest-parallel/gtest-parallel ./bin/python-tests | |
- name: Run Python tests with Skybison | |
working-directory: ${{github.workspace}} | |
run: PYRO_BUILD_DIR="build" ./util/python_tests_pyro.sh | |
- name: Run Python tests with Skybison (C++ interpreter) | |
working-directory: ${{github.workspace}} | |
run: PYRO_CPP_INTERPRETER=1 PYRO_BUILD_DIR="build" ./util/python_tests_pyro.sh | |
benchmark: | |
if: ${{ github.event_name == 'pull_request' }} | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
fetch-depth: 2 | |
- name: Update package repos | |
run: sudo apt update | |
- name: Install tools | |
run: sudo apt install -y ninja-build ccache valgrind | |
- name: Quickbench | |
working-directory: ${{github.workspace}} | |
run: | | |
mkdir -p /var/tmp/django_minimal | |
pushd /var/tmp/django_minimal | |
${{github.workspace}}/benchmarks/benchmarks/django/setup_django_minimal.sh | |
popd | |
./benchmarks/quickbench/diffrevs.py --run-django HEAD^ HEAD | tee django-benchmark-results.json | |
# Hide all previous benchmark comments from GitHub Actions; they are | |
# outdated. | |
- uses: int128/hide-comment-action@v1 | |
- name: Comment on Pull Request | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const { promises: fs } = require('fs'); | |
const benchmark_results = await fs.readFile('${{github.workspace}}/django-benchmark-results.json', 'utf8'); | |
const formatted_body = "```json\n" + benchmark_results + "\n```"; | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: formatted_body, | |
}) | |
- name: Run benchmarks | |
working-directory: ${{github.workspace}} | |
run: | | |
# Should be cached | |
PREV_BUILD="$(./benchmarks/quickbench/build_rev.py HEAD^)" | |
CURR_BUILD="$(./benchmarks/quickbench/build_rev.py HEAD)" | |
./benchmarks/run.py --tool callgrind --json \ | |
--interpreter "$PREV_BUILD" --interpreter-name python_base --path $(pwd)/benchmarks/benchmarks \ | |
--interpreter "$CURR_BUILD" --interpreter-name python_new --path $(pwd)/benchmarks/benchmarks \ | |
--interpreter $(which python3.8) --interpreter-name fbcode-cpython --path $(pwd)/benchmarks/benchmarks \ | |
| tee benchmark-results.json | |
- name: Format benchmark results | |
working-directory: ${{github.workspace}} | |
run: | | |
./benchmarks/format_results.py benchmark-results.json | tee benchmark-results.md | |
- name: Comment on Pull Request | |
uses: actions/github-script@v6 | |
with: | |
script: | | |
const { promises: fs } = require('fs'); | |
const benchmark_results = await fs.readFile('${{github.workspace}}/benchmark-results.md', 'utf8'); | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: benchmark_results, | |
}) | |
run-cpython-tests: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Update package repos | |
run: sudo apt update | |
- name: Install ninja | |
run: sudo apt install -y ninja-build | |
- name: Configure CMake | |
run: | | |
cmake -GNinja -B ${{github.workspace}}/build \ | |
-DCMAKE_TOOLCHAIN_FILE=util/linux.cmake \ | |
-DCMAKE_BUILD_TYPE=DebugOpt \ | |
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ | |
- name: Build | |
working-directory: ${{github.workspace}}/build | |
run: ninja -j4 cpython cpython-tests | |
- name: Run C++ tests with CPython | |
working-directory: ${{github.workspace}} | |
run: ./third-party/gtest-parallel/gtest-parallel ./build/bin/cpython-tests | |
- name: Run Python tests with CPython | |
working-directory: ${{github.workspace}} | |
run: PYRO_BUILD_DIR="build" ./util/python_tests_cpython.sh | |
lint: | |
runs-on: ubuntu-20.04 | |
# TODO(max): Install and run Black on Python code | |
steps: | |
- name: Update package repos | |
run: sudo apt update | |
- name: Install clang-format | |
run: sudo apt install -y clang-format | |
- uses: actions/checkout@v3 | |
- name: Run clang-format | |
working-directory: ${{github.workspace}} | |
run: | | |
find capi ext runtime -type f \( -name '*.c' -o -name '*.h' -o -name '*.cpp' \) \ | |
! -wholename 'runtime/unicode-db.cpp' \ | |
-exec clang-format --dry-run --Werror '{}' ';' |