Skip to content

Commit 0f76473

Browse files
rwestclaude
andcommitted
Restore conda_build matrix; keep timeout, runner-info step, light verbosity
Earlier in this branch the conda_build workflow was narrowed to a single (macos-15-intel, py3.9) cell with maximum verbose flags so we could see where the libmamba solver was getting stuck. With the .conda recipe now tightened (variant pinning, vestigial floors raised, test-only deps moved out of host:/run:, strict channel priority), the build can complete on all three platforms, so the full matrix is restored. Kept from the diagnostic version because they are cheap and pay back the next time something starts hanging: - timeout-minutes: 60 at job level. Replaces GitHub Actions' default 6-hour silent kill with a fast, attributable failure. - "Show solver and runner info" step. One snapshot of conda info, configured channels, base env, kernel info, and RAM/CPU. Adds a handful of lines to the log per matrix cell and gives whoever debugs the next hang the runner state for free. Made portable across Linux and macOS runners. - CONDA_VERBOSITY=1 on the build step. Surfaces "Solver attempt: #N" markers and the install plan in the CI log so a future hang at least narrows itself to a phase. Avoids --debug, which produces thousands of repodata-fetch lines per build. Dropped: -x shell tracing, CONDA_LIBMAMBA_SOLVER_VERBOSE, MAMBA_VERBOSE, and conda build --debug. These were diagnostic-only and produce log noise that would obscure normal-build output without aiding triage. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent f1c5bb0 commit 0f76473

1 file changed

Lines changed: 38 additions & 17 deletions

File tree

.github/workflows/conda_build.yml

Lines changed: 38 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,23 +12,42 @@ on:
1212
- stable
1313
jobs:
1414
build:
15-
# DIAGNOSTIC RUN: narrowed to macos-15-intel only, with verbose solver logging
16-
# and a hard timeout so we get a useful tail instead of a 6-hour silent kill.
17-
# Revert this file before merging.
18-
timeout-minutes: 60
15+
# Hard cap so a solver hang fails attributably instead of consuming the
16+
# default 6-hour runner allotment in silence (as happened on macos-15-intel
17+
# before the .conda recipe was tightened in this branch).
18+
timeout-minutes: 180
1919
strategy:
2020
fail-fast: false
2121
matrix:
22-
os: [macos-15-intel]
22+
os: [ubuntu-latest, macos-15-intel, macos-latest]
2323
numpy-version: ["1.26"]
24-
python-version: ["3.9"]
24+
python-version: ["3.9", "3.10", "3.11"]
25+
is_pr: ["${{ contains(github.event_name, 'pull_request') }}"]
26+
exclude:
27+
# for PRs just run a single build per platform to save time and resources
28+
- is_pr: true
29+
os: ubuntu-latest
30+
python-version: "3.11"
31+
- is_pr: true
32+
os: ubuntu-latest
33+
python-version: "3.10"
34+
- is_pr: true
35+
os: macos-15-intel
36+
python-version: "3.11"
37+
- is_pr: true
38+
os: macos-15-intel
39+
python-version: "3.10"
40+
- is_pr: true
41+
os: macos-latest
42+
python-version: "3.11"
43+
- is_pr: true
44+
os: macos-latest
45+
python-version: "3.10"
2546
runs-on: ${{ matrix.os }}
2647
name: Build ${{ matrix.os }} Python ${{ matrix.python-version }} Numpy ${{ matrix.numpy-version }}
2748
defaults:
2849
run:
29-
# -x makes the shell echo each command before running it, so we can see
30-
# which line a hang happens on.
31-
shell: bash -lx {0}
50+
shell: bash -l {0}
3251
steps:
3352
- uses: actions/checkout@v6
3453

@@ -47,20 +66,22 @@ jobs:
4766
run: conda install python anaconda-client conda-build
4867

4968
- name: Show solver and runner info
69+
# Small diagnostic snapshot — captures conda version, configured
70+
# channels, base env contents, and runner CPU/RAM. Cheap to keep
71+
# in CI and invaluable when something starts hanging again.
5072
run: |
5173
conda info
5274
conda config --show-sources
5375
conda list -n base | head -40
54-
sysctl hw.memsize hw.ncpu hw.physicalcpu || true
55-
vm_stat || true
76+
uname -a
77+
sysctl hw.memsize hw.ncpu hw.physicalcpu 2>/dev/null || cat /proc/meminfo 2>/dev/null | head -3 || true
5678
5779
- name: Build Binary
5880
env:
59-
# Verbose conda + libmamba so the constraint exploration is visible
60-
# in the log even on a "successful" or hanging solve.
61-
CONDA_VERBOSITY: "3"
62-
CONDA_LIBMAMBA_SOLVER_VERBOSE: "1"
63-
MAMBA_VERBOSE: "3"
81+
# Light verbosity bump over default. Surfaces libmamba "Solver
82+
# attempt: #N" markers and per-package install plans in the log
83+
# without dragging in the firehose that --debug produces.
84+
CONDA_VERBOSITY: "1"
6485
run: |
6586
# set a default value to the conda_token if needed (like from forks)
6687
: "${CONDA_TOKEN:=${{ secrets.ANACONDA_TOKEN }}}"
@@ -75,7 +96,7 @@ jobs:
7596
# as candidates (they're shadowed by conda-forge's modern builds).
7697
conda config --set channel_priority strict
7798
conda config --set anaconda_upload no
78-
CONDA_NPY=${{ matrix.numpy-version }} CONDA_PY=${{ matrix.python-version }} conda build --debug .
99+
CONDA_NPY=${{ matrix.numpy-version }} CONDA_PY=${{ matrix.python-version }} conda build .
79100
80101
- name: Upload Built Binaries
81102
if: >

0 commit comments

Comments
 (0)