Fix compilation on Windows #173
Workflow file for this run
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: 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 | |
env: | |
# Ubuntu packages to install so that the project's "setup.py sdist" can succeed | |
DIST_PREREQ: python3-setuptools autoconf | |
# Name of this project in the Sage distribution | |
SPKG: cysignals | |
# Sage distribution packages to build | |
TARGETS_PRE: build/make/Makefile | |
TARGETS: SAGE_CHECK=no SAGE_CHECK_PACKAGES="cysignals,cypari" cysignals cypari | |
TARGETS_OPTIONAL: build/make/Makefile | |
# Standard setting: Test the current beta release of Sage | |
SAGE_REPO: sagemath/sage | |
SAGE_REF: develop | |
REMOVE_PATCHES: "*" | |
jobs: | |
dist: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out ${{ env.SPKG }} | |
uses: actions/checkout@v4 | |
with: | |
path: build/pkgs/${{ env.SPKG }}/src | |
- name: Install prerequisites | |
run: | | |
sudo DEBIAN_FRONTEND=noninteractive apt-get update | |
sudo DEBIAN_FRONTEND=noninteractive apt-get install $DIST_PREREQ | |
- name: Run make dist, prepare upstream artifact | |
run: | | |
(cd build/pkgs/${{ env.SPKG }}/src && autoreconf -fi && python3 setup.py sdist) \ | |
&& mkdir -p upstream && cp build/pkgs/${{ env.SPKG }}/src/dist/*.tar.gz upstream/${{ env.SPKG }}-git.tar.gz \ | |
&& echo "sage-package create ${{ env.SPKG }} --version git --tarball ${{ env.SPKG }}-git.tar.gz --type=standard" > upstream/update-pkgs.sh \ | |
&& if [ -n "${{ env.REMOVE_PATCHES }}" ]; then echo "(cd ../build/pkgs/${{ env.SPKG }}/patches && rm -f ${{ env.REMOVE_PATCHES }}; :)" >> upstream/update-pkgs.sh; fi \ | |
&& ls -l upstream/ | |
- uses: actions/upload-artifact@v2 | |
with: | |
path: upstream | |
name: upstream | |
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: Install cygwin and minimal prerequisites with choco | |
shell: bash {0} | |
run: | | |
choco --version | |
choco install make autoconf gcc-core gcc-g++ python3${{ matrix.python-version }}-devel --source cygwin | |
- name: Install dependencies | |
run: | | |
C:\\tools\\cygwin\\bin\\bash -l -x -c 'export PATH=/usr/local/bin:/usr/bin && cd $(cygpath -u "$GITHUB_WORKSPACE") && python3.${{ matrix.python-version }} -m pip install --upgrade pip' | |
- name: Build and check | |
run: | | |
C:\\tools\\cygwin\\bin\\bash -l -x -c 'export PATH=/usr/local/bin:/usr/bin && cd $(cygpath -u "$GITHUB_WORKSPACE") && make check PYTHON=python3.${{ matrix.python-version }}' | |
ubuntu-without-sage: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
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: | | |
python -m pip install --upgrade pip | |
- name: Build and check | |
run: | | |
make -j4 check | |
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] | |
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: | | |
brew install autoconf | |
python -m pip install --upgrade pip | |
- 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 | |
make -j4 check | |
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] |