Skip to content

Alpine Test musllinux-compatible #1112

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 47 commits into
base: 4.x
Choose a base branch
from
Open
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
5b68552
Update build_wheels_windows.yml
avdivan May 12, 2025
0ed6932
Update build_wheels_windows.yml
avdivan May 12, 2025
43df361
Update build_wheels_windows.yml
avdivan May 12, 2025
800c408
Update build_wheels_windows.yml
avdivan May 12, 2025
d509950
Update build_wheels_windows.yml
avdivan May 12, 2025
81b57ad
Update build_wheels_windows.yml
avdivan May 12, 2025
cf6f2a1
Update build_wheels_windows.yml
avdivan May 12, 2025
ce9020f
Update build_wheels_windows.yml
avdivan May 12, 2025
5da97ac
Update build_wheels_windows.yml
avdivan May 12, 2025
02ffc4a
Update build_wheels_windows.yml
avdivan May 12, 2025
62aa42c
Update build_wheels_windows.yml
avdivan May 12, 2025
3f50ff6
Update build_wheels_windows.yml
avdivan May 12, 2025
24e5192
Update build_wheels_windows.yml
avdivan May 12, 2025
af76f7a
Update setup.py
avdivan May 13, 2025
8e63c5b
Update setup.py
avdivan May 18, 2025
fb2ce32
Update build_wheels_windows.yml
avdivan May 18, 2025
34c8ef1
Update build_wheels_windows.yml
avdivan May 18, 2025
0d87cdf
Update build_wheels_windows.yml
avdivan May 18, 2025
a8d6375
Update build_wheels_windows.yml
avdivan Jun 9, 2025
d728c91
Update build_wheels_windows.yml
avdivan Jun 9, 2025
5601e19
Update setup.py
avdivan Jun 9, 2025
a397db1
Update build_wheels_windows.yml
avdivan Jun 9, 2025
4721363
Update setup.py
avdivan Jun 9, 2025
b14fc86
Update setup.py
avdivan Jun 9, 2025
eec14cc
Update build_wheels_windows.yml
avdivan Jun 9, 2025
c860bb9
Update setup.py
avdivan Jun 9, 2025
d324320
Update setup.py
avdivan Jun 9, 2025
60d8b85
Update setup.py
avdivan Jun 9, 2025
7dfe2c9
Update build_wheels_windows.yml
avdivan Jun 9, 2025
f8f3ed8
Update build_wheels_windows.yml
avdivan Jun 9, 2025
cebae27
Update setup.py
avdivan Jun 9, 2025
d0b029e
Update setup.py
avdivan Jun 9, 2025
93929b6
Update setup.py
avdivan Jun 9, 2025
aef0562
Update build_wheels_windows.yml
avdivan Jun 9, 2025
878d9f9
Update setup.py
avdivan Jun 9, 2025
da9d1b9
Update build_wheels_windows.yml
avdivan Jun 10, 2025
da2e6b8
Update setup.py
avdivan Jun 10, 2025
8a87290
Update setup.py
avdivan Jun 10, 2025
8b629da
Merge pull request #4 from opencv/4.x
avdivan Jun 19, 2025
560670d
Update build_wheels_macos_m1.yml
avdivan Jun 19, 2025
f85b854
Merge pull request #5 from opencv/4.x
avdivan Jun 20, 2025
10dd63c
Update build_wheels_macos_m1.yml
avdivan Jun 20, 2025
7b587e1
Update build_wheels_windows.yml
avdivan Jun 20, 2025
ea51e72
Update setup.py
avdivan Jun 20, 2025
3362718
Update build_wheels_macos_m1.yml
avdivan Jun 20, 2025
88f1c27
Create Dockerfile-alpine-musllinux-test
avdivan Jun 20, 2025
c17d164
Update Dockerfile-alpine-musllinux-test
avdivan Jun 20, 2025
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
158 changes: 158 additions & 0 deletions docker/musllinux/Dockerfile-alpine-musllinux-test
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
# Version: 20250619
# musllinux-compatible build environment for OpenCV Python wheels

FROM alpine:3.19

ARG CCACHE_VERSION=3.7.9
ARG FFMPEG_VERSION=5.1.6
ARG FREETYPE_VERSION=2.13.3
ARG LIBPNG_VERSION=1.6.48
ARG VPX_VERSION=v1.15.1
ARG NASM_VERSION=2.15.04
ARG OPENSSL_VERSION=1_1_1w
ARG YASM_VERSION=1.3.0
ARG AOM_VERSION=v3.12.1
ARG AVIF_VERSION=v1.3.0

ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

RUN apk add --no-cache \
build-base \
diffutils \
cmake \
bash \
git \
curl \
wget \
tar \
xz \
zlib-dev \
xz-dev \
nasm \
yasm \
pkgconfig \
openssl-dev \
libjpeg-turbo-dev \
fontconfig-dev \
freetype-dev \
expat-dev \
libpng-dev \
alsa-lib-dev \
musl-dev \
linux-headers \
perl

RUN apk del libpng-dev

### libpng
RUN mkdir ~/libpng_sources && \
cd ~/libpng_sources && \
curl -O -L https://download.sourceforge.net/libpng/libpng-${LIBPNG_VERSION}.tar.gz && \
tar -xf libpng-${LIBPNG_VERSION}.tar.gz && \
cd libpng-${LIBPNG_VERSION} && \
./configure --prefix=/usr/local && \
make && \
make install && \
cd .. && \
rm -rf ~/libpng_sources

### freetype
RUN mkdir ~/freetype_sources && \
cd ~/freetype_sources && \
curl -O -L https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \
tar -xf freetype-${FREETYPE_VERSION}.tar.gz && \
cd freetype-${FREETYPE_VERSION} && \
./configure --prefix="/ffmpeg_build" --enable-freetype-config && \
make && \
make install && \
cd .. && \
rm -rf ~/freetype_sources

### OpenSSL
RUN mkdir ~/openssl_sources && \
cd ~/openssl_sources && \
curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_${OPENSSL_VERSION}.tar.gz && \
tar -xf OpenSSL_${OPENSSL_VERSION}.tar.gz && \
cd openssl-OpenSSL_${OPENSSL_VERSION} && \
./config --prefix="/ffmpeg_build" --openssldir="/ffmpeg_build" no-pinshared shared zlib && \
make -j$(getconf _NPROCESSORS_ONLN) && \
# skip installing documentation
make install_sw && \
cd .. && \
rm -rf ~/openssl_build ~/openssl_sources


### NASM YASM exist in alpine

### libvpx
RUN mkdir ~/libvpx_sources && \
cd ~/libvpx_sources && \
git clone --depth 1 -b ${VPX_VERSION} https://chromium.googlesource.com/webm/libvpx.git && \
cd libvpx && \
./configure --prefix="/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-pic --enable-shared && \
make -j$(getconf _NPROCESSORS_ONLN) && \
make install && \
cd .. && \
rm -rf ~/libvpx_sources

### aom
RUN mkdir ~/aom_sources && \
cd ~/aom_sources && \
git clone --depth 1 -b ${AOM_VERSION} https://aomedia.googlesource.com/aom && \
mkdir build && cd build && \
cmake -DCMAKE_C_COMPILER=$(dirname $(which g++))/gcc -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_SHARED_LIBS=ON -DENABLE_TESTS=OFF ../aom/ && \
make -j$(getconf _NPROCESSORS_ONLN) && \
make install && \
cd / && rm -rf ~/aom_sources

### avif
RUN mkdir ~/avif_sources && \
cd ~/avif_sources && \
git clone -b ${AVIF_VERSION} https://github.com/AOMediaCodec/libavif.git && \
mkdir build && cd build && \
cmake -DCMAKE_INSTALL_PREFIX=/usr -DAVIF_CODEC_AOM=SYSTEM -DAVIF_LIBYUV=LOCAL -DAVIF_BUILD_APPS=OFF ../libavif && \
make -j$(getconf _NPROCESSORS_ONLN) && \
make install && \
cd / && rm -rf ~/avif_sources

### ffmpeg
RUN mkdir -p /ffmpeg_sources && \
cd /ffmpeg_sources && \
curl -LO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz && \
tar -xf ffmpeg-${FFMPEG_VERSION}.tar.gz && \
cd ffmpeg-${FFMPEG_VERSION} && \
PKG_CONFIG_PATH="/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="/ffmpeg_build" \
--extra-cflags="-I/ffmpeg_build/include" \
--extra-ldflags="-L/ffmpeg_build/lib" \
--enable-openssl \
--enable-libvpx \
--enable-shared \
--enable-pic && \
make -j$(getconf _NPROCESSORS_ONLN) && \
make install && \
rm -rf /ffmpeg_sources

### ccache
RUN curl -O -L https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}.tar.gz && \
tar -xf ccache-${CCACHE_VERSION}.tar.gz && \
cd ccache-${CCACHE_VERSION} && \
./configure && \
make -j$(getconf _NPROCESSORS_ONLN) && \
make install && \
cd .. && \
rm -rf ccache-${CCACHE_VERSION}.tar.gz

# user`s UID is 1001
RUN adduser -D -u 1001 ci && mkdir /io && chown ci:ci /io && \
# This needs to find ffmpeg packages from ci user
chown -R ci:ci /ffmpeg_build

USER ci

RUN git config --global --add safe.directory /io
ENV PATH="/ffmpeg_build/bin:$PATH"
ENV PKG_CONFIG_PATH /usr/local/lib/pkgconfig:/ffmpeg_build/lib/pkgconfig
ENV LDFLAGS -L/ffmpeg_build/lib
ENV PATH "$HOME/bin:$PATH"
ENV LD_LIBRARY_PATH="/ffmpeg_build/lib:$LD_LIBRARY_PATH"
Loading