🌐 AI搜索 & 代理 主页
Skip to content

Commit 2ff0bf8

Browse files
committed
Added Musllinux environment for ARM.
1 parent 47c1307 commit 2ff0bf8

File tree

2 files changed

+168
-1
lines changed

2 files changed

+168
-1
lines changed
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
# version: 20251211
2+
# Image name: quay.io/opencv-ci/opencv-python-musllinux_1_2-aarch64
3+
FROM quay.io/pypa/musllinux_1_2_aarch64:latest
4+
5+
ARG CCACHE_VERSION=3.7.9
6+
ARG FFMPEG_VERSION=6.1.1
7+
ARG FREETYPE_VERSION=2.13.3
8+
ARG LIBPNG_VERSION=1.6.48
9+
ARG VPX_VERSION=v1.15.1
10+
ARG NASM_VERSION=2.15.04
11+
ARG OPENSSL_VERSION=1_1_1w
12+
ARG YASM_VERSION=1.3.0
13+
ARG AOM_VERSION=v3.12.1
14+
ARG AVIF_VERSION=v1.3.0
15+
16+
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
17+
18+
RUN apk add --no-cache \
19+
build-base \
20+
diffutils \
21+
cmake \
22+
bash \
23+
git \
24+
curl \
25+
wget \
26+
tar \
27+
xz \
28+
zlib-dev \
29+
xz-dev \
30+
nasm \
31+
yasm \
32+
pkgconfig \
33+
openssl-dev \
34+
libjpeg-turbo-dev \
35+
fontconfig-dev \
36+
freetype-dev \
37+
expat-dev \
38+
libpng-dev \
39+
alsa-lib-dev \
40+
musl-dev \
41+
ttf-dejavu \
42+
linux-headers \
43+
perl
44+
45+
RUN apk del libpng-dev
46+
47+
### libpng
48+
RUN mkdir ~/libpng_sources && \
49+
cd ~/libpng_sources && \
50+
curl -O -L https://download.sourceforge.net/libpng/libpng-${LIBPNG_VERSION}.tar.gz && \
51+
tar -xf libpng-${LIBPNG_VERSION}.tar.gz && \
52+
cd libpng-${LIBPNG_VERSION} && \
53+
./configure --prefix=/usr/local && \
54+
make && \
55+
make install && \
56+
cd .. && \
57+
rm -rf ~/libpng_sources
58+
59+
### freetype
60+
RUN mkdir ~/freetype_sources && \
61+
cd ~/freetype_sources && \
62+
curl -O -L https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE_VERSION}.tar.gz && \
63+
tar -xf freetype-${FREETYPE_VERSION}.tar.gz && \
64+
cd freetype-${FREETYPE_VERSION} && \
65+
./configure --prefix="/ffmpeg_build" --enable-freetype-config && \
66+
make && \
67+
make install && \
68+
cd .. && \
69+
rm -rf ~/freetype_sources
70+
71+
### OpenSSL
72+
RUN mkdir ~/openssl_sources && \
73+
cd ~/openssl_sources && \
74+
curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_${OPENSSL_VERSION}.tar.gz && \
75+
tar -xf OpenSSL_${OPENSSL_VERSION}.tar.gz && \
76+
cd openssl-OpenSSL_${OPENSSL_VERSION} && \
77+
./config --prefix="/ffmpeg_build" --openssldir="/ffmpeg_build" no-pinshared shared zlib && \
78+
make -j$(getconf _NPROCESSORS_ONLN) && \
79+
make install_sw && \
80+
cd .. && \
81+
rm -rf ~/openssl_build ~/openssl_sources
82+
83+
### libvpx
84+
RUN mkdir ~/libvpx_sources && \
85+
cd ~/libvpx_sources && \
86+
git clone --depth 1 -b ${VPX_VERSION} https://chromium.googlesource.com/webm/libvpx.git && \
87+
cd libvpx && \
88+
./configure --prefix="/ffmpeg_build" --disable-examples --disable-unit-tests --enable-vp9-highbitdepth --as=yasm --enable-pic --enable-shared && \
89+
make -j$(getconf _NPROCESSORS_ONLN) && \
90+
make install && \
91+
cd .. && \
92+
rm -rf ~/libvpx_sources
93+
94+
95+
### aom
96+
RUN mkdir -p /tmp/aom_sources && \
97+
cd /tmp/aom_sources && \
98+
git clone --depth 1 -b ${AOM_VERSION} https://aomedia.googlesource.com/aom && \
99+
mkdir build && cd build && \
100+
cmake \
101+
-DCMAKE_C_COMPILER=$(dirname $(which g++))/gcc \
102+
-DCMAKE_INSTALL_PREFIX=/usr \
103+
-DBUILD_SHARED_LIBS=ON \
104+
-DENABLE_TESTS=OFF \
105+
-DENABLE_EXAMPLES=OFF \
106+
../aom && \
107+
make -j$(getconf _NPROCESSORS_ONLN) && \
108+
make install
109+
### avif
110+
RUN mkdir ~/avif_sources && \
111+
cd ~/avif_sources && \
112+
git clone -b ${AVIF_VERSION} https://github.com/AOMediaCodec/libavif.git && \
113+
mkdir build && cd build && \
114+
cmake -DCMAKE_INSTALL_PREFIX=/usr -DAVIF_CODEC_AOM=SYSTEM -DAVIF_LIBYUV=LOCAL -DAVIF_BUILD_APPS=OFF ../libavif && \
115+
make -j$(getconf _NPROCESSORS_ONLN) && \
116+
make install && \
117+
cd .. && \
118+
rm -rf ~/avif_sources
119+
120+
### ffmpeg
121+
RUN mkdir -p /ffmpeg_sources && \
122+
cd /ffmpeg_sources && \
123+
curl -LO https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz && \
124+
tar -xf ffmpeg-${FFMPEG_VERSION}.tar.gz && \
125+
cd ffmpeg-${FFMPEG_VERSION} && \
126+
PKG_CONFIG_PATH="/ffmpeg_build/lib/pkgconfig" ./configure \
127+
--prefix="/ffmpeg_build" \
128+
--extra-cflags="-I/ffmpeg_build/include" \
129+
--extra-ldflags="-L/ffmpeg_build/lib" \
130+
--enable-openssl \
131+
--enable-libvpx \
132+
--enable-shared \
133+
--enable-pic \
134+
--disable-indev=v4l2 \
135+
--disable-outdev=v4l2 && \
136+
make -j$(getconf _NPROCESSORS_ONLN) && \
137+
make install && \
138+
rm -rf /ffmpeg_sources
139+
140+
### ccache
141+
RUN curl -O -L https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}.tar.gz && \
142+
tar -xf ccache-${CCACHE_VERSION}.tar.gz && \
143+
cd ccache-${CCACHE_VERSION} && \
144+
./configure && \
145+
make -j$(getconf _NPROCESSORS_ONLN) && \
146+
make install && \
147+
cd .. && \
148+
rm -rf ccache-${CCACHE_VERSION}.tar.gz
149+
150+
# Self-hosted runner UID is 1004
151+
RUN useradd ci -m -s /bin/bash -G users --uid=1004 && \
152+
mkdir /io && \
153+
chown -R ci:ci /io && \
154+
# This needs to find ffmpeg packages from ci user
155+
chown -R ci:ci /ffmpeg_build && \
156+
# This calls in mutlibuild scripts and cannot be run without permissions
157+
chown -R ci:ci /opt/_internal/pipx/venvs/auditwheel
158+
159+
USER ci
160+
161+
RUN git config --global --add safe.directory /io
162+
ENV PATH="/ffmpeg_build/bin:$PATH"
163+
ENV PKG_CONFIG_PATH /usr/local/lib/pkgconfig:/ffmpeg_build/lib/pkgconfig
164+
ENV LDFLAGS -L/ffmpeg_build/lib
165+
ENV PATH "$HOME/bin:$PATH"
166+
ENV LD_LIBRARY_PATH="/ffmpeg_build/lib:$LD_LIBRARY_PATH"
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
#
1+
# version: 20251211
2+
# Image name: quay.io/opencv-ci/opencv-python-musllinux_1_2-x86-64
23
FROM quay.io/pypa/musllinux_1_2_x86_64:latest
34

45
ARG CCACHE_VERSION=3.7.9

0 commit comments

Comments
 (0)