16
16
- develop
17
17
workflow_dispatch :
18
18
# 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'
28
19
29
20
concurrency :
30
21
# Cancel previous runs of this workflow for the same branch
31
22
group : ${{ github.workflow }}-${{ github.ref }}
32
23
cancel-in-progress : true
33
24
34
25
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
42
27
43
28
jobs :
44
29
build-doc :
45
30
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
52
31
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
63
32
- name : Checkout
64
33
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
+
72
35
- name : Merge CI fixes from sagemath/sage
73
36
run : |
74
- mkdir -p upstream
75
- .ci/merge-fixes.sh 2>&1 | tee upstream/ci_fixes.log
37
+ .ci/merge-fixes.sh
76
38
env :
77
39
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 : " "
90
40
91
- - name : Set up Docker Buildx
92
- uses : docker/setup-buildx-action@v3
41
+ - name : Cache conda packages
42
+ uses : actions/cache@v4
93
43
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]
99
50
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 }}
113
52
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}
117
68
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
+
123
73
#
124
74
# On pull request and push to develop events
125
75
#
@@ -164,8 +114,8 @@ jobs:
164
114
# mathjax path in old doc (regex)
165
115
mathjax_path_from="[-./A-Za-z_]*/tex-chtml[.]js?v=[0-9a-f]*"
166
116
# 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)
169
119
# Wipe out chronic diffs between old doc and new doc
170
120
(cd doc && \
171
121
find . -name "*.html" | xargs sed -i -e '/class="sidebar-brand-text"/ s/Sage [0-9a-z.]* /Sage '"$new_version"' /' \
@@ -185,20 +135,15 @@ jobs:
185
135
git add -A && git commit --quiet -m 'old')
186
136
fi
187
137
188
- - name : Build doc
138
+ - name : Build documentation
189
139
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}
193
142
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"
202
147
203
148
- name : Copy doc
204
149
id : copy
@@ -209,12 +154,7 @@ jobs:
209
154
if [ -d "doc/html" ]; then
210
155
rm -rf doc/html
211
156
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/
218
158
# Check if we are on pull request event
219
159
PR_NUMBER=""
220
160
if [[ -n "$GITHUB_REF" ]]; then
@@ -275,30 +215,24 @@ jobs:
275
215
- name : Build live doc
276
216
id : buildlivedoc
277
217
if : startsWith(github.ref, 'refs/tags/')
218
+ shell : bash -l {0}
278
219
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"
292
226
293
227
- name : Copy live doc
294
228
id : copylivedoc
295
229
if : steps.buildlivedoc.outcome == 'success'
296
230
run : |
297
231
mkdir -p ./livedoc
298
232
# 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/
302
236
zip -r livedoc.zip livedoc
303
237
304
238
- name : Upload live doc
0 commit comments