Skip to content

Commit

Permalink
Merge branch 'develop' into graphs/optional_tags
Browse files Browse the repository at this point in the history
  • Loading branch information
dcoudert committed Dec 3, 2023
2 parents 738cfdd + 2a9a426 commit c287566
Show file tree
Hide file tree
Showing 100 changed files with 437 additions and 260 deletions.
20 changes: 10 additions & 10 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,15 +96,15 @@ jobs:
SAGE_NUM_THREADS: 2

- name: Build modularized distributions
if: always() && steps.worktree.outcome == 'success'
if: (success() || failure()) && steps.worktree.outcome == 'success'
run: make V=0 tox && make SAGE_CHECK=no pypi-wheels
working-directory: ./worktree-image
env:
MAKE: make -j2 --output-sync=recurse
SAGE_NUM_THREADS: 2

- name: Static code check with pyright
if: always() && steps.worktree.outcome == 'success'
if: (success() || failure()) && steps.worktree.outcome == 'success'
uses: jakebailey/pyright-action@v1
with:
version: 1.1.332
Expand All @@ -116,7 +116,7 @@ jobs:
NODE_OPTIONS: --max-old-space-size=8192

- name: Static code check with pyright (annotated)
if: always() && steps.worktree.outcome == 'success'
if: (success() || failure()) && steps.worktree.outcome == 'success'
uses: jakebailey/pyright-action@v1
with:
version: 1.1.332
Expand All @@ -130,7 +130,7 @@ jobs:

- name: Clean (fallback to non-incremental)
id: clean
if: always() && steps.worktree.outcome == 'success' && steps.incremental.outcome != 'success'
if: (success() || failure()) && steps.worktree.outcome == 'success' && steps.incremental.outcome != 'success'
run: |
set -ex
./bootstrap && make doc-clean doc-uninstall sagelib-clean && git clean -fx src/sage && ./config.status
Expand All @@ -143,7 +143,7 @@ jobs:
# This step is needed because building the modularized distributions installs some optional packages,
# so the editable install of sagelib needs to build the corresponding optional extension modules.
id: build
if: always() && (steps.incremental.outcome == 'success' || steps.clean.outcome == 'success')
if: (success() || failure()) && (steps.incremental.outcome == 'success' || steps.clean.outcome == 'success')
run: |
make build
working-directory: ./worktree-image
Expand All @@ -154,7 +154,7 @@ jobs:
# Testing

- name: Test changed files (sage -t --new)
if: always() && steps.build.outcome == 'success'
if: (success() || failure()) && steps.build.outcome == 'success'
run: |
# We run tests with "sage -t --new"; this only tests the uncommitted changes.
./sage -t --new -p2
Expand All @@ -164,7 +164,7 @@ jobs:
SAGE_NUM_THREADS: 2

- name: Test modularized distributions
if: always() && steps.build.outcome == 'success'
if: (success() || failure()) && steps.build.outcome == 'success'
run: make V=0 tox && make pypi-wheels-check
working-directory: ./worktree-image
env:
Expand All @@ -182,14 +182,14 @@ jobs:
COLUMNS: 120

- name: Test all files (sage -t --all --long)
if: always() && steps.build.outcome == 'success'
if: (success() || failure()) && steps.build.outcome == 'success'
run: |
../sage -python -m pip install coverage
../sage -python -m coverage run ./bin/sage-runtests --all --long -p2 --random-seed=286735480429121101562228604801325644303
working-directory: ./worktree-image/src

- name: Prepare coverage results
if: always() && steps.build.outcome == 'success'
if: (success() || failure()) && steps.build.outcome == 'success'
run: |
./venv/bin/python3 -m coverage combine src/.coverage/
./venv/bin/python3 -m coverage xml
Expand All @@ -198,7 +198,7 @@ jobs:
working-directory: ./worktree-image

- name: Upload coverage to codecov
if: always() && steps.build.outcome == 'success'
if: (success() || failure()) && steps.build.outcome == 'success'
uses: codecov/codecov-action@v3
with:
directory: ./worktree-image/coverage-report
4 changes: 2 additions & 2 deletions .github/workflows/ci-linux-incremental.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ jobs:
- name: Determine targets to build
id: build-targets
run: |
echo "uninstall_targets=$(echo $(for a in '' ${{ steps.changed-packages.outputs.configures_all_changed_files }}; do echo $a | sed -E 's,build/pkgs/([_.a-z0-9]*)/spkg-configure[.]m4 *,\1-uninstall,'; done | sort -u))" >> $GITHUB_OUTPUT
echo "build_targets=$(echo $(for a in '' ${{ steps.changed-packages.outputs.pkgs_all_changed_files }}; do echo $a | sed -E 's,-,_,g;s,(build/)?pkgs/([-_.a-z0-9]*)/[^ ]* *,\2-ensure,;'; done | sort -u))" >> $GITHUB_OUTPUT
echo "uninstall_targets=$(echo $(for a in '' ${{ steps.changed-packages.outputs.configures_all_changed_files }}; do echo $a | sed -E 's,build/pkgs/([a-z0-9][_.a-z0-9]*)/spkg-configure[.]m4 *,\1-uninstall,'; done | sort -u))" >> $GITHUB_OUTPUT
echo "build_targets=$(echo $(for a in '' ${{ steps.changed-packages.outputs.pkgs_all_changed_files }}; do SPKG=$(echo $a | sed -E 's,-,_,g;s,(build/)?pkgs/([a-z0-9][-_.a-z0-9]*)/[^ ]* *,\2,;'); if [ -f "build/pkgs/$SPKG/checksums.ini" -o -f "build/pkgs/$SPKG/requirements.txt" -o -f "build/pkgs/$SPKG/spkg-install" ]; then echo "$SPKG-ensure"; fi; done | sort -u))" >> $GITHUB_OUTPUT
cat $GITHUB_OUTPUT
test:
Expand Down
18 changes: 11 additions & 7 deletions .github/workflows/ci-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,9 @@ jobs:
tox_packages_factors: >-
["standard"]
docker_push_repository: ghcr.io/${{ github.repository }}/
# Reduce from 30 to 25 because it runs in parallel with 'standard-sitepackages' below
max_parallel: 25
# Reduce from 30 to 20 because it runs in parallel with 'standard-sitepackages'
# and 'minimal-pre' below
max_parallel: 20

standard-sitepackages:
if: ${{ success() || failure() }}
Expand Down Expand Up @@ -135,7 +136,7 @@ jobs:
"opensuse-tumbleweed",
"debian-bullseye-i386"]
docker_push_repository: ghcr.io/${{ github.repository }}/
max_parallel: 10
max_parallel: 8

minimal-pre:
if: ${{ success() || failure() }}
Expand All @@ -148,9 +149,9 @@ jobs:
tox_packages_factors: >-
["minimal"]
docker_push_repository: ghcr.io/${{ github.repository }}/
# Reduced from 30 because it may run in parallel with 'standard-sitepackages' above.
# Reduced from 30 because it may run in parallel with 'standard' and 'standard-sitepackages' above.
# Calibrated for clogging the job pipeline until the "default" job has finished.
max_parallel: 20
max_parallel: 24

minimal:
if: ${{ success() || failure() }}
Expand All @@ -169,6 +170,7 @@ jobs:
tox_packages_factors: >-
["minimal"]
docker_push_repository: ghcr.io/${{ github.repository }}/
max_parallel: 24

maximal-pre:
if: ${{ success() || failure() }}
Expand Down Expand Up @@ -196,7 +198,8 @@ jobs:
tox_packages_factors: >-
["maximal"]
docker_targets: "with-targets-optional"
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :optional: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[0-o]))'
# [0-9a-o] excludes _, in particular package _develop
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :optional: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[0-9a-o]))'


optional-p-z:
Expand All @@ -211,6 +214,7 @@ jobs:
tox_packages_factors: >-
["maximal"]
docker_targets: "with-targets-optional"
# [0-9a-o] excludes _, in particular package _develop
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :optional: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[p-z]))'

experimental-0-o:
Expand All @@ -225,7 +229,7 @@ jobs:
tox_packages_factors: >-
["maximal"]
docker_targets: "with-targets-optional"
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :experimental: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[0-o]))'
targets_optional: '$(echo $(export PATH=build/bin:$PATH && sage-package list :experimental: --has-file "spkg-install.in|spkg-install|requirements.txt" --no-file "huge|has_nonfree_dependencies" | grep -v sagemath_doc | grep ^[0-9a-o]))'

experimental-p-z:
if: ${{ success() || failure() }}
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/ci-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,30 +40,35 @@ jobs:
with:
stage: "2"
needs: [stage-1]
if: ${{ success() || failure() }}

stage-2-optional-0-o:
uses: ./.github/workflows/macos.yml
with:
stage: "2-optional-0-o"
needs: [stage-2]
if: ${{ success() || failure() }}

stage-2-optional-p-z:
uses: ./.github/workflows/macos.yml
with:
stage: "2-optional-p-z"
needs: [stage-2-optional-0-o]
if: ${{ success() || failure() }}

stage-2-experimental-0-o:
uses: ./.github/workflows/macos.yml
with:
stage: "2-optional-0-o"
needs: [stage-2-optional-p-z]
if: ${{ success() || failure() }}

stage-2-experimental-p-z:
uses: ./.github/workflows/macos.yml
with:
stage: "2-experimental-p-z"
needs: [stage-2-experimental-0-o]
if: ${{ success() || failure() }}

dist:

Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/doc-build-pdf.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ jobs:

- name: Build (fallback to non-incremental)
id: build
if: always() && steps.worktree.outcome == 'success' && steps.incremental.outcome != 'success'
if: (success() || failure()) && steps.worktree.outcome == 'success' && steps.incremental.outcome != 'success'
run: |
set -ex
make sagelib-clean && git clean -fx src/sage && ./config.status && make build
Expand All @@ -103,7 +103,7 @@ jobs:

- name: Build docs (PDF)
id: docbuild
if: always() && (steps.incremental.outcome == 'success' || steps.build.outcome == 'success')
if: (success() || failure()) && (steps.incremental.outcome == 'success' || steps.build.outcome == 'success')
run: |
make doc-clean doc-uninstall; make sagemath_doc_html-build-deps sagemath_doc_pdf-no-deps
working-directory: ./worktree-image
Expand All @@ -113,7 +113,7 @@ jobs:

- name: Copy docs
id: copy
if: always() && steps.docbuild.outcome == 'success'
if: (success() || failure()) && steps.docbuild.outcome == 'success'
run: |
# For some reason the deploy step below cannot find /sage/...
# So copy everything from there to local folder
Expand All @@ -123,7 +123,7 @@ jobs:
zip -r docs-pdf.zip docs
- name: Upload docs
if: always() && steps.copy.outcome == 'success'
if: (success() || failure()) && steps.copy.outcome == 'success'
uses: actions/upload-artifact@v3
with:
name: docs-pdf
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/doc-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ jobs:

- name: Build (fallback to non-incremental)
id: build
if: always() && steps.worktree.outcome == 'success' && steps.incremental.outcome != 'success'
if: (success() || failure()) && steps.worktree.outcome == 'success' && steps.incremental.outcome != 'success'
run: |
set -ex
make sagelib-clean && git clean -fx src/sage && ./config.status && make sagemath_doc_html-build-deps
Expand All @@ -110,7 +110,7 @@ jobs:

- name: Build docs
id: docbuild
if: always() && (steps.incremental.outcome == 'success' || steps.build.outcome == 'success')
if: (success() || failure()) && (steps.incremental.outcome == 'success' || steps.build.outcome == 'success')
# Always non-incremental because of the concern that
# incremental docbuild may introduce broken links (inter-file references) though build succeeds
run: |
Expand All @@ -127,7 +127,7 @@ jobs:

- name: Copy docs
id: copy
if: always() && steps.docbuild.outcome == 'success'
if: (success() || failure()) && steps.docbuild.outcome == 'success'
run: |
set -ex
mkdir -p ./docs
Expand Down Expand Up @@ -191,7 +191,7 @@ jobs:
zip -r docs.zip docs
- name: Upload docs
if: always() && steps.copy.outcome == 'success'
if: (success() || failure()) && steps.copy.outcome == 'success'
uses: actions/upload-artifact@v3
with:
name: docs
Expand Down
5 changes: 5 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,10 @@ on:
free_disk_space:
default: false
type: boolean
timeout:
description: 'Elapsed time (seconds) at which to kill the build'
default: 20000
type: number
#
# Publishing to GitHub Packages
#
Expand Down Expand Up @@ -224,6 +228,7 @@ jobs:
if: inputs.free_disk_space
- name: Configure and build Sage distribution within a Docker container
run: |
(sleep ${{ inputs.timeout }}; for id in $(docker ps -q); do docker exec $id pkill make; done) &
set -o pipefail; EXTRA_DOCKER_BUILD_ARGS="--build-arg NUMPROC=4 --build-arg USE_MAKEFLAGS=\"-k V=0 SAGE_NUM_THREADS=3\"" tox -e $TOX_ENV -- $TARGETS 2>&1 | sed "/^configure: notice:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: warning:/s|^|::warning file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;/^configure: error:/s|^|::error file=artifacts/$LOGS_ARTIFACT_NAME/config.log::|;"
- name: Copy logs from the Docker image or build container
run: |
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,13 @@ jobs:
run: pip install tox

- name: Code style check with pycodestyle
if: always() && steps.deps.outcome == 'success'
if: (success() || failure()) && steps.deps.outcome == 'success'
run: tox -e pycodestyle-minimal

- name: Code style check with relint
if: always() && steps.deps.outcome == 'success'
if: (success() || failure()) && steps.deps.outcome == 'success'
run: tox -e relint -- src/sage/

- name: Validate docstring markup as RST
if: always() && steps.deps.outcome == 'success'
if: (success() || failure()) && steps.deps.outcome == 'success'
run: tox -e rst
5 changes: 2 additions & 3 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,13 @@ on:
default: >-
[["latest", "", "homebrew-macos-usrlocal-minimal"],
["latest", "", "homebrew-macos-usrlocal-standard"],
["11", "xcode_13.2.1", "homebrew-macos-usrlocal-standard"],
["11", "xcode_13.2.1", "homebrew-macos-usrlocal-minimal"],
["12", "", "homebrew-macos-usrlocal-standard"],
["13", "xcode_15.0", "homebrew-macos-usrlocal-standard"],
["latest", "", "homebrew-macos-usrlocal-maximal"],
["latest", "", "homebrew-macos-usrlocal-python3_xcode-standard"],
["latest", "", "conda-forge-macos-minimal"],
["latest", "", "conda-forge-macos-standard"],
["latest", "", "conda-forge-macos-maximal"]]
["latest", "", "conda-forge-macos-standard"]]
type: string
extra_sage_packages:
description: 'Extra Sage packages to install as system packages'
Expand Down
4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ title: SageMath
abstract: SageMath is a free open-source mathematics software system.
authors:
- name: "The SageMath Developers"
version: 10.2.rc1
version: 10.2
doi: 10.5281/zenodo.593563
date-released: 2023-11-10
date-released: 2023-12-03
repository-code: "https://github.com/sagemath/sage"
url: "https://www.sagemath.org/"
2 changes: 1 addition & 1 deletion VERSION.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
SageMath version 10.2.rc1, Release Date: 2023-11-10
SageMath version 10.2, Release Date: 2023-12-03
2 changes: 2 additions & 0 deletions build/bin/sage-build-env-config.in
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,8 @@ export SAGE_SUITESPARSE_PREFIX="@SAGE_SUITESPARSE_PREFIX@"

export SAGE_CONFIGURE_FFLAS_FFPACK="@SAGE_CONFIGURE_FFLAS_FFPACK@"

export SAGE_HAVE_LIBJPEG="@SAGE_HAVE_LIBJPEG@"

export CONFIGURED_SAGE_EDITABLE="@SAGE_EDITABLE@"
export CONFIGURED_SAGE_WHEELS="@SAGE_WHEELS@"

Expand Down
9 changes: 8 additions & 1 deletion build/make/install
Original file line number Diff line number Diff line change
Expand Up @@ -55,10 +55,17 @@ if $MAKE -q "$@" >/dev/null 2>/dev/null; then
fi

# Dump environment for debugging purposes:
echo "*** ALL ENVIRONMENT VARIABLES BEFORE BUILD: ***"
if [ -n "$GITHUB_ACTIONS" ]; then
echo "::group::*** ALL ENVIRONMENT VARIABLES BEFORE BUILD: ***"
else
echo "*** ALL ENVIRONMENT VARIABLES BEFORE BUILD: ***"
fi
env | sort
printf '\E[m'
echo "***********************************************"
if [ -n "$GITHUB_ACTIONS" ]; then
echo "::endgroup::"
fi

# look_for_errors: search log files for error messages and print a summary.
# arguments:
Expand Down
1 change: 1 addition & 0 deletions build/pkgs/_prereq/distros/opensuse.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
binutils
make
m4
gawk
perl
python3
tar
Expand Down
2 changes: 1 addition & 1 deletion build/pkgs/_python3.10/distros/conda.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
python==3.10
python=3.10
2 changes: 1 addition & 1 deletion build/pkgs/_python3.11/distros/conda.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
python==3.11
python=3.11
2 changes: 1 addition & 1 deletion build/pkgs/_python3.12/distros/conda.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
python==3.12
python=3.12
2 changes: 1 addition & 1 deletion build/pkgs/_python3.9/distros/conda.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
python==3.9
python=3.9
2 changes: 1 addition & 1 deletion build/pkgs/_recommended/dependencies
Original file line number Diff line number Diff line change
@@ -1 +1 @@
pandoc ffmpeg imagemagick texlive git
pandoc ffmpeg imagemagick texlive git libjpeg

0 comments on commit c287566

Please sign in to comment.