Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions .github/workflows/build-ci-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ name: Build CI deps image 🐳
# dispatch.
#
# One image per ARCHITECTURE, x86_64 and aarch64, each built on a runner of that architecture
# (ubuntu-24.04-arm for aarch64) so nothing runs under emulation. The x86_64 image keeps the
# (ubuntu-26.04-arm for aarch64) so nothing runs under emulation. The x86_64 image keeps the
# plain toolchain-key tag; the aarch64 image's tag carries an -aarch64 suffix.
#
# OWNER: the package lands under whichever org runs this; it MUST run in bertiniteam/b2 (its token
Expand Down Expand Up @@ -45,9 +45,9 @@ jobs:
pytag: [cp310-cp310, cp311-cp311, cp312-cp312, cp313-cp313, cp314-cp314]
include:
- arch: x86_64
runner: ubuntu-latest
runner: ubuntu-26.04
- arch: aarch64
runner: ubuntu-24.04-arm
runner: ubuntu-26.04-arm
steps:
- uses: actions/checkout@v5
# SOURCE the file, then write the three values out by name. Do NOT cat it into
Expand All @@ -70,7 +70,7 @@ jobs:
-e BOOST_VERSION -e EIGEN_VERSION -e EIGENPY_VERSION \
"$MANYLINUX_IMAGE" \
bash docker/manylinux-deps/build-python-deps.sh "${{ matrix.pytag }}"
- uses: actions/upload-artifact@v5
- uses: actions/upload-artifact@v6
with:
name: deps-${{ matrix.arch }}-${{ matrix.pytag }}
path: deps-${{ matrix.pytag }}.tar.gz
Expand All @@ -88,10 +88,10 @@ jobs:
matrix:
include:
- arch: x86_64
runner: ubuntu-latest
runner: ubuntu-26.04
suffix: ""
- arch: aarch64
runner: ubuntu-24.04-arm
runner: ubuntu-26.04-arm
suffix: "-aarch64"
steps:
- uses: actions/checkout@v5
Expand All @@ -107,7 +107,7 @@ jobs:
} >> "$GITHUB_ENV"

- name: Collect prebuilt deps into the build context
uses: actions/download-artifact@v5
uses: actions/download-artifact@v7
with:
pattern: deps-${{ matrix.arch }}-*
merge-multiple: true
Expand All @@ -122,14 +122,14 @@ jobs:
ls -lh docker/manylinux-deps/deps

- name: Log in to GHCR
uses: docker/login-action@v3
uses: docker/login-action@v4
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Build & push (assembly only -- fast)
uses: docker/build-push-action@v6
uses: docker/build-push-action@v7
with:
context: docker/manylinux-deps
push: true
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-macos-deps.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
echo "EIGEN_VERSION=$EIGEN_VERSION"
echo "EIGENPY_VERSION=$EIGENPY_VERSION"
} >> "$GITHUB_ENV"
- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}

Expand Down
57 changes: 28 additions & 29 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ on:
workflow_call:
inputs:
minimal:
description: 'Build only the ubuntu-latest / python-3.11 wheel; skip C++ tests, Windows, macOS, and wheel tests.'
description: 'Build only the ubuntu-26.04 / python-3.11 wheel; skip C++ tests, Windows, macOS, and wheel tests.'
required: false
type: boolean
default: false
Expand All @@ -50,7 +50,7 @@ on:
type: boolean
default: false
minimal:
description: 'Build only the ubuntu-latest / python-3.11 wheel; skip C++ tests, Windows, macOS, and wheel tests.'
description: 'Build only the ubuntu-26.04 / python-3.11 wheel; skip C++ tests, Windows, macOS, and wheel tests.'
required: false
type: boolean
default: false
Expand All @@ -68,10 +68,6 @@ concurrency:
# Boost/Eigen/eigenpy versions are single-sourced in .github/ci-deps-versions.env and surfaced by
# the `set_versions` job; the two jobs that build them from source consume it as job-level env.
# That same file is in build-ci-image.yml's path filter, so a version bump rebuilds the Linux image.
env:
# Opt JavaScript actions into Node 24 (Node 20 is being removed from the runners).
# Silences the conda-incubator/setup-miniconda@v3 (and other node20 action) deprecation.
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"

jobs:
# Cheap, Doxygen-only gate (no compilation). Every job that actually builds
Expand All @@ -84,7 +80,7 @@ jobs:

set_versions:
name: Resolve dependency versions
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
outputs:
boost: ${{ steps.v.outputs.boost }}
eigen: ${{ steps.v.outputs.eigen }}
Expand All @@ -103,7 +99,7 @@ jobs:

set_matrix:
name: Set OS matrix
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
outputs:
os: ${{ steps.matrix.outputs.os }}
python_versions: ${{ steps.matrix.outputs.python_versions }}
Expand All @@ -119,19 +115,22 @@ jobs:
# If it SIGABRTs again, take it back out of this line and keep `-f os=macos-intel`,
# which runs intel alone at one python version, for asking again later.
if [[ "${{ inputs.minimal }}" == "true" ]]; then
OS='["ubuntu-latest"]'; PY='["3.11"]'
OS='["ubuntu-26.04"]'; PY='["3.11"]'
elif [[ "${{ github.ref }}" == "refs/heads/main" || "${{ github.ref }}" == "refs/heads/develop" || "${{ github.ref }}" == refs/tags/* || "${{ inputs.full_matrix }}" == "true" || "${{ github.event.pull_request.base.ref }}" == "develop" || "${{ github.event.pull_request.base.ref }}" == "main" ]]; then
# ubuntu-24.04-arm is linux-aarch64 (#474): a full member, C++ tests and every wheel,
# on a native arm runner rather than under emulation.
OS='["ubuntu-latest","ubuntu-24.04-arm","macos-14","macos-15-intel"]'; PY='["3.10","3.11","3.12","3.13","3.14"]'
# ubuntu-26.04-arm is linux-aarch64 (#474): a full member, C++ tests and every wheel,
# on a native arm runner rather than under emulation. Linux names its Ubuntu
# version on both architectures, here and in every workflow, instead of
# ubuntu-latest, so an image change is a deliberate edit rather than a surprise:
# the C++ test job compiles with the runner's own GCC and apt packages.
OS='["ubuntu-26.04","ubuntu-26.04-arm","macos-14","macos-15-intel"]'; PY='["3.10","3.11","3.12","3.13","3.14"]'
else
OS='["ubuntu-latest"]'; PY='["3.11"]'
OS='["ubuntu-26.04"]'; PY='["3.11"]'
fi
# Manual OS targeting (the workflow_dispatch `os` input) narrows the unix matrix; the
# separate Windows jobs gate on the same input. Empty/`all` => leave as computed above.
case "${{ inputs.os }}" in
linux) OS='["ubuntu-latest","ubuntu-24.04-arm"]' ;;
linux-arm) OS='["ubuntu-24.04-arm"]' ;;
linux) OS='["ubuntu-26.04","ubuntu-26.04-arm"]' ;;
linux-arm) OS='["ubuntu-26.04-arm"]' ;;
macos) OS='["macos-14"]' ;;
macos-intel) OS='["macos-15-intel"]'; PY='["3.11"]' ;; # the #215 experiment
windows) OS='[]' ;; # no unix jobs; only the standalone Windows jobs run
Expand Down Expand Up @@ -304,7 +303,7 @@ jobs:
windows-conda-cpp-
windows-conda-

- uses: conda-incubator/setup-miniconda@v3
- uses: conda-incubator/setup-miniconda@v4
with:
activate-environment: b2-windows
environment-file: environment-win.yml
Expand Down Expand Up @@ -585,7 +584,7 @@ jobs:
du -sh .ccache 2>/dev/null || echo "no .ccache directory was produced"
if command -v ccache >/dev/null; then CCACHE_DIR=$PWD/.ccache ccache -s || true; fi

- uses: actions/upload-artifact@v5
- uses: actions/upload-artifact@v6
with:
name: wheels-${{ matrix.os }}-${{ matrix.python-version }}
path: ./wheelhouse/*.whl
Expand Down Expand Up @@ -623,7 +622,7 @@ jobs:
restore-keys: |
windows-conda-${{ matrix.python-version }}-
windows-conda-
- uses: conda-incubator/setup-miniconda@v3
- uses: conda-incubator/setup-miniconda@v4
with:
activate-environment: b2-windows
environment-file: environment-win.yml
Expand Down Expand Up @@ -683,7 +682,7 @@ jobs:
Remove-Item dist/*.whl
Move-Item repaired/*.whl dist/

- uses: actions/upload-artifact@v5
- uses: actions/upload-artifact@v6
with:
name: wheels-windows-${{ matrix.python-version }}
path: ./dist/*.whl
Expand All @@ -708,18 +707,18 @@ jobs:
os: ${{ fromJson(needs.set_matrix.outputs.os) }}
python-version: ${{ fromJson(needs.set_matrix.outputs.python_versions) }}
exclude:
- os: ubuntu-latest
- os: ubuntu-24.04-arm
- os: ubuntu-26.04
- os: ubuntu-26.04-arm

steps:
- uses: actions/checkout@v5

- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}

- name: Download wheels artifact
uses: actions/download-artifact@v5
uses: actions/download-artifact@v7
with:
name: wheels-${{ matrix.os }}-${{ matrix.python-version }}
path: dist/
Expand Down Expand Up @@ -754,7 +753,7 @@ jobs:
steps:
- uses: actions/checkout@v5

- uses: conda-incubator/setup-miniconda@v3
- uses: conda-incubator/setup-miniconda@v4
with:
activate-environment: b2-windows
environment-file: environment-win.yml
Expand All @@ -763,7 +762,7 @@ jobs:
channel-priority: strict

- name: Download wheels artifact
uses: actions/download-artifact@v5
uses: actions/download-artifact@v7
with:
name: wheels-windows-${{ matrix.python-version }}
path: dist/
Expand Down Expand Up @@ -791,14 +790,14 @@ jobs:
name: Docs build (doctest + html -W)
if: ${{ inputs.minimal != true }}
needs: [build_macos_ubuntu_wheels]
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
timeout-minutes: 20
steps:
- uses: actions/checkout@v5
with:
fetch-depth: 0 # gitpython in conf.py derives the version from the git history

- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
python-version: '3.11'

Expand All @@ -809,9 +808,9 @@ jobs:
scikit-build-core build numpy tqdm matplotlib pandas sympy networkx

- name: Download built wheel
uses: actions/download-artifact@v5
uses: actions/download-artifact@v7
with:
name: wheels-ubuntu-latest-3.11
name: wheels-ubuntu-26.04-3.11
path: dist/

- name: Install bertini from built wheel
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/build_docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
if: github.event_name == 'workflow_dispatch'
uses: ./.github/workflows/build_and_test.yml
with:
# Docs only need the ubuntu-latest / python-3.11 wheel; skip the full
# Docs only need the ubuntu-26.04 / python-3.11 wheel; skip the full
# OS/Python matrix and the wheel/C++ test jobs.
minimal: true
ref: ${{ inputs.ref }}
Expand All @@ -48,7 +48,7 @@ jobs:
# python_docs as the `docs-cpp` artifact for final assembly.
cpp_docs:
name: Build C++ docs (Doxygen)
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@v5
with:
Expand Down Expand Up @@ -86,7 +86,7 @@ jobs:
mv build/docs/cpp site/cpp

- name: Upload C++ docs artifact
uses: actions/upload-artifact@v5
uses: actions/upload-artifact@v6
with:
name: docs-cpp
path: site/cpp
Expand All @@ -102,7 +102,7 @@ jobs:
always() &&
(needs.build_and_test.result == 'success' || needs.build_and_test.result == 'skipped') &&
needs.cpp_docs.result == 'success'
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
permissions:
contents: write # push the persistent docs-store branch (the durable versioned-docs store)
steps:
Expand All @@ -115,7 +115,7 @@ jobs:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'

Expand All @@ -141,9 +141,9 @@ jobs:
scikit-build-core build numpy matplotlib pandas sympy networkx

- name: Download built wheel
uses: actions/download-artifact@v5
uses: actions/download-artifact@v7
with:
name: wheels-ubuntu-latest-3.11
name: wheels-ubuntu-26.04-3.11
path: dist/

- name: Install bertini from built wheel
Expand All @@ -152,7 +152,7 @@ jobs:
# The Doxygen C++ reference was built in parallel by the cpp_docs job; drop it
# into site/cpp so the assembled site/ has cpp + python + landing.
- name: Download C++ docs
uses: actions/download-artifact@v5
uses: actions/download-artifact@v7
with:
name: docs-cpp
path: site/cpp
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/doc_lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ env:
jobs:
cpp_doc_lint:
name: Doxygen doc lint (C++)
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@v5

Expand All @@ -80,12 +80,12 @@ jobs:
# Runs in parallel with cpp_doc_lint. Pure-stdlib ast, no build, no pip deps.
python_doc_lint:
name: Docstring lint (Python)
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@v5

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'

Expand All @@ -96,12 +96,12 @@ jobs:
# rule is in .editorconfig, and `python tools/whitespace_lint.py --fix` applies it.
whitespace_lint:
name: Whitespace lint (tabs, trailing whitespace, line endings)
runs-on: ubuntu-latest
runs-on: ubuntu-26.04
steps:
- uses: actions/checkout@v5

- name: Set up Python
uses: actions/setup-python@v5
uses: actions/setup-python@v6
with:
python-version: '3.11'

Expand Down
Loading
Loading