Skip to content

Commit 8a483b8

Browse files
hjmjohnsonclaude
andcommitted
ENH: Add platform-specific package install inputs and OS selection
Add optional inputs to the CXX build workflow: - apt-packages: Install system packages on Linux (apt-get) - brew-packages: Install system packages on macOS (brew) - choco-packages: Install system packages on Windows (choco) - os-list: JSON array of runner OS labels to build on, allowing modules to disable platforms that cannot work (e.g., skip Windows when the dependency has no Windows package) Default os-list includes all platforms for backwards compatibility: ["ubuntu-22.04", "windows-2022", "macos-15-intel", "macos-15"] Usage to skip Windows: ```yaml cxx-build-workflow: uses: .../build-test-cxx.yml@v5.4.6 with: apt-packages: 'libopenslide-dev' brew-packages: 'openslide' os-list: '["ubuntu-22.04", "macos-15-intel", "macos-15"]' ``` Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 9669cfe commit 8a483b8

File tree

1 file changed

+34
-1
lines changed

1 file changed

+34
-1
lines changed

.github/workflows/build-test-cxx.yml

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,31 @@ on:
3030
# example: MeshToPolyData@3ad8f08:BSplineGradient@0.3.0
3131
required: false
3232
type: string
33+
apt-packages:
34+
description: 'Space-separated list of apt packages to install on Linux runners before building (e.g. libopenslide-dev libfftw3-dev)'
35+
required: false
36+
type: string
37+
brew-packages:
38+
description: 'Space-separated list of Homebrew packages to install on macOS runners before building (e.g. openslide libomp)'
39+
required: false
40+
type: string
41+
choco-packages:
42+
description: 'Space-separated list of Chocolatey packages to install on Windows runners before building'
43+
required: false
44+
type: string
45+
os-list:
46+
description: 'JSON-formatted array of runner OS labels to build on (default: all platforms)'
47+
required: false
48+
type: string
49+
default: '["ubuntu-22.04", "windows-2022", "macos-15-intel", "macos-15"]'
3350

3451
jobs:
3552
build-test-cxx:
3653
runs-on: ${{ matrix.os }}
3754
strategy:
3855
max-parallel: 3
3956
matrix:
40-
os: [ubuntu-22.04, windows-2022, macos-15-intel, macos-15]
57+
os: ${{ fromJSON(inputs.os-list) }}
4158
include:
4259
- os: ubuntu-22.04
4360
c-compiler: "gcc"
@@ -65,6 +82,22 @@ jobs:
6582
with:
6683
large-packages: false
6784

85+
- name: Install system packages (Linux)
86+
if: inputs.apt-packages != '' && runner.os == 'Linux'
87+
run: |
88+
sudo apt-get update -qq
89+
sudo apt-get install -y -qq ${{ inputs.apt-packages }}
90+
91+
- name: Install system packages (macOS)
92+
if: inputs.brew-packages != '' && runner.os == 'macOS'
93+
run: |
94+
brew install ${{ inputs.brew-packages }}
95+
96+
- name: Install system packages (Windows)
97+
if: inputs.choco-packages != '' && runner.os == 'Windows'
98+
run: |
99+
choco install -y ${{ inputs.choco-packages }}
100+
68101
- name: Set up Python 3.11
69102
uses: actions/setup-python@v5
70103
with:

0 commit comments

Comments
 (0)