Skip to content

Commit 870fd9d

Browse files
authored
Merge branch 'sagemath:develop' into develop
2 parents f910c08 + 931cc5e commit 870fd9d

File tree

286 files changed

+5055
-4199
lines changed

Some content is hidden

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

286 files changed

+5055
-4199
lines changed

.github/workflows/ci-linux-incremental.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ jobs:
9494
from_docker_target: "with-targets"
9595
from_docker_tag: "dev"
9696
docker_targets: "with-targets"
97-
targets: "${{needs.changed_files.outputs.build_targets}} ci-build-with-fallback doc-html ptest-nodoc"
97+
targets: "${{needs.changed_files.outputs.build_targets}} ci-build-with-fallback ptest-nodoc"
9898
tox_system_factors: >-
9999
["ubuntu-focal",
100100
"ubuntu-jammy",

.github/workflows/ci-linux.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ on:
2525

2626
env:
2727
TARGETS_PRE: all-sage-local
28-
TARGETS: build doc-html
28+
TARGETS: build
2929
TARGETS_OPTIONAL: ptest
3030

3131
permissions:
@@ -41,7 +41,7 @@ jobs:
4141
docker_targets: "with-system-packages configured with-targets-pre with-targets with-targets-optional"
4242
# FIXME: duplicated from env.TARGETS
4343
targets_pre: all-sage-local
44-
targets: build doc-html
44+
targets: build
4545
targets_optional: ptest
4646
tox_system_factors: >-
4747
["ubuntu-jammy"]
@@ -56,7 +56,7 @@ jobs:
5656
# Build from scratch
5757
docker_targets: "with-system-packages configured with-targets-pre with-targets with-targets-optional"
5858
targets_pre: all-sage-local
59-
targets: build doc-html
59+
targets: build
6060
targets_optional: ptest
6161
tox_packages_factors: >-
6262
["standard"]

.github/workflows/ci-macos.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ on:
3030

3131
env:
3232
TARGETS_PRE: all-sage-local
33-
TARGETS: build doc-html
33+
TARGETS: build
3434
TARGETS_OPTIONAL: ptest
3535

3636
jobs:
@@ -87,7 +87,7 @@ jobs:
8787
- name: Install bootstrap prerequisites
8888
run: |
8989
sudo DEBIAN_FRONTEND=noninteractive apt-get update
90-
sudo DEBIAN_FRONTEND=noninteractive apt-get install $(build/bin/sage-get-system-packages debian _bootstrap)
90+
sudo DEBIAN_FRONTEND=noninteractive apt-get install $(build/bin/sage-get-system-packages debian _bootstrap _prereq)
9191
- name: Bootstrap with update-version
9292
# We set SAGE_ROOT and SAGE_SRC by hand
9393
# because 'sage -sh' does not work with an unconfigured tree,

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ jobs:
3030
uses: actions/checkout@v3
3131

3232
- name: Install uv
33-
uses: astral-sh/[email protected].0
33+
uses: astral-sh/[email protected].1
3434

3535
# We cannot use the setup python action because it doesn't support all containers
3636
# https://github.com/actions/setup-python/issues/527

.github/workflows/dist.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
- name: Install bootstrap prerequisites
3838
run: |
3939
sudo DEBIAN_FRONTEND=noninteractive apt-get update
40-
sudo DEBIAN_FRONTEND=noninteractive apt-get install $(build/bin/sage-get-system-packages debian _bootstrap)
40+
sudo DEBIAN_FRONTEND=noninteractive apt-get install $(build/bin/sage-get-system-packages debian _bootstrap _prereq)
4141
- name: make dist (--disable-download-from-upstream-url)
4242
id: make_dist
4343
run: |
@@ -106,7 +106,7 @@ jobs:
106106
- name: Old sagemath-standard
107107
run: |
108108
sudo DEBIAN_FRONTEND=noninteractive apt-get update
109-
sudo DEBIAN_FRONTEND=noninteractive apt-get install $(build/bin/sage-get-system-packages debian _bootstrap)
109+
sudo DEBIAN_FRONTEND=noninteractive apt-get install $(build/bin/sage-get-system-packages debian _bootstrap _prereq)
110110
./bootstrap
111111
./configure
112112
make pypi-sdists V=0
@@ -187,7 +187,7 @@ jobs:
187187
- name: Install bootstrap prerequisites
188188
run: |
189189
sudo DEBIAN_FRONTEND=noninteractive apt-get update
190-
sudo DEBIAN_FRONTEND=noninteractive apt-get install $(build/bin/sage-get-system-packages debian _bootstrap)
190+
sudo DEBIAN_FRONTEND=noninteractive apt-get install $(build/bin/sage-get-system-packages debian _bootstrap _prereq)
191191
- name: make pypi-noarch-wheels
192192
run: |
193193
./bootstrap
@@ -266,7 +266,7 @@ jobs:
266266
- name: Bootstrap
267267
run: |
268268
export PATH=$(pwd)/build/bin:$PATH
269-
eval $(sage-print-system-package-command auto --sudo --yes --no-install-recommends --spkg install _bootstrap)
269+
eval $(sage-print-system-package-command auto --sudo --yes --no-install-recommends --spkg install _bootstrap _prereq)
270270
./bootstrap
271271
272272
- name: Unpack and prepare

.github/workflows/doc-build.yml

Lines changed: 54 additions & 119 deletions
Original file line numberDiff line numberDiff line change
@@ -16,117 +16,67 @@ on:
1616
- develop
1717
workflow_dispatch:
1818
# Allow to run manually
19-
inputs:
20-
platform:
21-
description: 'Platform'
22-
required: true
23-
default: 'ubuntu-noble-standard'
24-
docker_tag:
25-
description: 'Docker tag'
26-
required: true
27-
default: 'dev'
2819

2920
concurrency:
3021
# Cancel previous runs of this workflow for the same branch
3122
group: ${{ github.workflow }}-${{ github.ref }}
3223
cancel-in-progress: true
3324

3425
env:
35-
# Same as in build.yml
36-
TOX_ENV: "docker-${{ github.event.inputs.platform || 'ubuntu-noble-standard' }}-incremental"
37-
BUILD_IMAGE: "localhost:5000/${{ github.repository }}/sage-${{ github.event.inputs.platform || 'ubuntu-noble-standard' }}-with-targets:ci"
38-
FROM_DOCKER_REPOSITORY: "ghcr.io/sagemath/sage/"
39-
FROM_DOCKER_TARGET: "with-targets"
40-
FROM_DOCKER_TAG: ${{ github.event.inputs.docker_tag || 'dev'}}
41-
EXTRA_CONFIGURE_ARGS: --enable-fat-binary
26+
PYTHON_VERSION: 3.11
4227

4328
jobs:
4429
build-doc:
4530
runs-on: ubuntu-latest
46-
services:
47-
# https://docs.docker.com/build/ci/github-actions/local-registry/
48-
registry:
49-
image: registry:2
50-
ports:
51-
- 5000:5000
5231
steps:
53-
- name: Maximize build disk space
54-
uses: easimon/maximize-build-space@v10
55-
with:
56-
# need space in /var for Docker images
57-
root-reserve-mb: 30000
58-
remove-dotnet: true
59-
remove-android: true
60-
remove-haskell: true
61-
remove-codeql: true
62-
remove-docker-images: true
6332
- name: Checkout
6433
uses: actions/checkout@v4
65-
- name: Install test prerequisites
66-
# From docker.yml
67-
run: |
68-
sudo DEBIAN_FRONTEND=noninteractive apt-get update
69-
sudo DEBIAN_FRONTEND=noninteractive apt-get install tox
70-
sudo apt-get clean
71-
df -h
34+
7235
- name: Merge CI fixes from sagemath/sage
7336
run: |
74-
mkdir -p upstream
75-
.github/workflows/merge-fixes.sh 2>&1 | tee upstream/ci_fixes.log
37+
.github/workflows/merge-fixes.sh
7638
env:
7739
GH_TOKEN: ${{ github.token }}
78-
SAGE_CI_FIXES_FROM_REPOSITORIES: ${{ vars.SAGE_CI_FIXES_FROM_REPOSITORIES }}
79-
80-
# Building
81-
82-
- name: Generate Dockerfile
83-
# From docker.yml
84-
run: |
85-
tox -e ${{ env.TOX_ENV }}
86-
cp .tox/${{ env.TOX_ENV }}/Dockerfile .
87-
env:
88-
# Only generate the Dockerfile, do not run 'docker build' here
89-
DOCKER_TARGETS: ""
9040

91-
- name: Set up Docker Buildx
92-
uses: docker/setup-buildx-action@v3
41+
- name: Cache conda packages
42+
uses: actions/cache@v4
9343
with:
94-
driver-opts: network=host
95-
96-
- name: Build Docker image
97-
id: image
98-
uses: docker/build-push-action@v6
44+
path: ~/conda_pkgs_dir
45+
key:
46+
${{ runner.os }}-conda-${{ hashFiles('environment-${{ env.PYTHON_VERSION }}-linux.yml') }}
47+
48+
- name: Compiler cache
49+
uses: hendrikmuhs/[email protected]
9950
with:
100-
# push and load may not be set together at the moment
101-
push: true
102-
load: false
103-
context: .
104-
tags: ${{ env.BUILD_IMAGE }}
105-
target: with-targets
106-
cache-from: type=gha
107-
cache-to: type=gha,mode=max
108-
build-args: |
109-
NUMPROC=6
110-
USE_MAKEFLAGS=-k V=0 SAGE_NUM_THREADS=4 --output-sync=recurse
111-
TARGETS_PRE=build/make/Makefile
112-
TARGETS=ci-build-with-fallback
51+
key: ${{ runner.os }}-meson-${{ env.PYTHON_VERSION }}
11352

114-
- name: Start container
115-
id: container
116-
# Try to continue when "exporting to GitHub Actions Cache" failed with timeout
53+
- name: Setup Conda environment
54+
uses: conda-incubator/setup-miniconda@v3
55+
with:
56+
python-version: ${{ env.PYTHON_VERSION }}
57+
# Disabled for now due to
58+
# https://github.com/conda-incubator/setup-miniconda/issues/379
59+
# miniforge-version: latest
60+
use-mamba: true
61+
channels: conda-forge
62+
channel-priority: true
63+
activate-environment: sage-dev
64+
environment-file: environment-${{ env.PYTHON_VERSION }}-linux.yml
65+
66+
- name: Build Sage
67+
shell: bash -l {0}
11768
run: |
118-
docker run --name BUILD -dit \
119-
--mount type=bind,src=$(pwd),dst=$(pwd) \
120-
--workdir $(pwd) \
121-
${{ env.BUILD_IMAGE }} /bin/sh
69+
export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
70+
export CC="ccache $CC"
71+
export CXX="ccache $CXX"
72+
pip install --no-build-isolation --config-settings=builddir=builddir --editable . -v
12273
12374
#
124-
# On pull request and push to develop events
75+
# For pull requests
12576
#
126-
12777
- name: Get workflow run-id
12878
id: get_run_id
129-
if: steps.container.outcome == 'success' && !startsWith(github.ref, 'refs/tags/') && github.event_name == 'pull_request'
79+
if: github.event_name == 'pull_request'
13080
run: |
13181
RESPONSE=$(curl -s -L \
13282
-H "Accept: application/vnd.github+json" \
@@ -149,6 +99,7 @@ jobs:
14999
- name: Store old doc
150100
id: worktree
151101
if: steps.download-doc.outcome == 'success'
102+
shell: bash -l {0}
152103
run: |
153104
git config --global --add safe.directory $(pwd)
154105
git config --global user.email "[email protected]"
@@ -164,8 +115,8 @@ jobs:
164115
# mathjax path in old doc (regex)
165116
mathjax_path_from="[-./A-Za-z_]*/tex-chtml[.]js?v=[0-9a-f]*"
166117
# mathjax path in new doc
167-
mathjax_path_to=$(docker exec -e SAGE_USE_CDNS=yes BUILD /sage/sage -python -c "from sage_docbuild.conf import mathjax_path; print(mathjax_path)")
168-
new_version=$(docker exec BUILD cat src/VERSION.txt)
118+
mathjax_path_to=$(SAGE_USE_CDNS=yes python -c "from src.sage_docbuild.conf import mathjax_path; print(mathjax_path)")
119+
new_version=$(cat src/VERSION.txt)
169120
# Wipe out chronic diffs between old doc and new doc
170121
(cd doc && \
171122
find . -name "*.html" | xargs sed -i -e '/class="sidebar-brand-text"/ s/Sage [0-9a-z.]* /Sage '"$new_version"' /' \
@@ -185,20 +136,15 @@ jobs:
185136
git add -A && git commit --quiet -m 'old')
186137
fi
187138
188-
- name: Build doc
139+
- name: Build documentation
189140
id: docbuild
190-
if: steps.container.outcome == 'success' && !startsWith(github.ref, 'refs/tags/')
191-
# Always non-incremental because of the concern that
192-
# incremental docbuild may introduce broken links (inter-file references) though build succeeds
141+
if: steps.worktree.outcome == 'success'
142+
shell: bash -l {0}
193143
run: |
194-
export GITHUB_REF=${{ github.ref }}
195-
export PR_SHA=${{ github.event.pull_request.head.sha }}
196-
export MAKE="make -j5 --output-sync=recurse" SAGE_NUM_THREADS=5
197-
make doc-clean doc-uninstall
198-
export SAGE_USE_CDNS=yes
199-
export SAGE_DOCBUILD_OPTS="--include-tests-blocks"
200-
./config.status && make sagemath_doc_html-no-deps
201-
shell: sh .github/workflows/docker-exec-script.sh BUILD /sage {0}
144+
meson compile -C builddir doc-html
145+
env:
146+
SAGE_USE_CDNS: yes
147+
SAGE_DOCBUILD_OPTS: "--include-tests-blocks"
202148

203149
- name: Copy doc
204150
id: copy
@@ -209,12 +155,7 @@ jobs:
209155
if [ -d "doc/html" ]; then
210156
rm -rf doc/html
211157
fi
212-
# Simpler "docker cp --follow-link ... doc" does not work
213-
mkdir -p doc
214-
mkdir -p temp
215-
docker cp --follow-link BUILD:/sage/local/share/doc/sage/html temp
216-
docker cp --follow-link BUILD:/sage/local/share/doc/sage/index.html temp
217-
cp -r -L temp/* doc/
158+
cp -r builddir/src/doc/* doc/
218159
# Check if we are on pull request event
219160
PR_NUMBER=""
220161
if [[ -n "$GITHUB_REF" ]]; then
@@ -275,30 +216,24 @@ jobs:
275216
- name: Build live doc
276217
id: buildlivedoc
277218
if: startsWith(github.ref, 'refs/tags/')
219+
shell: bash -l {0}
278220
run: |
279-
# Avoid running out of disk space
280-
rm -rf upstream
281-
export MAKE="make -j5 --output-sync=recurse" SAGE_NUM_THREADS=5
282-
export PATH="build/bin:$PATH"
283-
eval $(sage-print-system-package-command auto update)
284-
eval $(sage-print-system-package-command auto --yes --no-install-recommends install zip)
285-
eval $(sage-print-system-package-command auto --spkg --yes --no-install-recommends install git texlive texlive_luatex free_fonts xindy)
286-
export SAGE_USE_CDNS=yes
287-
export SAGE_LIVE_DOC=yes
288-
export SAGE_JUPYTER_SERVER=binder:sagemath/sage-binder-env/dev
289-
make doc-clean doc-uninstall
290-
./config.status && make sagemath_doc_html-no-deps sagemath_doc_pdf-no-deps
291-
shell: sh .github/workflows/docker-exec-script.sh BUILD /sage {0}
221+
meson compile -C builddir doc-html
222+
env:
223+
SAGE_USE_CDNS: yes
224+
SAGE_LIVE_DOC: yes
225+
SAGE_JUPYTER_SERVER: binder:sagemath/sage-binder-env/dev
226+
SAGE_DOCBUILD_OPTS: "--include-tests-blocks"
292227

293228
- name: Copy live doc
294229
id: copylivedoc
295230
if: steps.buildlivedoc.outcome == 'success'
296231
run: |
297232
mkdir -p ./livedoc
298233
# We copy everything to a local folder
299-
docker cp --follow-link BUILD:/sage/local/share/doc/sage/html livedoc
300-
docker cp --follow-link BUILD:/sage/local/share/doc/sage/pdf livedoc
301-
docker cp --follow-link BUILD:/sage/local/share/doc/sage/index.html livedoc
234+
cp -r builddir/src/doc/html livedoc/
235+
cp -r builddir/src/doc/pdf livedoc/
236+
cp builddir/src/doc/index.html livedoc/
302237
zip -r livedoc.zip livedoc
303238
304239
- name: Upload live doc

.github/workflows/docker.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ on:
2828
"centos-stream-9",
2929
"centos-stream-9-python3.12",
3030
"almalinux-9-python3.11",
31-
"archlinux-latest",
3231
"opensuse-15.5-gcc_11-python3.11",
3332
"opensuse-tumbleweed",
3433
]

.github/workflows/macos.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ jobs:
120120
case "${{ inputs.stage }}" in
121121
1) export TARGETS_PRE="all-sage-local" TARGETS="all-sage-local" TARGETS_OPTIONAL="build/make/Makefile"
122122
;;
123-
2) export TARGETS_PRE="all-sage-local" TARGETS="build doc-html" TARGETS_OPTIONAL="ptest"
123+
2) export TARGETS_PRE="all-sage-local" TARGETS="build" TARGETS_OPTIONAL="ptest"
124124
;;
125125
2-optional*) export TARGETS_PRE="build/make/Makefile" TARGETS="build/make/Makefile"
126126
targets_pattern="${{ inputs.stage }}"

CITATION.cff

Lines changed: 2 additions & 2 deletions
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.7.beta7
7+
version: 10.7.beta8
88
doi: 10.5281/zenodo.8042260
9-
date-released: 2025-06-25
9+
date-released: 2025-07-06
1010
repository-code: "https://github.com/sagemath/sage"
1111
url: "https://www.sagemath.org/"

VERSION.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
SageMath version 10.7.beta7, Release Date: 2025-06-25
1+
SageMath version 10.7.beta8, Release Date: 2025-07-06

0 commit comments

Comments
 (0)