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
2920concurrency :
3021 # Cancel previous runs of this workflow for the same branch
3122 group : ${{ github.workflow }}-${{ github.ref }}
3223 cancel-in-progress : true
3324
3425env :
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
4328jobs :
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" \
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
0 commit comments