forked from sympy/sympy
-
Notifications
You must be signed in to change notification settings - Fork 0
110 lines (102 loc) · 4.46 KB
/
ci-sage.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
name: Run Sage CI
## This GitHub Actions workflow provides:
##
## - portability testing, by building and testing this project on many platforms
##
## - continuous integration, by building and testing other software
## that depends on this project.
##
## 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:
branches:
- master
# match release branches - https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet
- '[0-9]+.[0-9]+'
workflow_dispatch:
# Allow to run manually
env:
# Ubuntu packages to install so that the project's "make dist" can succeed
DIST_PREREQ: python3-setuptools
# Name of this project in the Sage distribution
SPKG: sympy
# Remove all downstream patches
REMOVE_PATCHES: "*"
# Until https://github.com/sagemath/sage/issues/23712 is resolved
EXTRA_CONFIGURE_ARGS: "--without-system-tachyon"
jobs:
dist:
runs-on: ubuntu-latest
steps:
- name: Check out ${{ env.SPKG }}
uses: actions/checkout@v3
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 && 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@v3
with:
path: upstream
name: upstream
docker:
uses: sagemath/sage/.github/workflows/docker.yml@develop
with:
# debian-bullseye uses system python 3.9
# archlinux-latest is at the cutting edge
#
# XXX: For now the archlinux job fails too often for reasons unrelated
# to SAGE's use of SymPy so we skip Arch and only test Ubuntu. The
# ubuntu-focal job also fails sometimes due to timeouts or network
# problems but it mostly succeeds and does correctly pick up where a
# change in SymPy affects SAGE. Mostly this is where there are printing
# changes in SymPy because SAGE does most of its testing in the form of
# doctests.
#
#tox_system_factors: >-
# ["debian-bullseye", "archlinux-latest"]
tox_system_factors: >-
["debian-bullseye"]
# "standard" installs lots of system packages, reducing the full build and test of the
# Sage distribution to 3-4 hours
tox_packages_factors: >-
["standard"]
# Sage distribution packages to build
targets: SAGE_CHECK=no SAGE_CHECK_PACKAGES=sympy build SAGE_DOCTEST_RANDOM_SEED=0 ptest
# Test against the Sage PR:
# https://github.com/sagemath/sage/pull/36641
sage_repo: sagemath/sage
sage_ref: refs/pull/36641/merge
# To test with a Sage PR, use this:
#sage_ref: refs/pull/PR_NUMBER/merge
upstream_artifact: upstream
needs: [dist]