Skip to content

Commit

Permalink
Wheels: Musllinux (Alpine) Support
Browse files Browse the repository at this point in the history
Update our `library_builders.sh` to support dependency builds on the
new PEP 656 `musllinux` standard.
  • Loading branch information
ax3l committed Jan 4, 2022
1 parent a13824a commit 7751b70
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 21 deletions.
7 changes: 3 additions & 4 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ jobs:
- name: Install cibuildwheel
run: |
python -m pip install --upgrade pip setuptools wheel
python -m pip install cibuildwheel==2.0.1
python -m pip install cibuildwheel==2.2.2
# - name: Download Patch 1/1
# uses: suisei-cn/actions-download-file@v1
Expand All @@ -93,9 +93,8 @@ jobs:
# typename T = lib::type_pack_element_t<I, Ts...>,
# (3) Disable PyPy (manylinux image: yum repo issues)
# https://github.com/pypa/manylinux/issues/899
# (4) musllinux: requires alternative to "yum" in library_builders.sh
# (5) CPython 3.10: requires 0.14.4+ (https://github.com/openPMD/openPMD-api/pull/1139)
CIBW_SKIP: "*-win32 *-manylinux_i686 pp*-manylinux* *-musllinux_* cp310-*"
# (4) CPython 3.10: requires 0.14.4+ (https://github.com/openPMD/openPMD-api/pull/1139)
CIBW_SKIP: "*-win32 *-manylinux_i686 pp*-manylinux* cp310-*"
CIBW_ARCHS: "${{ matrix.arch }}"
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.6"
# Install dependencies
Expand Down
37 changes: 37 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,18 @@ jobs:
env:
- CIBW_BUILD="*_aarch64"
- CIBW_SKIP="cp38-* cp39-* cp36-* cp37-* cp310-* *-musllinux_*"
- services: docker
arch: arm64
dist: focal
env:
- CIBW_BUILD="*-musllinux_aarch64"
- CIBW_SKIP="cp38-* cp39-* cp310-*"
- services: docker
arch: arm64
dist: focal
env:
- CIBW_BUILD="*-musllinux_aarch64"
- CIBW_SKIP="cp36-* cp37-* cp310-*"

# perform a linux PPC64LE build
- services: docker
Expand Down Expand Up @@ -66,6 +78,31 @@ jobs:
# dist: focal
# env:
# - CIBW_BUILD="cp310-manylinux_ppc64le"
- services: docker
arch: ppc64le
dist: focal
env:
- CIBW_BUILD="cp36-musllinux_ppc64le"
- services: docker
arch: ppc64le
dist: focal
env:
- CIBW_BUILD="cp37-musllinux_ppc64le"
- services: docker
arch: ppc64le
dist: focal
env:
- CIBW_BUILD="cp38-musllinux_ppc64le"
- services: docker
arch: ppc64le
dist: focal
env:
- CIBW_BUILD="cp39-musllinux_ppc64le"
# - services: docker
# arch: ppc64le
# dist: focal
# env:
# - CIBW_BUILD="cp310-musllinux_ppc64le"

# perform a linux S390X build
# blocked by https://github.com/GTkorvo/dill/issues/15
Expand Down
44 changes: 27 additions & 17 deletions library_builders.sh
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,15 @@ function install_buildessentials {
rm -rf /usr/local/Cellar/hdf5
fi

# static libc, tar tool
if [ "$(uname -s)" = "Linux" ]
# musllinux: Alpine Linux
# pip, tar tool, cmath
APK_FOUND=$(which apk >/dev/null && { echo 0; } || { echo 1; })
if [ $APK_FOUND -eq 0 ]; then
apk add py3-pip tar

# manylinux: RHEL/Centos based
# static libc, tar tool, CMake dependencies
elif [ "$(uname -s)" = "Linux" ]
then
yum check-update -y || true
yum -y install \
Expand All @@ -43,20 +50,17 @@ function install_buildessentials {
cd ..
rm cmake-*.tar.gz
fi
fi

# avoid picking up a static libpthread in adios1 or blosc
# (also: those libs lack -fPIC)
if [ "$(uname -s)" = "Linux" ]
then
# manylinux: avoid picking up a static libpthread in adios1 or blosc
# (also: those libs lack -fPIC)
rm -f /usr/lib/libpthread.a /usr/lib/libm.a /usr/lib/librt.a
rm -f /usr/lib64/libpthread.a /usr/lib64/libm.a /usr/lib64/librt.a
fi

python -m pip install -U pip setuptools wheel
python -m pip install -U scikit-build
python -m pip install -U cmake
python -m pip install -U "patch==1.*"
python3 -m pip install -U pip setuptools wheel
python3 -m pip install -U scikit-build
python3 -m pip install -U cmake
python3 -m pip install -U "patch==1.*"

touch buildessentials-stamp
}
Expand Down Expand Up @@ -90,11 +94,11 @@ function build_adios2 {
# Patch PThread Propagation
curl -sLo adios-pthread.patch \
https://patch-diff.githubusercontent.com/raw/ornladios/ADIOS2/pull/2768.patch
python -m patch -p 1 -d ADIOS2-2.7.1 adios-pthread.patch
python3 -m patch -p 1 -d ADIOS2-2.7.1 adios-pthread.patch

mkdir build-ADIOS2
cd build-ADIOS2
PY_BIN=$(which python)
PY_BIN=$(which python3)
CMAKE_BIN="$(${PY_BIN} -m pip show cmake 2>/dev/null | grep Location | cut -d' ' -f2)/cmake/data/bin/"
if [ "$(uname -s)" = "Linux" ]
then
Expand Down Expand Up @@ -141,11 +145,11 @@ function build_blosc {
# Patch PThread Propagation
curl -sLo blosc-pthread.patch \
https://patch-diff.githubusercontent.com/raw/Blosc/c-blosc/pull/318.patch
python -m patch -p 1 -d c-blosc-1.21.0 blosc-pthread.patch
python3 -m patch -p 1 -d c-blosc-1.21.0 blosc-pthread.patch

mkdir build-c-blosc
cd build-c-blosc
PY_BIN=$(which python)
PY_BIN=$(which python3)
CMAKE_BIN="$(${PY_BIN} -m pip show cmake 2>/dev/null | grep Location | cut -d' ' -f2)/cmake/data/bin/"
PATH=${CMAKE_BIN}:${PATH} cmake \
-DDEACTIVATE_SNAPPY=ON \
Expand All @@ -170,11 +174,17 @@ function build_zfp {
file zfp*.tar.gz
tar -xzf zfp*.tar.gz
rm zfp*.tar.gz

mkdir build-zfp
cd build-zfp
PY_BIN=$(which python)
PY_BIN=$(which python3)
CMAKE_BIN="$(${PY_BIN} -m pip show cmake 2>/dev/null | grep Location | cut -d' ' -f2)/cmake/data/bin/"
PATH=${CMAKE_BIN}:${PATH} cmake -DBUILD_SHARED_LIBS=OFF -DZFP_WITH_OPENMP=OFF -DBUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX=${BUILD_PREFIX} ../zfp-*
PATH=${CMAKE_BIN}:${PATH} cmake \
-DBUILD_SHARED_LIBS=OFF \
-DZFP_WITH_OPENMP=OFF \
-DBUILD_TESTING=OFF \
-DCMAKE_INSTALL_PREFIX=${BUILD_PREFIX} \
../zfp-*
make -j${CPU_COUNT}
make install
cd -
Expand Down

0 comments on commit 7751b70

Please sign in to comment.