Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-wavpack-binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: ["ubuntu-20.04", "ubuntu-22.04", "ubuntu-24.04"]
os: ["ubuntu-22.04", "ubuntu-24.04"]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
Expand Down
85 changes: 85 additions & 0 deletions .github/workflows/build-wavpack.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
name: Build WavPack Libraries

on:
workflow_dispatch:

jobs:
build:
name: Build WavPack for glibc ${{ matrix.glibc_version }}
runs-on: ubuntu-latest
strategy:
matrix:
glibc_version: ['2.31', '2.32', '2.33', '2.34', '2.35', '2.36', '2.37', 2.38', '2.39', '2.40', '2.41']
wavpack_version: ['5.7.0', '5.8.0']

steps:
- uses: actions/checkout@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Create Dockerfile for glibc build
run: |
cat > Dockerfile.build << 'EOF'
ARG GLIBC_VERSION
FROM ubuntu:22.04 as glibc-builder

ARG GLIBC_VERSION
ENV GLIBC_VERSION=${GLIBC_VERSION}

# Install build dependencies
RUN apt-get update && apt-get install -y \
build-essential \
wget \
bzip2 \
automake \
libtool \
gcc-multilib \
&& rm -rf /var/lib/apt/lists/*

# Download and build glibc
RUN wget https://ftp.gnu.org/gnu/glibc/glibc-${GLIBC_VERSION}.tar.bz2 \
&& tar xjf glibc-${GLIBC_VERSION}.tar.bz2 \
&& mkdir glibc-build \
&& cd glibc-build \
&& ../glibc-${GLIBC_VERSION}/configure --prefix=/usr \
&& make -j$(nproc) \
&& make install

# Now build WavPack
ARG WAVPACK_VERSION
RUN wget https://github.com/dbry/WavPack/releases/download/${WAVPACK_VERSION}/wavpack-${WAVPACK_VERSION}.tar.bz2 \
&& tar xjf wavpack-${WAVPACK_VERSION}.tar.bz2 \
&& cd wavpack-${WAVPACK_VERSION} \
&& ./configure --enable-shared --prefix=/usr/local \
&& make \
&& make install

# Create output directory
RUN mkdir -p /output/linux-x86_64-glibc${GLIBC_VERSION} \
&& cp /usr/local/lib/libwavpack.so* /output/linux-x86_64-glibc${GLIBC_VERSION}/ \
&& cp /usr/local/lib/libwavpack.so /output/linux-x86_64-glibc${GLIBC_VERSION}/libwavpack.so.1
EOF

- name: Build Docker image and extract libraries
run: |
docker build \
--build-arg GLIBC_VERSION=${{ matrix.glibc_version }} \
--build-arg WAVPACK_VERSION=${{ matrix.wavpack_version }} \
-f Dockerfile.build \
-t wavpack-builder .

mkdir -p src/wavpack_numcodecs/libraries/${{ matrix.wavpack_version }}
docker create --name wavpack-container wavpack-builder
docker cp wavpack-container:/output/. src/wavpack_numcodecs/libraries/${{ matrix.wavpack_version }}/
docker rm wavpack-container

- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: wavpack-libs-glibc${{ matrix.glibc_version }}
path: src/wavpack_numcodecs/libraries/${{ matrix.wavpack_version }}/linux-x86_64-glibc${{ matrix.glibc_version }}

- name: List built files
run: |
ls -la src/wavpack_numcodecs/libraries/${{ matrix.wavpack_version }}/linux-x86_64-glibc${{ matrix.glibc_version }}
2 changes: 1 addition & 1 deletion .github/workflows/python-package-binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:
strategy:
fail-fast: false
matrix:
os: ["ubuntu-22.04", "ubuntu-20.04", "ubuntu-24.04"]
os: ["ubuntu-22.04", "ubuntu-24.04"]
python-version: ["3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v4
Expand Down
4 changes: 2 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ dependencies = [
[project.optional-dependencies]
test = [
"pytest",
"zarr",
"zarr<3.0.0",
"Cython"
]

test_no_cython = [
"pytest",
"zarr"
"zarr<3.0.0"
]


Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def get_build_extensions():
glibc_version = platform.libc_ver()[1]
if glibc_version not in available_glibc_versions:
raise RuntimeError(
f"Could not find a matching glibc version for the shipped libraries. "
f"Could not find a matching the system's glibc version {glibc_version}. "
f"Available builds: {available_glibc_versions}"
)
distr_folder = f"linux-x86_64-glibc{glibc_version}"
Expand Down