From 06efd191140a0e2fcb0c8a59c23d1ccf1d81d1c8 Mon Sep 17 00:00:00 2001 From: "Chris Rackauckas (Claude)" Date: Sat, 13 Jun 2026 06:03:42 -0400 Subject: [PATCH] downgrade/sublibrary-downgrade: add apt-packages + container inputs (provision Python/R-stack downgrade legs) Co-Authored-By: Chris Rackauckas Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/downgrade.yml | 17 +++++++++++++++++ .github/workflows/sublibrary-downgrade.yml | 16 ++++++++++++++++ README.md | 4 ++++ 3 files changed, 37 insertions(+) diff --git a/.github/workflows/downgrade.yml b/.github/workflows/downgrade.yml index 9c3c86b..a2fe16c 100644 --- a/.github/workflows/downgrade.yml +++ b/.github/workflows/downgrade.yml @@ -43,11 +43,22 @@ on: default: "ubuntu-latest" required: false type: string + apt-packages: + description: "Space-separated apt packages to install before building/testing (Linux only)." + default: "" + required: false + type: string + container: + description: "Docker container image to run the job in, e.g. for Python-stack packages (empty string = no container)" + default: "" + required: false + type: string jobs: downgrade: name: "Downgrade Tests${{ inputs.group != '' && format(' - {0}', inputs.group) || '' }}" runs-on: "${{ inputs.self-hosted && 'self-hosted' || inputs.os }}" + container: ${{ inputs.container }} steps: - uses: actions/checkout@v6 @@ -108,6 +119,12 @@ jobs: projects: "${{ inputs.projects }}" mode: "${{ inputs.mode != '' && inputs.mode || 'deps' }}" + - name: "Install system packages" + if: "${{ inputs.apt-packages != '' && runner.os == 'Linux' }}" + run: | + sudo apt-get update + sudo apt-get install -y ${{ inputs.apt-packages }} + - uses: julia-actions/julia-buildpkg@v1 with: project: "${{ inputs.project }}" diff --git a/.github/workflows/sublibrary-downgrade.yml b/.github/workflows/sublibrary-downgrade.yml index 3a210dc..28a6128 100644 --- a/.github/workflows/sublibrary-downgrade.yml +++ b/.github/workflows/sublibrary-downgrade.yml @@ -37,6 +37,16 @@ on: default: "" required: false type: string + apt-packages: + description: "Space-separated apt packages to install before building/testing (Linux only)." + default: "" + required: false + type: string + container: + description: "Docker container image to run the job in, e.g. for Python-stack packages (empty string = no container)" + default: "" + required: false + type: string jobs: discover: @@ -81,6 +91,7 @@ jobs: needs: discover if: needs.discover.outputs.has_any == 'true' runs-on: ubuntu-latest + container: ${{ inputs.container }} strategy: fail-fast: false matrix: @@ -156,6 +167,11 @@ jobs: projects: ${{ matrix.project }} skip: ${{ env.EFFECTIVE_SKIP }} julia_version: ${{ env.JULIA_MM }} + - name: "Install system packages" + if: "${{ inputs.apt-packages != '' && runner.os == 'Linux' }}" + run: | + sudo apt-get update + sudo apt-get install -y ${{ inputs.apt-packages }} - uses: julia-actions/julia-buildpkg@v1 with: project: ${{ matrix.project }} diff --git a/README.md b/README.md index 3ddc43d..5d8818b 100644 --- a/README.md +++ b/README.md @@ -230,6 +230,8 @@ to catch under-specified `[compat]` lower bounds. | `projects` | string | `"."` | Comma-separated project dirs to downgrade. | | `project` | string | `"@."` | `--project` for build/test (a workspace submodule or `lib/X`); default tests the repo root. | | `self-hosted` / `os` | | `false` / `ubuntu-latest` | Runner selection. | +| `apt-packages` | string | `""` | Space-separated apt packages to install before building/testing (Linux only). | +| `container` | string | `""` | Docker container image to run the job in (e.g. `cmhyett/julia-fenics:latest` for Python-stack packages). Empty = no container. | ```yaml jobs: @@ -674,6 +676,8 @@ Downgrade-compat tests for each `lib/*` sublibrary. | `exclude` | string | `""` | Space-separated sublibrary names to exclude from auto-discovery. | | `group-env-name` | string | `""` | Optional group env var name (e.g. `ODEDIFFEQ_TEST_GROUP`). | | `group-env-value` | string | `""` | Value for `group-env-name`. | +| `apt-packages` | string | `""` | Space-separated apt packages to install before building/testing (Linux only). | +| `container` | string | `""` | Docker container image to run the job in (e.g. `cmhyett/julia-fenics:latest` for Python-stack packages). Empty = no container. | ```yaml jobs: