Skip to content

Update build system to use Meson #166

Update build system to use Meson

Update build system to use Meson #166

Workflow file for this run

name: Run Sage CI for Linux/Cygwin/macOS
## This GitHub Actions workflow provides:
##
## - portability testing, by building and testing this project on many platforms
## (Linux variants and Cygwin), each with two configurations (installed packages),
##
## - continuous integration, by building and testing other software
## that depends on this project.
##
## It runs on every pull request and push of a tag to the GitHub repository.
##
## The testing can be monitored in the "Actions" tab of the GitHub repository.
##
## After all jobs have finished (or are canceled) and a short delay,
## tar files of all logs are made available as "build artifacts".
##
## This GitHub Actions workflow uses the portability testing framework
## of SageMath (https://www.sagemath.org/). For more information, see
## https://doc.sagemath.org/html/en/developer/portability_testing.html
## The workflow consists of two jobs:
##
## - First, it builds a source distribution of the project
## and generates a script "update-pkgs.sh". It uploads them
## as a build artifact named upstream.
##
## - Second, it checks out a copy of the SageMath source tree.
## It downloads the upstream artifact and replaces the project's
## package in the SageMath distribution by the newly packaged one
## from the upstream artifact, by running the script "update-pkgs.sh".
## Then it builds a small portion of the Sage distribution.
##
## Many copies of the second step are run in parallel for each of the tested
## systems/configurations.
#on: [push, pull_request]
on:
pull_request:
types: [opened, synchronize]
push:
tags:
- '*'
workflow_dispatch:
# Allow to run manually
concurrency:
# Cancel previous runs of this workflow for the same branch
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
cygwin-without-sage:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
python-version-start: [python-3]
python-version: [9]
steps:
- run: |
git config --global core.autocrlf false
git config --global core.symlinks true
- name: Set up the repository
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Set up Cygwin
uses: egor-tensin/setup-cygwin@v4
with:
packages: gcc-core gcc-g++ python3${{ matrix.python-version }}-devel ninja
- name: Install dependencies
shell: C:\tools\cygwin\bin\bash.exe --norc -eo pipefail -o igncr '{0}'
run: |
python3.${{ matrix.python-version }} -m pip install --upgrade pip
python3.${{ matrix.python-version }} -m pip install --upgrade -r ./requirements.txt
- name: Build and check
shell: C:\tools\cygwin\bin\bash.exe --norc -eo pipefail -o igncr '{0}'
run: |
pip install --no-build-isolation --config-settings=builddir=builddir .
meson test --print-errorlogs -C builddir
ubuntu-without-sage:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ['3.10', '3.11', '3.12', '3.13-dev']
steps:
- name: Set up the repository
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
pip install --upgrade pip
pip install --upgrade -r requirements.txt
- name: Build and check
run: |
pip install --no-build-isolation --config-settings=builddir=builddir .
meson test --print-errorlogs -C builddir
linux:
uses: sagemath/sage/.github/workflows/docker.yml@develop
with:
# FIXME: duplicated from env.TARGETS
targets_pre: build/make/Makefile
targets: SAGE_CHECK=no SAGE_CHECK_PACKAGES="cysignals,cypari" cysignals cypari
targets_optional: build/make/Makefile
sage_repo: sagemath/sage
sage_ref: develop
upstream_artifact: upstream
# We prefix the image name with the SPKG name ("cysignals-") to avoid the error
# 'Package "sage-docker-..." is already associated with another repository.'
docker_push_repository: ghcr.io/${{ github.repository }}/cysignals-
needs: [dist, ubuntu-without-sage]

Check failure on line 123 in .github/workflows/ci-sage.yml

View workflow run for this annotation

GitHub Actions / Run Sage CI for Linux/Cygwin/macOS

Invalid workflow file

The workflow is not valid. .github/workflows/ci-sage.yml (Line: 123, Col: 13): Job 'linux' depends on unknown job 'dist'. .github/workflows/ci-sage.yml (Line: 144, Col: 13): Job 'linux-sage-incremental' depends on unknown job 'dist'.
linux-sage-incremental:
uses: sagemath/sage/.github/workflows/docker.yml@develop
with:
# Build incrementally from published Docker image
incremental: true
free_disk_space: true
from_docker_repository: ghcr.io/sagemath/sage/
from_docker_target: "with-targets"
from_docker_tag: "dev"
docker_targets: "with-targets"
targets_pre: build/make/Makefile
targets: "cysignals-uninstall cypari-uninstall build doc-html ptest"
targets_optional: build/make/Makefile
sage_repo: sagemath/sage
sage_ref: develop
upstream_artifact: upstream
# We prefix the image name with the SPKG name ("cysignals-") to avoid the error
# 'Package "sage-docker-..." is already associated with another repository.'
docker_push_repository: ghcr.io/${{ github.repository }}/cysignals-
needs: [dist, linux]
macos-without-sage:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ['macos-13', 'macos-latest']
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13-dev']
steps:
- name: Set up the repository
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
pip install --upgrade pip
pip install --upgrade -r requirements.txt
- name: Build and check
# Work around https://github.com/sagemath/cysignals/issues/179
run: |
case $RUNNER_ARCH in
X*) export ARCHFLAGS="-arch x86_64";;
esac
pip install --no-build-isolation --config-settings=builddir=builddir .
meson test --print-errorlogs -C builddir
macos:
uses: sagemath/sage/.github/workflows/macos.yml@develop
with:
osversion_xcodeversion_toxenv_tuples: >-
[["latest", "", "homebrew-macos-usrlocal-minimal"],
["latest", "", "homebrew-macos-usrlocal-standard"],
["13", "xcode_15.0", "homebrew-macos-usrlocal-standard"],
["latest", "", "conda-forge-macos-standard"]]
# FIXME: duplicated from env.TARGETS
targets_pre: build/make/Makefile
targets: SAGE_CHECK=no SAGE_CHECK_PACKAGES="cysignals,cypari" cysignals cypari
targets_optional: build/make/Makefile
sage_repo: sagemath/sage
sage_ref: develop
upstream_artifact: upstream
needs: [dist, macos-without-sage]