Skip to content

Commit c90e95d

Browse files
committed
Meson: add building of documentation as target
1 parent e0cf1e4 commit c90e95d

File tree

110 files changed

+394
-399
lines changed

Some content is hidden

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

110 files changed

+394
-399
lines changed

.dockerignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
.gitignore

.github/workflows/doc-build.yml

Lines changed: 51 additions & 117 deletions
Original file line numberDiff line numberDiff line change
@@ -16,110 +16,60 @@ 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-
.ci/merge-fixes.sh 2>&1 | tee upstream/ci_fixes.log
37+
.ci/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
122-
69+
export LIB="$LIB;$CONDA_PREFIX\\Library\\lib"
70+
export INCLUDE="$INCLUDE;$CONDA_PREFIX\\Library\\include"
71+
pip install --no-build-isolation --config-settings=builddir=builddir . -v
72+
12373
#
12474
# On pull request and push to develop events
12575
#
@@ -164,8 +114,8 @@ jobs:
164114
# mathjax path in old doc (regex)
165115
mathjax_path_from="[-./A-Za-z_]*/tex-chtml[.]js?v=[0-9a-f]*"
166116
# 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)
117+
mathjax_path_to=$(SAGE_USE_CDNS=yes python -c "from sage_docbuild.conf import mathjax_path; print(mathjax_path)")
118+
new_version=$(cat src/VERSION.txt)
169119
# Wipe out chronic diffs between old doc and new doc
170120
(cd doc && \
171121
find . -name "*.html" | xargs sed -i -e '/class="sidebar-brand-text"/ s/Sage [0-9a-z.]* /Sage '"$new_version"' /' \
@@ -185,20 +135,15 @@ jobs:
185135
git add -A && git commit --quiet -m 'old')
186136
fi
187137
188-
- name: Build doc
138+
- name: Build documentation
189139
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
140+
if: steps.worktree.outcome == 'success'
141+
shell: bash -l {0}
193142
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 .ci/docker-exec-script.sh BUILD /sage {0}
143+
meson compile -C builddir doc-html
144+
env:
145+
SAGE_USE_CDNS: yes
146+
SAGE_DOCBUILD_OPTS: "--include-tests-blocks"
202147

203148
- name: Copy doc
204149
id: copy
@@ -209,12 +154,7 @@ jobs:
209154
if [ -d "doc/html" ]; then
210155
rm -rf doc/html
211156
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/
157+
cp -r builddir/src/doc doc/
218158
# Check if we are on pull request event
219159
PR_NUMBER=""
220160
if [[ -n "$GITHUB_REF" ]]; then
@@ -275,30 +215,24 @@ jobs:
275215
- name: Build live doc
276216
id: buildlivedoc
277217
if: startsWith(github.ref, 'refs/tags/')
218+
shell: bash -l {0}
278219
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 .ci/docker-exec-script.sh BUILD /sage {0}
220+
meson compile -C builddir doc-html
221+
env:
222+
SAGE_USE_CDNS: yes
223+
SAGE_LIVE_DOC: yes
224+
SAGE_JUPYTER_SERVER: binder:sagemath/sage-binder-env/dev
225+
SAGE_DOCBUILD_OPTS: "--include-tests-blocks"
292226

293227
- name: Copy live doc
294228
id: copylivedoc
295229
if: steps.buildlivedoc.outcome == 'success'
296230
run: |
297231
mkdir -p ./livedoc
298232
# 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
233+
cp -r builddir/src/doc/html livedoc/
234+
cp -r builddir/src/doc/pdf livedoc/
235+
cp builddir/src/doc/index.html livedoc/
302236
zip -r livedoc.zip livedoc
303237
304238
- name: Upload live doc

build/pkgs/database_stein_watkins_mini/spkg-install.in

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../database_stein_watkins/spkg-install.in

build/pkgs/gap_packages/checksums.ini

Lines changed: 0 additions & 1 deletion
This file was deleted.

build/pkgs/gap_packages/checksums.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../gap/checksums.ini

build/pkgs/gap_packages/package-version.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
../gap/package-version.txt

build/pkgs/gfortran/build-gcc

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)