Skip to content

Commit 78e6458

Browse files
committed
Merge remote-tracking branch 'upstream/develop' into remove-macos-dist
2 parents afe718c + 32d441a commit 78e6458

File tree

618 files changed

+10945
-8329
lines changed

Some content is hidden

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

618 files changed

+10945
-8329
lines changed

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ on:
2424
- '!build/pkgs/sage_conf/**'
2525
- '!build/pkgs/sage_docbuild/**'
2626
- '!build/pkgs/sage_setup/**'
27-
- '!build/pkgs/sage_sws2rst/**'
2827
- '!build/pkgs/sagelib/**'
2928
- '!build/pkgs/sagemath_*/**'
3029
workflow_dispatch:
@@ -94,7 +93,7 @@ jobs:
9493
from_docker_target: "with-targets"
9594
from_docker_tag: "dev"
9695
docker_targets: "with-targets"
97-
targets: "${{needs.changed_files.outputs.build_targets}} ci-build-with-fallback doc-html ptest-nodoc"
96+
targets: "${{needs.changed_files.outputs.build_targets}} ci-build-with-fallback ptest-nodoc"
9897
tox_system_factors: >-
9998
["ubuntu-focal",
10099
"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: 1 addition & 1 deletion
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:

.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: 6 additions & 6 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
@@ -260,13 +260,13 @@ jobs:
260260
# Installing pipx follows the approach of https://github.com/pypa/cibuildwheel/pull/1743
261261
id: python
262262
with:
263-
python-version: "3.8 - 3.12"
263+
python-version: "3.11 - 3.13"
264264
update-environment: false
265265

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
@@ -283,7 +283,7 @@ jobs:
283283
#
284284
# omit sagemath-{meataxe,sirocco} for now -- needs sagemath-modules
285285
run: |
286-
"${{ steps.python.outputs.python-path }}" -m pip install cibuildwheel==2.18.0
286+
"${{ steps.python.outputs.python-path }}" -m pip install cibuildwheel==3.0.1
287287
export PATH=build/bin:$PATH
288288
echo CIBW_BEFORE_ALL="( $(sage-print-system-package-command debian --yes --no-install-recommends install $(sage-get-system-packages debian $SPKGS)) || $(sage-print-system-package-command fedora --yes --no-install-recommends install $(sage-get-system-packages fedora $SPKGS | sed s/pkg-config/pkgconfig/)) || ( $(sage-print-system-package-command homebrew --yes --no-install-recommends install $(sage-get-system-packages homebrew $SPKGS)) || $(sage-print-system-package-command alpine --yes --no-install-recommends install $(sage-get-system-packages alpine $SPKGS)) || echo error ignored) ) && if cp /host/sage-\$AUDITWHEEL_PLAT/config.status . 2>/dev/null; then chmod +x config.status; fi && if [ -x ./config.status ]; then ./config.status; else ./configure --enable-build-as-root ${{ startsWith(matrix.os, 'ubuntu') && '--prefix=/host/sage-\$AUDITWHEEL_PLAT' || '' }} && cp config.status prefix/; fi && MAKE=\"make -j6\" make V=0 $TARGETS_PRE && (echo \"sage_conf @ file://\$(pwd)/pkgs/sage-conf\" && echo \"sage_setup @ file://\$(pwd)/pkgs/sage-setup\") > constraints.txt" >> "$GITHUB_ENV"
289289
mkdir -p unpacked

.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 }}"

0 commit comments

Comments
 (0)