Skip to content

Commit 17ffe9b

Browse files
authored
Updates to wheel dependencies: (#214)
- Add Eigen3, GLOG, and Ceres-Solver to wheel builds - Update manylinux wheel container to 2_28 - Update cibuildwheel version to last 2.x version
1 parent fd45371 commit 17ffe9b

5 files changed

Lines changed: 206 additions & 12 deletions

File tree

.github/workflows/wheels.yml

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ jobs:
9494
# deploy: 14.0
9595
env:
9696
CIBW_BUILD: cp${{ matrix.python }}-${{ matrix.builder }}_${{ matrix.arch }}
97-
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.builder }}2014
98-
CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.builder }}2014
97+
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.builder }}_2_28
98+
CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.builder }}_2_28
9999
CIBW_BUILD_VERBOSITY: 3
100100
CIBW_ENVIRONMENT_LINUX: >
101101
CC=gcc
@@ -121,8 +121,9 @@ jobs:
121121
./wheels/install_deps_osx.sh
122122
CIBW_REPAIR_WHEEL_COMMAND_LINUX: ./wheels/repair_wheel_linux.sh {dest_dir} {wheel}
123123
CIBW_REPAIR_WHEEL_COMMAND_MACOS: ./wheels/repair_wheel_macos.sh {dest_dir} {wheel} {delocate_archs}
124-
CIBW_BEFORE_TEST: export OMP_NUM_THREADS=2
125-
CIBW_TEST_REQUIRES: pytest pixell
124+
CIBW_BEFORE_TEST: >
125+
python -m pip install -r test-requirements.txt &&
126+
export OMP_NUM_THREADS=2
126127
CIBW_TEST_COMMAND: >
127128
python -c 'import so3g.smurf.reader; from spt3g import core' &&
128129
python -m pytest {package}/test
@@ -137,7 +138,7 @@ jobs:
137138

138139
- name: Install cibuildwheel
139140
run: |
140-
python -m pip install cibuildwheel==2.22.0
141+
python -m pip install cibuildwheel==2.23.3
141142
142143
- name: Build wheel
143144
run: |

test-requirements.txt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
# testing
21
pytest
32
pytest-cov
4-
# Required for full pointing support and testing
53
pixell

wheels/install_deps_linux.sh

Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ python3 -m pip install -v cmake wheel setuptools
4343
pyver=$(python3 --version 2>&1 | awk '{print $2}' | sed -e "s#\(.*\)\.\(.*\)\..*#\1.\2#")
4444

4545
# Install build requirements.
46-
CC="${CC}" CFLAGS="${CFLAGS}" python3 -m pip install -v -r "${scriptdir}/../requirements.txt"
46+
CC="${CC}" CFLAGS="${CFLAGS}" python3 -m pip install -v -r "${scriptdir}/../requirements.txt" --prefer-binary
4747

4848
# Install Openblas
4949

@@ -159,6 +159,104 @@ tar xzf ${gsl_pkg} \
159159
&& CC="${CC}" CFLAGS="-O3 -fPIC" ../configure --prefix="${PREFIX}" \
160160
&& make -j ${MAKEJ} \
161161
&& make install \
162+
&& popd >/dev/null 2>&1 \
163+
&& popd >/dev/null 2>&1
164+
165+
# Build Eigen
166+
167+
eigen_version=3.4.0
168+
eigen_dir=eigen-${eigen_version}
169+
eigen_pkg=${eigen_dir}.tar.gz
170+
171+
echo "Fetching Eigen..."
172+
173+
if [ ! -e ${eigen_pkg} ]; then
174+
curl -SL "https://gitlab.com/libeigen/eigen/-/archive/${eigen_version}/eigen-${eigen_version}.tar.bz2" -o "${eigen_pkg}"
175+
fi
176+
177+
echo "Building Eigen..."
178+
179+
rm -rf ${eigen_dir}
180+
tar xjf ${eigen_pkg} \
181+
&& pushd ${eigen_dir} >/dev/null 2>&1 \
182+
&& mkdir -p build \
183+
&& pushd build >/dev/null 2>&1 \
184+
&& cmake \
185+
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
186+
.. \
187+
&& make install \
188+
&& popd >/dev/null 2>&1 \
189+
&& popd >/dev/null 2>&1
190+
191+
# Build GLOG
192+
193+
glog_version=0.7.1
194+
glog_dir=glog-${glog_version}
195+
glog_pkg=${glog_dir}.tar.gz
196+
197+
echo "Fetching GLOG..."
198+
199+
if [ ! -e ${glog_pkg} ]; then
200+
curl -SL "https://github.com/google/glog/archive/refs/tags/v${glog_version}.tar.gz" -o "${glog_pkg}"
201+
fi
202+
203+
echo "Building GLOG..."
204+
205+
rm -rf ${glog_dir}
206+
tar xzf ${glog_pkg} \
207+
&& pushd ${glog_dir} >/dev/null 2>&1 \
208+
&& mkdir -p build \
209+
&& pushd build >/dev/null 2>&1 \
210+
&& cmake \
211+
-DCMAKE_BUILD_TYPE=Release \
212+
-DCMAKE_C_COMPILER="${CC}" \
213+
-DCMAKE_C_FLAGS="${CFLAGS}" \
214+
-DCMAKE_CXX_COMPILER="${CXX}" \
215+
-DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
216+
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
217+
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
218+
.. \
219+
&& make -j ${MAKEJ} install \
220+
&& popd >/dev/null 2>&1 \
221+
&& popd >/dev/null 2>&1
222+
223+
# Build Ceres
224+
225+
ceres_version=2.2.0
226+
ceres_dir=ceres-solver-${ceres_version}
227+
ceres_pkg=${ceres_dir}.tar.gz
228+
229+
echo "Fetching ceres-solver..."
230+
231+
if [ ! -e ${ceres_pkg} ]; then
232+
curl -SL "http://ceres-solver.org/ceres-solver-${ceres_version}.tar.gz" -o "${ceres_pkg}"
233+
fi
234+
235+
echo "Building ceres-solver..."
236+
237+
rm -rf ${ceres_dir}
238+
tar xzf ${ceres_pkg} \
239+
&& pushd ${ceres_dir} >/dev/null 2>&1 \
240+
&& mkdir -p build_dir \
241+
&& pushd build_dir >/dev/null 2>&1 \
242+
&& cmake \
243+
-DCMAKE_BUILD_TYPE=Release \
244+
-DCMAKE_C_COMPILER="${CC}" \
245+
-DCMAKE_C_FLAGS="${CFLAGS}" \
246+
-DCMAKE_CXX_COMPILER="${CXX}" \
247+
-DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
248+
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
249+
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
250+
-DBUILD_EXAMPLES=OFF \
251+
-DBUILD_BENCHMARKS=OFF \
252+
-DBUILD_SHARED_LIBS=ON \
253+
-DBUILD_TESTING=OFF \
254+
-DGFLAGS=OFF \
255+
-DSUITESPARSE=OFF \
256+
-DBLAS_LIBRARIES='-L/usr/local/lib -lopenblas -fopenmp -lm -lgfortran' \
257+
.. \
258+
&& make -j ${MAKEJ} install \
259+
&& popd >/dev/null 2>&1 \
162260
&& popd >/dev/null 2>&1
163261

164262
# Astropy caching...

wheels/install_deps_osx.sh

Lines changed: 99 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ python3 -m pip install cmake wheel setuptools
6565
pyver=$(python3 --version 2>&1 | awk '{print $2}' | sed -e "s#\(.*\)\.\(.*\)\..*#\1.\2#")
6666

6767
# Install build requirements.
68-
CC="${CC}" CFLAGS="${CFLAGS}" python3 -m pip install -v -r "${scriptdir}/../requirements.txt" scipy_openblas32
68+
CC="${CC}" CFLAGS="${CFLAGS}" python3 -m pip install -v -r "${scriptdir}/../requirements.txt" --prefer-binary
6969

7070
# Install Openblas
7171

@@ -157,6 +157,7 @@ tar xzf ${gsl_pkg} \
157157
&& CC="${CC}" CFLAGS="-O3 -fPIC" ../configure --prefix="${PREFIX}" \
158158
&& make -j ${MAKEJ} \
159159
&& make install \
160+
&& popd >/dev/null 2>&1 \
160161
&& popd >/dev/null 2>&1
161162

162163
# Install boost
@@ -199,6 +200,103 @@ tar xjf ${boost_pkg} \
199200
variant=release threading=multi link=shared runtime-link=shared install \
200201
&& popd >/dev/null 2>&1
201202

203+
# Build Eigen
204+
205+
eigen_version=3.4.0
206+
eigen_dir=eigen-${eigen_version}
207+
eigen_pkg=${eigen_dir}.tar.gz
208+
209+
echo "Fetching Eigen..."
210+
211+
if [ ! -e ${eigen_pkg} ]; then
212+
curl -SL "https://gitlab.com/libeigen/eigen/-/archive/${eigen_version}/eigen-${eigen_version}.tar.bz2" -o "${eigen_pkg}"
213+
fi
214+
215+
echo "Building Eigen..."
216+
217+
rm -rf ${eigen_dir}
218+
tar xjf ${eigen_pkg} \
219+
&& pushd ${eigen_dir} >/dev/null 2>&1 \
220+
&& mkdir -p build \
221+
&& pushd build >/dev/null 2>&1 \
222+
&& cmake \
223+
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
224+
.. \
225+
&& make install \
226+
&& popd >/dev/null 2>&1 \
227+
&& popd >/dev/null 2>&1
228+
229+
# Build GLOG
230+
231+
glog_version=0.7.1
232+
glog_dir=glog-${glog_version}
233+
glog_pkg=${glog_dir}.tar.gz
234+
235+
echo "Fetching GLOG..."
236+
237+
if [ ! -e ${glog_pkg} ]; then
238+
curl -SL "https://github.com/google/glog/archive/refs/tags/v${glog_version}.tar.gz" -o "${glog_pkg}"
239+
fi
240+
241+
echo "Building GLOG..."
242+
243+
rm -rf ${glog_dir}
244+
tar xzf ${glog_pkg} \
245+
&& pushd ${glog_dir} >/dev/null 2>&1 \
246+
&& mkdir -p build \
247+
&& pushd build >/dev/null 2>&1 \
248+
&& cmake \
249+
-DCMAKE_BUILD_TYPE=Release \
250+
-DCMAKE_C_COMPILER="${CC}" \
251+
-DCMAKE_C_FLAGS="${CFLAGS}" \
252+
-DCMAKE_CXX_COMPILER="${CXX}" \
253+
-DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
254+
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
255+
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
256+
.. \
257+
&& make -j ${MAKEJ} install \
258+
&& popd >/dev/null 2>&1 \
259+
&& popd >/dev/null 2>&1
260+
261+
# Build Ceres
262+
263+
ceres_version=2.2.0
264+
ceres_dir=ceres-solver-${ceres_version}
265+
ceres_pkg=${ceres_dir}.tar.gz
266+
267+
echo "Fetching ceres-solver..."
268+
269+
if [ ! -e ${ceres_pkg} ]; then
270+
curl -SL "http://ceres-solver.org/ceres-solver-${ceres_version}.tar.gz" -o "${ceres_pkg}"
271+
fi
272+
273+
echo "Building ceres-solver..."
274+
275+
rm -rf ${ceres_dir}
276+
tar xzf ${ceres_pkg} \
277+
&& pushd ${ceres_dir} >/dev/null 2>&1 \
278+
&& mkdir -p build_dir \
279+
&& pushd build_dir >/dev/null 2>&1 \
280+
&& cmake \
281+
-DCMAKE_BUILD_TYPE=Release \
282+
-DCMAKE_C_COMPILER="${CC}" \
283+
-DCMAKE_C_FLAGS="${CFLAGS}" \
284+
-DCMAKE_CXX_COMPILER="${CXX}" \
285+
-DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
286+
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
287+
-DCMAKE_INSTALL_PREFIX="${PREFIX}" \
288+
-DBUILD_EXAMPLES=OFF \
289+
-DBUILD_BENCHMARKS=OFF \
290+
-DBUILD_SHARED_LIBS=ON \
291+
-DBUILD_TESTING=OFF \
292+
-DGFLAGS=OFF \
293+
-DSUITESPARSE=OFF \
294+
-DBLAS_LIBRARIES='/usr/local/lib/libopenblas.dylib' \
295+
.. \
296+
&& make -j ${MAKEJ} install \
297+
&& popd >/dev/null 2>&1 \
298+
&& popd >/dev/null 2>&1
299+
202300
# Astropy caching...
203301

204302
echo "Attempting to trigger astropy IERS download..."

wheels/test_local_cibuildwheel.sh

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,12 @@
66
export CIBW_DEBUG_KEEP_CONTAINER=TRUE
77

88
export CIBW_BUILD="cp312-manylinux_x86_64"
9-
export CIBW_MANYLINUX_X86_64_IMAGE="manylinux2014"
9+
export CIBW_MANYLINUX_X86_64_IMAGE="manylinux_2_28"
1010
export CIBW_BUILD_VERBOSITY=3
1111
export CIBW_ENVIRONMENT_LINUX="CC=gcc CXX=g++ CFLAGS='-O3 -fPIC' CXXFLAGS='-O3 -fPIC -std=c++14'"
1212
export CIBW_BEFORE_BUILD_LINUX="./wheels/install_deps_linux.sh"
1313
export CIBW_REPAIR_WHEEL_COMMAND_LINUX="./wheels/repair_wheel_linux.sh {dest_dir} {wheel}"
14-
export CIBW_BEFORE_TEST="export OMP_NUM_THREADS=2"
15-
export CIBW_TEST_REQUIRES="pytest"
14+
export CIBW_BEFORE_TEST="python -m pip install -r test-requirements.txt && export OMP_NUM_THREADS=2"
1615
export CIBW_TEST_COMMAND="python -c 'import so3g.smurf.reader; from spt3g import core' && python -m pytest {package}/test"
1716

1817
# Get the current date for logging

0 commit comments

Comments
 (0)