Skip to content

Commit 7947fa0

Browse files
committed
Update release workflow to improve Boost and FFTW installation reliability and consistency
1 parent ec66510 commit 7947fa0

1 file changed

Lines changed: 48 additions & 12 deletions

File tree

.github/workflows/release.yml

Lines changed: 48 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,13 @@ jobs:
6565
make install
6666
popd
6767
68-
# Boost headers (header-only; no build needed)
69-
BOOST_V=1_84_0
70-
curl -fsSL -o boost.tar.bz2 https://boostorg.jfrog.io/artifactory/main/release/1.84.0/source/boost_${BOOST_V}.tar.bz2
71-
tar -xjf boost.tar.bz2
68+
# Boost headers (header-only; no build needed). Use archives.boost.io and .tar.gz for reliability
69+
BOOST_U=1_84_0
70+
BOOST_D=1.84.0
71+
curl -fsSL -o boost.tar.gz https://archives.boost.io/release/${BOOST_D}/source/boost_${BOOST_U}.tar.gz
72+
tar -xzf boost.tar.gz
7273
mkdir -p /opt/boost/include
73-
cp -r boost_${BOOST_V}/boost /opt/boost/include/
74+
cp -r boost_${BOOST_U}/boost /opt/boost/include/
7475
7576
# Help CMake find FFTW via pkg-config and Boost headers via define
7677
CIBW_ENVIRONMENT_LINUX: >
@@ -123,13 +124,47 @@ jobs:
123124
uses: pypa/cibuildwheel@v2.21.3
124125
env:
125126
CIBW_BUILD: cp310-* cp311-* cp312-*
126-
CIBW_SKIP: pp*
127-
# Let cibuildwheel build for the host arch on each runner
128-
CIBW_ARCHS_MACOS: native
129-
# Ensure pkg-config sees Homebrew's .pc files across both arch locations
130-
CIBW_ENVIRONMENT_MACOS: >
131-
PKG_CONFIG_PATH=/opt/homebrew/lib/pkgconfig:/usr/local/lib/pkgconfig
132-
CMAKE_ARGS="-DHF_USE_OPENMP=ON -DHF_USE_FFTW_THREADS=ON"
127+
CIBW_SKIP: pp* *-musllinux_*
128+
CIBW_ARCHS_LINUX: x86_64 aarch64
129+
130+
# (optional) pin image for consistency
131+
CIBW_MANYLINUX_X86_64_IMAGE: manylinux_2_28
132+
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux_2_28
133+
134+
CIBW_BEFORE_ALL_LINUX: |
135+
set -eux
136+
137+
# Install pkg-config (pkgconf) on either dnf- or yum-based images
138+
if command -v dnf >/dev/null 2>&1; then
139+
dnf -y install pkgconf-pkg-config
140+
elif command -v yum >/dev/null 2>&1; then
141+
yum -y install pkgconfig || yum -y install pkgconf-pkg-config || true
142+
fi
143+
144+
FFTW_V=3.3.10
145+
curl -fsSL -o fftw.tar.gz http://www.fftw.org/fftw-${FFTW_V}.tar.gz
146+
tar -xzf fftw.tar.gz
147+
pushd fftw-${FFTW_V}
148+
./configure --prefix=/opt/fftw --enable-shared --enable-threads
149+
make -j"$(nproc)"
150+
make install
151+
popd
152+
153+
# Header-only Boost for Boost.Math
154+
BOOST_U=1_84_0
155+
BOOST_D=1.84.0
156+
curl -fsSL -o boost.tar.gz https://archives.boost.io/release/${BOOST_D}/source/boost_${BOOST_U}.tar.gz
157+
tar -xzf boost.tar.gz
158+
mkdir -p /opt/boost/include
159+
cp -r boost_${BOOST_U}/boost /opt/boost/include/
160+
161+
# Help CMake find FFTW and Boost; set both CMAKE_ARGS and SKBUILD_CMAKE_ARGS
162+
CIBW_ENVIRONMENT_LINUX: >
163+
PKG_CONFIG_PATH=/opt/fftw/lib/pkgconfig
164+
CMAKE_PREFIX_PATH=/opt/fftw
165+
CMAKE_ARGS="-DHF_USE_OPENMP=ON -DHF_USE_FFTW_THREADS=ON -DFFTW_ROOT=/opt/fftw -DBoost_INCLUDE_DIR=/opt/boost/include"
166+
SKBUILD_CMAKE_ARGS="-DHF_USE_OPENMP=ON -DHF_USE_FFTW_THREADS=ON -DFFTW_ROOT=/opt/fftw -DBoost_INCLUDE_DIR=/opt/boost/include"
167+
133168
CIBW_TEST_COMMAND: >
134169
python - <<'PY'
135170
import numpy as np, cpp_hf
@@ -144,6 +179,7 @@ jobs:
144179
print("wheel ok", int(n), float(mu))
145180
PY
146181
182+
147183
- name: Upload macOS wheels
148184
uses: actions/upload-artifact@v4
149185
with:

0 commit comments

Comments
 (0)