Skip to content

Commit aac6ca2

Browse files
authored
Merge branch 'develop' into rel_import_small
2 parents e8c3d6e + f10820f commit aac6ca2

File tree

90 files changed

+457
-317
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+457
-317
lines changed

.github/workflows/build.yml

+10-10
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,15 @@ jobs:
9696
SAGE_NUM_THREADS: 2
9797

9898
- name: Build modularized distributions
99-
if: always() && steps.worktree.outcome == 'success'
99+
if: (success() || failure()) && steps.worktree.outcome == 'success'
100100
run: make V=0 tox && make SAGE_CHECK=no pypi-wheels
101101
working-directory: ./worktree-image
102102
env:
103103
MAKE: make -j2 --output-sync=recurse
104104
SAGE_NUM_THREADS: 2
105105

106106
- name: Static code check with pyright
107-
if: always() && steps.worktree.outcome == 'success'
107+
if: (success() || failure()) && steps.worktree.outcome == 'success'
108108
uses: jakebailey/pyright-action@v1
109109
with:
110110
version: 1.1.332
@@ -116,7 +116,7 @@ jobs:
116116
NODE_OPTIONS: --max-old-space-size=8192
117117

118118
- name: Static code check with pyright (annotated)
119-
if: always() && steps.worktree.outcome == 'success'
119+
if: (success() || failure()) && steps.worktree.outcome == 'success'
120120
uses: jakebailey/pyright-action@v1
121121
with:
122122
version: 1.1.332
@@ -130,7 +130,7 @@ jobs:
130130

131131
- name: Clean (fallback to non-incremental)
132132
id: clean
133-
if: always() && steps.worktree.outcome == 'success' && steps.incremental.outcome != 'success'
133+
if: (success() || failure()) && steps.worktree.outcome == 'success' && steps.incremental.outcome != 'success'
134134
run: |
135135
set -ex
136136
./bootstrap && make doc-clean doc-uninstall sagelib-clean && git clean -fx src/sage && ./config.status
@@ -143,7 +143,7 @@ jobs:
143143
# This step is needed because building the modularized distributions installs some optional packages,
144144
# so the editable install of sagelib needs to build the corresponding optional extension modules.
145145
id: build
146-
if: always() && (steps.incremental.outcome == 'success' || steps.clean.outcome == 'success')
146+
if: (success() || failure()) && (steps.incremental.outcome == 'success' || steps.clean.outcome == 'success')
147147
run: |
148148
make build
149149
working-directory: ./worktree-image
@@ -154,7 +154,7 @@ jobs:
154154
# Testing
155155

156156
- name: Test changed files (sage -t --new)
157-
if: always() && steps.build.outcome == 'success'
157+
if: (success() || failure()) && steps.build.outcome == 'success'
158158
run: |
159159
# We run tests with "sage -t --new"; this only tests the uncommitted changes.
160160
./sage -t --new -p2
@@ -164,7 +164,7 @@ jobs:
164164
SAGE_NUM_THREADS: 2
165165

166166
- name: Test modularized distributions
167-
if: always() && steps.build.outcome == 'success'
167+
if: (success() || failure()) && steps.build.outcome == 'success'
168168
run: make V=0 tox && make pypi-wheels-check
169169
working-directory: ./worktree-image
170170
env:
@@ -182,14 +182,14 @@ jobs:
182182
COLUMNS: 120
183183

184184
- name: Test all files (sage -t --all --long)
185-
if: always() && steps.build.outcome == 'success'
185+
if: (success() || failure()) && steps.build.outcome == 'success'
186186
run: |
187187
../sage -python -m pip install coverage
188188
../sage -python -m coverage run ./bin/sage-runtests --all --long -p2 --random-seed=286735480429121101562228604801325644303
189189
working-directory: ./worktree-image/src
190190

191191
- name: Prepare coverage results
192-
if: always() && steps.build.outcome == 'success'
192+
if: (success() || failure()) && steps.build.outcome == 'success'
193193
run: |
194194
./venv/bin/python3 -m coverage combine src/.coverage/
195195
./venv/bin/python3 -m coverage xml
@@ -198,7 +198,7 @@ jobs:
198198
working-directory: ./worktree-image
199199

200200
- name: Upload coverage to codecov
201-
if: always() && steps.build.outcome == 'success'
201+
if: (success() || failure()) && steps.build.outcome == 'success'
202202
uses: codecov/codecov-action@v3
203203
with:
204204
directory: ./worktree-image/coverage-report

.github/workflows/ci-linux.yml

+11-7
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,9 @@ jobs:
8585
tox_packages_factors: >-
8686
["standard"]
8787
docker_push_repository: ghcr.io/${{ github.repository }}/
88-
# Reduce from 30 to 25 because it runs in parallel with 'standard-sitepackages' below
89-
max_parallel: 25
88+
# Reduce from 30 to 20 because it runs in parallel with 'standard-sitepackages'
89+
# and 'minimal-pre' below
90+
max_parallel: 20
9091

9192
standard-sitepackages:
9293
if: ${{ success() || failure() }}
@@ -135,7 +136,7 @@ jobs:
135136
"opensuse-tumbleweed",
136137
"debian-bullseye-i386"]
137138
docker_push_repository: ghcr.io/${{ github.repository }}/
138-
max_parallel: 10
139+
max_parallel: 8
139140

140141
minimal-pre:
141142
if: ${{ success() || failure() }}
@@ -148,9 +149,9 @@ jobs:
148149
tox_packages_factors: >-
149150
["minimal"]
150151
docker_push_repository: ghcr.io/${{ github.repository }}/
151-
# Reduced from 30 because it may run in parallel with 'standard-sitepackages' above.
152+
# Reduced from 30 because it may run in parallel with 'standard' and 'standard-sitepackages' above.
152153
# Calibrated for clogging the job pipeline until the "default" job has finished.
153-
max_parallel: 20
154+
max_parallel: 24
154155

155156
minimal:
156157
if: ${{ success() || failure() }}
@@ -169,6 +170,7 @@ jobs:
169170
tox_packages_factors: >-
170171
["minimal"]
171172
docker_push_repository: ghcr.io/${{ github.repository }}/
173+
max_parallel: 24
172174

173175
maximal-pre:
174176
if: ${{ success() || failure() }}
@@ -196,7 +198,8 @@ jobs:
196198
tox_packages_factors: >-
197199
["maximal"]
198200
docker_targets: "with-targets-optional"
199-
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :optional: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[0-o]))'
201+
# [0-9a-o] excludes _, in particular package _develop
202+
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :optional: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[0-9a-o]))'
200203

201204

202205
optional-p-z:
@@ -211,6 +214,7 @@ jobs:
211214
tox_packages_factors: >-
212215
["maximal"]
213216
docker_targets: "with-targets-optional"
217+
# [0-9a-o] excludes _, in particular package _develop
214218
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :optional: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[p-z]))'
215219

216220
experimental-0-o:
@@ -225,7 +229,7 @@ jobs:
225229
tox_packages_factors: >-
226230
["maximal"]
227231
docker_targets: "with-targets-optional"
228-
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :experimental: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[0-o]))'
232+
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :experimental: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[0-9a-o]))'
229233

230234
experimental-p-z:
231235
if: ${{ success() || failure() }}

.github/workflows/ci-macos.yml

+6-1
Original file line numberDiff line numberDiff line change
@@ -40,30 +40,35 @@ jobs:
4040
with:
4141
stage: "2"
4242
needs: [stage-1]
43+
if: ${{ success() || failure() }}
4344

4445
stage-2-optional-0-o:
4546
uses: ./.github/workflows/macos.yml
4647
with:
4748
stage: "2-optional-0-o"
4849
needs: [stage-2]
50+
if: ${{ success() || failure() }}
4951

5052
stage-2-optional-p-z:
5153
uses: ./.github/workflows/macos.yml
5254
with:
5355
stage: "2-optional-p-z"
5456
needs: [stage-2-optional-0-o]
57+
if: ${{ success() || failure() }}
5558

5659
stage-2-experimental-0-o:
5760
uses: ./.github/workflows/macos.yml
5861
with:
5962
stage: "2-optional-0-o"
6063
needs: [stage-2-optional-p-z]
64+
if: ${{ success() || failure() }}
6165

6266
stage-2-experimental-p-z:
6367
uses: ./.github/workflows/macos.yml
6468
with:
6569
stage: "2-experimental-p-z"
6670
needs: [stage-2-experimental-0-o]
71+
if: ${{ success() || failure() }}
6772

6873
dist:
6974

@@ -85,7 +90,7 @@ jobs:
8590
run: |
8691
git config --global user.email "nobody@example.com"
8792
git config --global user.name "Sage GitHub CI"
88-
SAGE_ROOT=. SAGE_SRC=./src src/bin/sage-update-version $(git describe) || echo "(ignoring error)"
93+
SAGE_ROOT=. SAGE_SRC=./src src/bin/sage-update-version $(git describe --tags) || echo "(ignoring error)"
8994
- name: make dist
9095
run: |
9196
./configure --enable-download-from-upstream-url && make dist

.github/workflows/doc-build-pdf.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ jobs:
9292

9393
- name: Build (fallback to non-incremental)
9494
id: build
95-
if: always() && steps.worktree.outcome == 'success' && steps.incremental.outcome != 'success'
95+
if: (success() || failure()) && steps.worktree.outcome == 'success' && steps.incremental.outcome != 'success'
9696
run: |
9797
set -ex
9898
make sagelib-clean && git clean -fx src/sage && ./config.status && make build
@@ -103,7 +103,7 @@ jobs:
103103

104104
- name: Build docs (PDF)
105105
id: docbuild
106-
if: always() && (steps.incremental.outcome == 'success' || steps.build.outcome == 'success')
106+
if: (success() || failure()) && (steps.incremental.outcome == 'success' || steps.build.outcome == 'success')
107107
run: |
108108
make doc-clean doc-uninstall; make sagemath_doc_html-build-deps sagemath_doc_pdf-no-deps
109109
working-directory: ./worktree-image
@@ -113,7 +113,7 @@ jobs:
113113

114114
- name: Copy docs
115115
id: copy
116-
if: always() && steps.docbuild.outcome == 'success'
116+
if: (success() || failure()) && steps.docbuild.outcome == 'success'
117117
run: |
118118
# For some reason the deploy step below cannot find /sage/...
119119
# So copy everything from there to local folder
@@ -123,7 +123,7 @@ jobs:
123123
zip -r docs-pdf.zip docs
124124
125125
- name: Upload docs
126-
if: always() && steps.copy.outcome == 'success'
126+
if: (success() || failure()) && steps.copy.outcome == 'success'
127127
uses: actions/upload-artifact@v3
128128
with:
129129
name: docs-pdf

.github/workflows/doc-build.yml

+4-5
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ jobs:
9999

100100
- name: Build (fallback to non-incremental)
101101
id: build
102-
if: always() && steps.worktree.outcome == 'success' && steps.incremental.outcome != 'success'
102+
if: (success() || failure()) && steps.worktree.outcome == 'success' && steps.incremental.outcome != 'success'
103103
run: |
104104
set -ex
105105
make sagelib-clean && git clean -fx src/sage && ./config.status && make sagemath_doc_html-build-deps
@@ -110,7 +110,7 @@ jobs:
110110

111111
- name: Build docs
112112
id: docbuild
113-
if: always() && (steps.incremental.outcome == 'success' || steps.build.outcome == 'success')
113+
if: (success() || failure()) && (steps.incremental.outcome == 'success' || steps.build.outcome == 'success')
114114
# Always non-incremental because of the concern that
115115
# incremental docbuild may introduce broken links (inter-file references) though build succeeds
116116
run: |
@@ -127,7 +127,7 @@ jobs:
127127

128128
- name: Copy docs
129129
id: copy
130-
if: always() && steps.docbuild.outcome == 'success'
130+
if: (success() || failure()) && steps.docbuild.outcome == 'success'
131131
run: |
132132
set -ex
133133
mkdir -p ./docs
@@ -182,7 +182,6 @@ jobs:
182182
echo '</body>' >> ./docs/CHANGES.html
183183
echo '</html>' >>./docs/CHANGES.html
184184
rm ./docs/diff.txt ./docs/diff.html
185-
(cd /sage/local/share/doc/sage/html && git reset --hard HEAD)
186185
# For some reason the deploy step below cannot find /sage/...
187186
# So copy everything from there to local folder
188187
# We also need to replace the symlinks because netlify is not following them
@@ -192,7 +191,7 @@ jobs:
192191
zip -r docs.zip docs
193192
194193
- name: Upload docs
195-
if: always() && steps.copy.outcome == 'success'
194+
if: (success() || failure()) && steps.copy.outcome == 'success'
196195
uses: actions/upload-artifact@v3
197196
with:
198197
name: docs

.github/workflows/doc-publish.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ jobs:
9494
9595
publish-live-doc:
9696
runs-on: ubuntu-latest
97-
if: github.event.workflow_run.conclusion == 'success' && github.event.workflow_run.head_branch == 'develop'
97+
if: github.event.workflow_run.conclusion == 'success' && github.repository == 'sagemath/sage' && github.event.workflow_run.head_branch == 'develop'
9898
steps:
9999
- name: Download live doc
100100
uses: actions/github-script@v6.4.1

.github/workflows/docker.yml

+9-2
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,13 @@ on:
5151
"almalinux-9-python3.11",
5252
"gentoo-python3.10",
5353
"gentoo-python3.11",
54-
"gentoo-python3.12",
5554
"archlinux-latest",
5655
"opensuse-15.3-gcc_11-python3.9",
5756
"opensuse-15.4-gcc_11-python3.10",
5857
"opensuse-15.5-gcc_11-python3.11",
5958
"opensuse-tumbleweed-python3.10",
6059
"opensuse-tumbleweed",
61-
"conda-forge",
60+
"conda-forge-python3.11",
6261
"ubuntu-bionic-gcc_8-i386",
6362
"debian-bullseye-i386",
6463
]
@@ -79,6 +78,10 @@ on:
7978
free_disk_space:
8079
default: false
8180
type: boolean
81+
timeout:
82+
description: 'Elapsed time (seconds) at which to kill the build'
83+
default: 20000
84+
type: number
8285
#
8386
# Publishing to GitHub Packages
8487
#
@@ -191,6 +194,9 @@ jobs:
191194
echo "DOCKER_PUSH_REPOSITORY=$(echo ${{ inputs.docker_push_repository }} | tr "[:upper:]" "[:lower:]")" >> $GITHUB_ENV
192195
echo "DOCKER_CONFIG_FILE=$HOME/.docker/config.json" >> $GITHUB_ENV
193196
fi
197+
198+
- name: Determine Docker tags to use
199+
run: |
194200
# This line needs to be run before the step "Merge CI fixes from sagemath/sage".
195201
DOCKER_TAG="$(git describe --dirty --always)"
196202
echo "DOCKER_TAG=$DOCKER_TAG" >> $GITHUB_ENV
@@ -222,6 +228,7 @@ jobs:
222228
if: inputs.free_disk_space
223229
- name: Configure and build Sage distribution within a Docker container
224230
run: |
231+
(sleep ${{ inputs.timeout }}; for id in $(docker ps -q); do docker exec $id pkill make; done) &
225232
set -o pipefail; EXTRA_DOCKER_BUILD_ARGS="--build-arg NUMPROC=4 --build-arg USE_MAKEFLAGS=\"-k V=0 SAGE_NUM_THREADS=3\"" tox -e $TOX_ENV -- $TARGETS 2>&1 | sed "/^configure: notice:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: warning:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: error:/s|^|::error file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;"
226233
- name: Copy logs from the Docker image or build container
227234
run: |

.github/workflows/lint.yml

+3-3
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,13 @@ jobs:
3737
run: pip install tox
3838

3939
- name: Code style check with pycodestyle
40-
if: always() && steps.deps.outcome == 'success'
40+
if: (success() || failure()) && steps.deps.outcome == 'success'
4141
run: tox -e pycodestyle-minimal
4242

4343
- name: Code style check with relint
44-
if: always() && steps.deps.outcome == 'success'
44+
if: (success() || failure()) && steps.deps.outcome == 'success'
4545
run: tox -e relint -- src/sage/
4646

4747
- name: Validate docstring markup as RST
48-
if: always() && steps.deps.outcome == 'success'
48+
if: (success() || failure()) && steps.deps.outcome == 'success'
4949
run: tox -e rst

.github/workflows/macos.yml

+9-10
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,15 @@ on:
2121
osversion_xcodeversion_toxenv_tuples:
2222
description: 'Stringified JSON object'
2323
default: >-
24-
[["latest", "", "homebrew-macos-usrlocal-minimal"],
25-
["latest", "", "homebrew-macos-usrlocal-standard"],
26-
["11", "xcode_11.7", "homebrew-macos-usrlocal-standard"],
27-
["12", "", "homebrew-macos-usrlocal-standard"],
28-
["13", "xcode_15.0", "homebrew-macos-usrlocal-standard"],
29-
["latest", "", "homebrew-macos-usrlocal-maximal"],
30-
["latest", "", "homebrew-macos-usrlocal-python3_xcode-standard"],
31-
["latest", "", "conda-forge-macos-minimal"],
32-
["latest", "", "conda-forge-macos-standard"],
33-
["latest", "", "conda-forge-macos-maximal"]]
24+
[["latest", "", "homebrew-macos-usrlocal-minimal"],
25+
["latest", "", "homebrew-macos-usrlocal-standard"],
26+
["11", "xcode_13.2.1", "homebrew-macos-usrlocal-minimal"],
27+
["12", "", "homebrew-macos-usrlocal-standard"],
28+
["13", "xcode_15.0", "homebrew-macos-usrlocal-standard"],
29+
["latest", "", "homebrew-macos-usrlocal-maximal"],
30+
["latest", "", "homebrew-macos-usrlocal-python3_xcode-standard"],
31+
["latest", "", "conda-forge-macos-minimal"],
32+
["latest", "", "conda-forge-macos-standard"]]
3433
type: string
3534
extra_sage_packages:
3635
description: 'Extra Sage packages to install as system packages'

CITATION.cff

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@ title: SageMath
44
abstract: SageMath is a free open-source mathematics software system.
55
authors:
66
- name: "The SageMath Developers"
7-
version: 10.2.rc0
7+
version: 10.2.rc4
88
doi: 10.5281/zenodo.593563
9-
date-released: 2023-11-05
9+
date-released: 2023-11-17
1010
repository-code: "https://github.com/sagemath/sage"
1111
url: "https://www.sagemath.org/"

VERSION.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
SageMath version 10.2.rc0, Release Date: 2023-11-05
1+
SageMath version 10.2.rc4, Release Date: 2023-11-17

0 commit comments

Comments
 (0)