mirror of
https://github.com/linuxserver/docker-ffmpeg.git
synced 2026-02-20 04:56:23 +08:00
Merge pull request #33 from linuxserver/6.0
upgrade to ffmpeg 6.0, deprecate armhf
This commit is contained in:
commit
0264cca0f3
2
.github/workflows/external_trigger.yml
vendored
2
.github/workflows/external_trigger.yml
vendored
@ -20,7 +20,7 @@ jobs:
|
||||
echo "**** External trigger running off of master branch. To disable this trigger, set a Github secret named \"PAUSE_EXTERNAL_TRIGGER_FFMPEG_MASTER\". ****"
|
||||
echo "External trigger running off of master branch. To disable this trigger, set a Github secret named \`PAUSE_EXTERNAL_TRIGGER_FFMPEG_MASTER\`" >> $GITHUB_STEP_SUMMARY
|
||||
echo "**** Retrieving external version ****"
|
||||
EXT_RELEASE=$(echo 5.1.2-cli)
|
||||
EXT_RELEASE=$(echo 6.0-cli)
|
||||
if [ -z "${EXT_RELEASE}" ] || [ "${EXT_RELEASE}" == "null" ]; then
|
||||
echo "**** Can't retrieve external version, exiting ****"
|
||||
FAILURE_REASON="Can't retrieve external version for ffmpeg branch master"
|
||||
|
||||
588
Dockerfile
588
Dockerfile
@ -1,10 +1,590 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
FROM ghcr.io/linuxserver/ffmpeg:bin as binstage
|
||||
# build stage
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:jammy as buildstage
|
||||
|
||||
# set version label
|
||||
ARG FFMPEG_VERSION
|
||||
|
||||
# common env
|
||||
ENV \
|
||||
DEBIAN_FRONTEND="noninteractive" \
|
||||
MAKEFLAGS="-j4"
|
||||
|
||||
# versions
|
||||
ENV \
|
||||
AOM=v3.6.1 \
|
||||
FDKAAC=2.0.2 \
|
||||
FFMPEG_HARD=6.0 \
|
||||
FONTCONFIG=2.14.2 \
|
||||
FREETYPE=2.12.1 \
|
||||
FRIBIDI=1.0.13 \
|
||||
GMMLIB=22.3.5 \
|
||||
IHD=23.1.6 \
|
||||
KVAZAAR=2.2.0 \
|
||||
LAME=3.100 \
|
||||
LIBASS=0.17.1 \
|
||||
LIBDRM=2.4.115 \
|
||||
LIBVA=2.18.0 \
|
||||
LIBVDPAU=1.5 \
|
||||
LIBVIDSTAB=1.1.1 \
|
||||
LIBVMAF=2.3.1 \
|
||||
NVCODEC=n12.0.16.0 \
|
||||
OGG=1.3.5 \
|
||||
OPENCOREAMR=0.1.6 \
|
||||
OPENJPEG=2.5.0 \
|
||||
OPUS=1.3.1 \
|
||||
THEORA=1.1.1 \
|
||||
VORBIS=1.3.7 \
|
||||
VPX=1.13.0 \
|
||||
X265=3.5 \
|
||||
XVID=1.3.7
|
||||
|
||||
RUN \
|
||||
echo "**** install build packages ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
autoconf \
|
||||
automake \
|
||||
bzip2 \
|
||||
cmake \
|
||||
diffutils \
|
||||
doxygen \
|
||||
g++ \
|
||||
gcc \
|
||||
git \
|
||||
gperf \
|
||||
libexpat1-dev \
|
||||
libxext-dev \
|
||||
libgcc-10-dev \
|
||||
libgomp1 \
|
||||
libharfbuzz-dev \
|
||||
libpciaccess-dev \
|
||||
libssl-dev \
|
||||
libtool \
|
||||
libv4l-dev \
|
||||
libx11-dev \
|
||||
libxml2-dev \
|
||||
make \
|
||||
nasm \
|
||||
ninja-build \
|
||||
ocl-icd-opencl-dev \
|
||||
perl \
|
||||
pkg-config \
|
||||
python3-venv \
|
||||
x11proto-xext-dev \
|
||||
xserver-xorg-dev \
|
||||
xxd \
|
||||
yasm \
|
||||
zlib1g-dev && \
|
||||
python3 -m venv /lsiopy && \
|
||||
pip install -U --no-cache-dir \
|
||||
pip \
|
||||
setuptools \
|
||||
wheel && \
|
||||
pip install --no-cache-dir meson
|
||||
|
||||
# compile 3rd party libs
|
||||
RUN \
|
||||
echo "**** grabbing aom ****" && \
|
||||
mkdir -p /tmp/aom && \
|
||||
git clone \
|
||||
--branch ${AOM} \
|
||||
--depth 1 https://aomedia.googlesource.com/aom \
|
||||
/tmp/aom
|
||||
RUN \
|
||||
echo "**** compiling aom ****" && \
|
||||
cd /tmp/aom && \
|
||||
rm -rf \
|
||||
CMakeCache.txt \
|
||||
CMakeFiles && \
|
||||
mkdir -p \
|
||||
aom_build && \
|
||||
cd aom_build && \
|
||||
cmake \
|
||||
-DBUILD_STATIC_LIBS=0 .. && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing fdk-aac ****" && \
|
||||
mkdir -p /tmp/fdk-aac && \
|
||||
curl -Lf \
|
||||
https://github.com/mstorsjo/fdk-aac/archive/v${FDKAAC}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/fdk-aac
|
||||
RUN \
|
||||
echo "**** compiling fdk-aac ****" && \
|
||||
cd /tmp/fdk-aac && \
|
||||
autoreconf -fiv && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing ffnvcodec ****" && \
|
||||
mkdir -p /tmp/ffnvcodec && \
|
||||
git clone \
|
||||
--branch ${NVCODEC} \
|
||||
--depth 1 https://git.videolan.org/git/ffmpeg/nv-codec-headers.git \
|
||||
/tmp/ffnvcodec
|
||||
RUN \
|
||||
echo "**** compiling ffnvcodec ****" && \
|
||||
cd /tmp/ffnvcodec && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing freetype ****" && \
|
||||
mkdir -p /tmp/freetype && \
|
||||
curl -Lf \
|
||||
https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/freetype
|
||||
RUN \
|
||||
echo "**** compiling freetype ****" && \
|
||||
cd /tmp/freetype && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing fontconfig ****" && \
|
||||
mkdir -p /tmp/fontconfig && \
|
||||
curl -Lf \
|
||||
https://www.freedesktop.org/software/fontconfig/release/fontconfig-${FONTCONFIG}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/fontconfig
|
||||
RUN \
|
||||
echo "**** compiling fontconfig ****" && \
|
||||
cd /tmp/fontconfig && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing fribidi ****" && \
|
||||
mkdir -p /tmp/fribidi && \
|
||||
curl -Lf \
|
||||
https://github.com/fribidi/fribidi/archive/v${FRIBIDI}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/fribidi
|
||||
RUN \
|
||||
echo "**** compiling fribidi ****" && \
|
||||
cd /tmp/fribidi && \
|
||||
./autogen.sh && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make -j 1 && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing kvazaar ****" && \
|
||||
mkdir -p /tmp/kvazaar && \
|
||||
curl -Lf \
|
||||
https://github.com/ultravideo/kvazaar/archive/v${KVAZAAR}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/kvazaar
|
||||
RUN \
|
||||
echo "**** compiling kvazaar ****" && \
|
||||
cd /tmp/kvazaar && \
|
||||
./autogen.sh && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing lame ****" && \
|
||||
mkdir -p /tmp/lame && \
|
||||
curl -Lf \
|
||||
http://downloads.sourceforge.net/project/lame/lame/3.100/lame-${LAME}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/lame
|
||||
RUN \
|
||||
echo "**** compiling lame ****" && \
|
||||
cd /tmp/lame && \
|
||||
cp \
|
||||
/usr/share/automake-1.16/config.guess \
|
||||
config.guess && \
|
||||
cp \
|
||||
/usr/share/automake-1.16/config.sub \
|
||||
config.sub && \
|
||||
./configure \
|
||||
--disable-frontend \
|
||||
--disable-static \
|
||||
--enable-nasm \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing libass ****" && \
|
||||
mkdir -p /tmp/libass && \
|
||||
curl -Lf \
|
||||
https://github.com/libass/libass/archive/${LIBASS}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/libass
|
||||
RUN \
|
||||
echo "**** compiling libass ****" && \
|
||||
cd /tmp/libass && \
|
||||
./autogen.sh && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing libdrm ****" && \
|
||||
mkdir -p /tmp/libdrm && \
|
||||
curl -Lf \
|
||||
https://dri.freedesktop.org/libdrm/libdrm-${LIBDRM}.tar.xz | \
|
||||
tar -xJ --strip-components=1 -C /tmp/libdrm
|
||||
RUN \
|
||||
echo "**** compiling libdrm ****" && \
|
||||
cd /tmp/libdrm && \
|
||||
meson setup \
|
||||
--prefix=/usr --libdir=/usr/local/lib/x86_64-linux-gnu \
|
||||
-Dvalgrind=disabled \
|
||||
. build && \
|
||||
ninja -C build && \
|
||||
ninja -C build install && \
|
||||
strip -d /usr/local/lib/x86_64-linux-gnu/libdrm*.so
|
||||
RUN \
|
||||
echo "**** grabbing libva ****" && \
|
||||
mkdir -p /tmp/libva && \
|
||||
curl -Lf \
|
||||
https://github.com/intel/libva/archive/${LIBVA}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/libva
|
||||
RUN \
|
||||
echo "**** compiling libva ****" && \
|
||||
cd /tmp/libva && \
|
||||
./autogen.sh && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install && \
|
||||
strip -d /usr/local/lib/libva.so && \
|
||||
strip -d /usr/local/lib/libva-drm.so
|
||||
RUN \
|
||||
echo "**** grabbing gmmlib ****" && \
|
||||
mkdir -p /tmp/gmmlib && \
|
||||
curl -Lf \
|
||||
https://github.com/intel/gmmlib/archive/refs/tags/intel-gmmlib-${GMMLIB}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/gmmlib
|
||||
RUN \
|
||||
echo "**** compiling gmmlib ****" && \
|
||||
mkdir -p /tmp/gmmlib/build && \
|
||||
cd /tmp/gmmlib/build && \
|
||||
cmake \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
.. && \
|
||||
make && \
|
||||
make install && \
|
||||
strip -d /usr/local/lib/libigdgmm.so
|
||||
RUN \
|
||||
echo "**** grabbing IHD ****" && \
|
||||
mkdir -p /tmp/ihd && \
|
||||
curl -Lf \
|
||||
https://github.com/intel/media-driver/archive/refs/tags/intel-media-${IHD}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/ihd
|
||||
RUN \
|
||||
echo "**** compiling IHD ****" && \
|
||||
mkdir -p /tmp/ihd/build && \
|
||||
cd /tmp/ihd/build && \
|
||||
cmake \
|
||||
-DLIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri/ \
|
||||
.. && \
|
||||
make && \
|
||||
make install && \
|
||||
strip -d /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
|
||||
RUN \
|
||||
echo "**** grabbing libvdpau ****" && \
|
||||
mkdir -p /tmp/libvdpau && \
|
||||
git clone \
|
||||
--branch ${LIBVDPAU} \
|
||||
--depth 1 https://gitlab.freedesktop.org/vdpau/libvdpau.git \
|
||||
/tmp/libvdpau
|
||||
RUN \
|
||||
echo "**** compiling libvdpau ****" && \
|
||||
cd /tmp/libvdpau && \
|
||||
meson setup \
|
||||
--prefix=/usr --libdir=/usr/local/lib \
|
||||
-Ddocumentation=false \
|
||||
build && \
|
||||
ninja -C build install && \
|
||||
strip -d /usr/local/lib/libvdpau.so
|
||||
RUN \
|
||||
echo "**** grabbing vmaf ****" && \
|
||||
mkdir -p /tmp/vmaf && \
|
||||
curl -Lf \
|
||||
https://github.com/Netflix/vmaf/archive/refs/tags/v${LIBVMAF}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/vmaf
|
||||
RUN \
|
||||
echo "**** compiling libvmaf ****" && \
|
||||
cd /tmp/vmaf/libvmaf && \
|
||||
meson setup \
|
||||
--prefix=/usr --libdir=/usr/local/lib \
|
||||
--buildtype release \
|
||||
build && \
|
||||
ninja -vC build && \
|
||||
ninja -vC build install
|
||||
RUN \
|
||||
echo "**** grabbing ogg ****" && \
|
||||
mkdir -p /tmp/ogg && \
|
||||
curl -Lf \
|
||||
http://downloads.xiph.org/releases/ogg/libogg-${OGG}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/ogg
|
||||
RUN \
|
||||
echo "**** compiling ogg ****" && \
|
||||
cd /tmp/ogg && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing opencore-amr ****" && \
|
||||
mkdir -p /tmp/opencore-amr && \
|
||||
curl -Lf \
|
||||
http://downloads.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/opencore-amr
|
||||
RUN \
|
||||
echo "**** compiling opencore-amr ****" && \
|
||||
cd /tmp/opencore-amr && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing openjpeg ****" && \
|
||||
mkdir -p /tmp/openjpeg && \
|
||||
curl -Lf \
|
||||
https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/openjpeg
|
||||
RUN \
|
||||
echo "**** compiling openjpeg ****" && \
|
||||
cd /tmp/openjpeg && \
|
||||
rm -Rf \
|
||||
thirdparty/libpng/* && \
|
||||
curl -Lf \
|
||||
https://download.sourceforge.net/libpng/libpng-1.6.37.tar.gz | \
|
||||
tar -zx --strip-components=1 -C thirdparty/libpng/ && \
|
||||
cmake \
|
||||
-DBUILD_STATIC_LIBS=0 \
|
||||
-DBUILD_THIRDPARTY:BOOL=ON . && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing opus ****" && \
|
||||
mkdir -p /tmp/opus && \
|
||||
curl -Lf \
|
||||
https://archive.mozilla.org/pub/opus/opus-${OPUS}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/opus
|
||||
RUN \
|
||||
echo "**** compiling opus ****" && \
|
||||
cd /tmp/opus && \
|
||||
autoreconf -fiv && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing theora ****" && \
|
||||
mkdir -p /tmp/theora && \
|
||||
curl -Lf \
|
||||
http://downloads.xiph.org/releases/theora/libtheora-${THEORA}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/theora
|
||||
RUN \
|
||||
echo "**** compiling theora ****" && \
|
||||
cd /tmp/theora && \
|
||||
cp \
|
||||
/usr/share/automake-1.16/config.guess \
|
||||
config.guess && \
|
||||
cp \
|
||||
/usr/share/automake-1.16/config.sub \
|
||||
config.sub && \
|
||||
curl -fL \
|
||||
'https://gitlab.xiph.org/xiph/theora/-/commit/7288b539c52e99168488dc3a343845c9365617c8.diff' \
|
||||
> png.patch && \
|
||||
patch ./examples/png2theora.c < png.patch && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing vid.stab ****" && \
|
||||
mkdir -p /tmp/vid.stab && \
|
||||
curl -Lf \
|
||||
https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/vid.stab
|
||||
RUN \
|
||||
echo "**** compiling vid.stab ****" && \
|
||||
cd /tmp/vid.stab && \
|
||||
cmake \
|
||||
-DBUILD_STATIC_LIBS=0 . && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing vorbis ****" && \
|
||||
mkdir -p /tmp/vorbis && \
|
||||
curl -Lf \
|
||||
http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/vorbis
|
||||
RUN \
|
||||
echo "**** compiling vorbis ****" && \
|
||||
cd /tmp/vorbis && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing vpx ****" && \
|
||||
mkdir -p /tmp/vpx && \
|
||||
curl -Lf \
|
||||
https://github.com/webmproject/libvpx/archive/v${VPX}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/vpx
|
||||
RUN \
|
||||
echo "**** compiling vpx ****" && \
|
||||
cd /tmp/vpx && \
|
||||
./configure \
|
||||
--disable-debug \
|
||||
--disable-docs \
|
||||
--disable-examples \
|
||||
--disable-install-bins \
|
||||
--disable-static \
|
||||
--disable-unit-tests \
|
||||
--enable-pic \
|
||||
--enable-shared \
|
||||
--enable-vp8 \
|
||||
--enable-vp9 \
|
||||
--enable-vp9-highbitdepth && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing x264 ****" && \
|
||||
mkdir -p /tmp/x264 && \
|
||||
curl -Lf \
|
||||
https://code.videolan.org/videolan/x264/-/archive/master/x264-stable.tar.bz2 | \
|
||||
tar -jx --strip-components=1 -C /tmp/x264
|
||||
RUN \
|
||||
echo "**** compiling x264 ****" && \
|
||||
cd /tmp/x264 && \
|
||||
./configure \
|
||||
--disable-cli \
|
||||
--disable-static \
|
||||
--enable-pic \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing x265 ****" && \
|
||||
mkdir -p /tmp/x265 && \
|
||||
curl -Lf \
|
||||
https://bitbucket.org/multicoreware/x265_git/downloads/x265_${X265}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/x265
|
||||
RUN \
|
||||
echo "**** compiling x265 ****" && \
|
||||
cd /tmp/x265/build/linux && \
|
||||
./multilib.sh && \
|
||||
make -C 8bit install
|
||||
RUN \
|
||||
echo "**** grabbing xvid ****" && \
|
||||
mkdir -p /tmp/xvid && \
|
||||
curl -Lf \
|
||||
https://downloads.xvid.com/downloads/xvidcore-${XVID}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/xvid
|
||||
RUN \
|
||||
echo "**** compiling xvid ****" && \
|
||||
cd /tmp/xvid/build/generic && \
|
||||
./configure && \
|
||||
make && \
|
||||
make install
|
||||
|
||||
# main ffmpeg build
|
||||
RUN \
|
||||
echo "**** Versioning ****" && \
|
||||
if [ -z ${FFMPEG_VERSION+x} ]; then \
|
||||
FFMPEG=${FFMPEG_HARD}; \
|
||||
else \
|
||||
FFMPEG=${FFMPEG_VERSION%-cli}; \
|
||||
fi && \
|
||||
echo "**** grabbing ffmpeg ****" && \
|
||||
mkdir -p /tmp/ffmpeg && \
|
||||
echo "https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.bz2" && \
|
||||
curl -Lf \
|
||||
https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.bz2 | \
|
||||
tar -jx --strip-components=1 -C /tmp/ffmpeg
|
||||
RUN \
|
||||
echo "**** compiling ffmpeg ****" && \
|
||||
cd /tmp/ffmpeg && \
|
||||
./configure \
|
||||
--disable-debug \
|
||||
--disable-doc \
|
||||
--disable-ffplay \
|
||||
--enable-ffprobe \
|
||||
--enable-cuvid \
|
||||
--enable-gpl \
|
||||
--enable-libaom \
|
||||
--enable-libass \
|
||||
--enable-libfdk_aac \
|
||||
--enable-libfreetype \
|
||||
--enable-libkvazaar \
|
||||
--enable-libmp3lame \
|
||||
--enable-libopencore-amrnb \
|
||||
--enable-libopencore-amrwb \
|
||||
--enable-libopenjpeg \
|
||||
--enable-libopus \
|
||||
--enable-libtheora \
|
||||
--enable-libv4l2 \
|
||||
--enable-libvidstab \
|
||||
--enable-libvmaf \
|
||||
--enable-libvorbis \
|
||||
--enable-libvpx \
|
||||
--enable-libxml2 \
|
||||
--enable-libx264 \
|
||||
--enable-libx265 \
|
||||
--enable-libxvid \
|
||||
--enable-nonfree \
|
||||
--enable-nvdec \
|
||||
--enable-nvenc \
|
||||
--enable-opencl \
|
||||
--enable-openssl \
|
||||
--enable-small \
|
||||
--enable-stripping \
|
||||
--enable-vaapi \
|
||||
--enable-vdpau \
|
||||
--enable-version3 && \
|
||||
make
|
||||
|
||||
RUN \
|
||||
echo "**** arrange files ****" && \
|
||||
ldconfig && \
|
||||
mkdir -p \
|
||||
/buildout/usr/local/bin \
|
||||
/buildout/usr/local/lib/x86_64-linux-gnu/dri \
|
||||
/buildout/etc/OpenCL/vendors && \
|
||||
cp \
|
||||
/tmp/ffmpeg/ffmpeg \
|
||||
/buildout/usr/local/bin && \
|
||||
cp \
|
||||
/tmp/ffmpeg/ffprobe \
|
||||
/buildout/usr/local/bin && \
|
||||
cp -a \
|
||||
/usr/local/lib/lib*so* \
|
||||
/buildout/usr/local/lib/ && \
|
||||
cp -a \
|
||||
/usr/local/lib/x86_64-linux-gnu/lib*so* \
|
||||
/buildout/usr/local/lib/x86_64-linux-gnu/ && \
|
||||
cp -a \
|
||||
/usr/lib/x86_64-linux-gnu/dri/*.so \
|
||||
/buildout/usr/local/lib/x86_64-linux-gnu/dri/ && \
|
||||
echo \
|
||||
'libnvidia-opencl.so.1' > \
|
||||
/buildout/etc/OpenCL/vendors/nvidia.icd
|
||||
|
||||
# runtime stage
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:jammy
|
||||
|
||||
# Add files from binstage
|
||||
COPY --from=binstage / /
|
||||
COPY --from=buildstage /buildout/ /
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
@ -16,7 +596,7 @@ ARG DEBIAN_FRONTEND="noninteractive"
|
||||
|
||||
# hardware env
|
||||
ENV \
|
||||
LIBVA_DRIVERS_PATH="/usr/lib/x86_64-linux-gnu/dri" \
|
||||
LIBVA_DRIVERS_PATH="/usr/local/lib/x86_64-linux-gnu/dri" \
|
||||
NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" \
|
||||
NVIDIA_VISIBLE_DEVICES="all"
|
||||
|
||||
@ -24,9 +604,7 @@ RUN \
|
||||
echo "**** install runtime ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
i965-va-driver \
|
||||
libexpat1 \
|
||||
libgl1-mesa-dri \
|
||||
libglib2.0-0 \
|
||||
libgomp1 \
|
||||
libharfbuzz0b \
|
||||
|
||||
@ -1,10 +1,444 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
FROM ghcr.io/linuxserver/ffmpeg:arm64v8-bin as binstage
|
||||
# build stage
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-jammy as buildstage
|
||||
|
||||
# set version label
|
||||
ARG FFMPEG_VERSION
|
||||
|
||||
# common env
|
||||
ENV \
|
||||
DEBIAN_FRONTEND="noninteractive" \
|
||||
MAKEFLAGS="-j4"
|
||||
|
||||
# versions
|
||||
ENV \
|
||||
AOM=v3.6.1 \
|
||||
FDKAAC=2.0.2 \
|
||||
FFMPEG_HARD=6.0 \
|
||||
FREETYPE=2.12.1 \
|
||||
FRIBIDI=1.0.13 \
|
||||
KVAZAAR=2.2.0 \
|
||||
LAME=3.100 \
|
||||
LIBASS=0.17.1 \
|
||||
LIBDRM=2.4.115 \
|
||||
LIBVA=2.18.0 \
|
||||
LIBVDPAU=1.5 \
|
||||
LIBVIDSTAB=1.1.1 \
|
||||
NVCODEC=n12.0.16.0 \
|
||||
OGG=1.3.5 \
|
||||
OPENCOREAMR=0.1.6 \
|
||||
OPENJPEG=2.5.0 \
|
||||
OPUS=1.3.1 \
|
||||
THEORA=1.1.1 \
|
||||
VORBIS=1.3.7 \
|
||||
VPX=1.13.0 \
|
||||
X265=master \
|
||||
XVID=1.3.7
|
||||
# x265 aarch64 build fixes not in a release yet https://bitbucket.org/multicoreware/x265_git/issues/604/linux-arm-aarch64-build-failing-for-high
|
||||
|
||||
RUN \
|
||||
echo "**** install build packages ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
autoconf \
|
||||
automake \
|
||||
bzip2 \
|
||||
cmake \
|
||||
diffutils \
|
||||
g++ \
|
||||
gcc \
|
||||
git \
|
||||
gperf \
|
||||
libexpat1-dev \
|
||||
libfontconfig1-dev \
|
||||
libxext-dev \
|
||||
libgcc-10-dev \
|
||||
libgomp1 \
|
||||
libharfbuzz-dev \
|
||||
libpciaccess-dev \
|
||||
libssl-dev \
|
||||
libtool \
|
||||
libv4l-dev \
|
||||
libx11-dev \
|
||||
libxml2-dev \
|
||||
make \
|
||||
nasm \
|
||||
perl \
|
||||
pkg-config \
|
||||
python3-venv \
|
||||
x11proto-xext-dev \
|
||||
xserver-xorg-dev \
|
||||
xxd \
|
||||
yasm \
|
||||
zlib1g-dev
|
||||
|
||||
# compile 3rd party libs
|
||||
RUN \
|
||||
echo "**** grabbing aom ****" && \
|
||||
mkdir -p /tmp/aom && \
|
||||
git clone \
|
||||
--branch ${AOM} \
|
||||
--depth 1 https://aomedia.googlesource.com/aom \
|
||||
/tmp/aom
|
||||
RUN \
|
||||
echo "**** compiling aom ****" && \
|
||||
cd /tmp/aom && \
|
||||
rm -rf \
|
||||
CMakeCache.txt \
|
||||
CMakeFiles && \
|
||||
mkdir -p \
|
||||
aom_build && \
|
||||
cd aom_build && \
|
||||
cmake \
|
||||
-DBUILD_STATIC_LIBS=0 .. && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing fdk-aac ****" && \
|
||||
mkdir -p /tmp/fdk-aac && \
|
||||
curl -Lf \
|
||||
https://github.com/mstorsjo/fdk-aac/archive/v${FDKAAC}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/fdk-aac
|
||||
RUN \
|
||||
echo "**** compiling fdk-aac ****" && \
|
||||
cd /tmp/fdk-aac && \
|
||||
autoreconf -fiv && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing freetype ****" && \
|
||||
mkdir -p /tmp/freetype && \
|
||||
curl -Lf \
|
||||
https://download.savannah.gnu.org/releases/freetype/freetype-${FREETYPE}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/freetype
|
||||
RUN \
|
||||
echo "**** compiling freetype ****" && \
|
||||
cd /tmp/freetype && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing fribidi ****" && \
|
||||
mkdir -p /tmp/fribidi && \
|
||||
curl -Lf \
|
||||
https://github.com/fribidi/fribidi/archive/v${FRIBIDI}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/fribidi
|
||||
RUN \
|
||||
echo "**** compiling fribidi ****" && \
|
||||
cd /tmp/fribidi && \
|
||||
./autogen.sh && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make -j 1 && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing kvazaar ****" && \
|
||||
mkdir -p /tmp/kvazaar && \
|
||||
curl -Lf \
|
||||
https://github.com/ultravideo/kvazaar/archive/v${KVAZAAR}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/kvazaar
|
||||
RUN \
|
||||
echo "**** compiling kvazaar ****" && \
|
||||
cd /tmp/kvazaar && \
|
||||
./autogen.sh && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing lame ****" && \
|
||||
mkdir -p /tmp/lame && \
|
||||
curl -Lf \
|
||||
http://downloads.sourceforge.net/project/lame/lame/3.100/lame-${LAME}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/lame
|
||||
RUN \
|
||||
echo "**** compiling lame ****" && \
|
||||
cd /tmp/lame && \
|
||||
cp \
|
||||
/usr/share/automake-1.16/config.guess \
|
||||
config.guess && \
|
||||
cp \
|
||||
/usr/share/automake-1.16/config.sub \
|
||||
config.sub && \
|
||||
./configure \
|
||||
--disable-frontend \
|
||||
--disable-static \
|
||||
--enable-nasm \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing libass ****" && \
|
||||
mkdir -p /tmp/libass && \
|
||||
curl -Lf \
|
||||
https://github.com/libass/libass/archive/${LIBASS}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/libass
|
||||
RUN \
|
||||
echo "**** compiling libass ****" && \
|
||||
cd /tmp/libass && \
|
||||
./autogen.sh && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing ogg ****" && \
|
||||
mkdir -p /tmp/ogg && \
|
||||
curl -Lf \
|
||||
http://downloads.xiph.org/releases/ogg/libogg-${OGG}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/ogg
|
||||
RUN \
|
||||
echo "**** compiling ogg ****" && \
|
||||
cd /tmp/ogg && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing opencore-amr ****" && \
|
||||
mkdir -p /tmp/opencore-amr && \
|
||||
curl -Lf \
|
||||
http://downloads.sourceforge.net/project/opencore-amr/opencore-amr/opencore-amr-${OPENCOREAMR}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/opencore-amr
|
||||
RUN \
|
||||
echo "**** compiling opencore-amr ****" && \
|
||||
cd /tmp/opencore-amr && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing openjpeg ****" && \
|
||||
mkdir -p /tmp/openjpeg && \
|
||||
curl -Lf \
|
||||
https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/openjpeg
|
||||
RUN \
|
||||
echo "**** compiling openjpeg ****" && \
|
||||
cd /tmp/openjpeg && \
|
||||
rm -Rf \
|
||||
thirdparty/libpng/* && \
|
||||
curl -Lf \
|
||||
https://download.sourceforge.net/libpng/libpng-1.6.37.tar.gz | \
|
||||
tar -zx --strip-components=1 -C thirdparty/libpng/ && \
|
||||
cmake \
|
||||
-DBUILD_STATIC_LIBS=0 \
|
||||
-DBUILD_THIRDPARTY:BOOL=ON . && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing opus ****" && \
|
||||
mkdir -p /tmp/opus && \
|
||||
curl -Lf \
|
||||
https://archive.mozilla.org/pub/opus/opus-${OPUS}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/opus
|
||||
RUN \
|
||||
echo "**** compiling opus ****" && \
|
||||
cd /tmp/opus && \
|
||||
autoreconf -fiv && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing theora ****" && \
|
||||
mkdir -p /tmp/theora && \
|
||||
curl -Lf \
|
||||
http://downloads.xiph.org/releases/theora/libtheora-${THEORA}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/theora
|
||||
RUN \
|
||||
echo "**** compiling theora ****" && \
|
||||
cd /tmp/theora && \
|
||||
cp \
|
||||
/usr/share/automake-1.16/config.guess \
|
||||
config.guess && \
|
||||
cp \
|
||||
/usr/share/automake-1.16/config.sub \
|
||||
config.sub && \
|
||||
curl -fL \
|
||||
'https://gitlab.xiph.org/xiph/theora/-/commit/7288b539c52e99168488dc3a343845c9365617c8.diff' \
|
||||
> png.patch && \
|
||||
patch ./examples/png2theora.c < png.patch && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing vid.stab ****" && \
|
||||
mkdir -p /tmp/vid.stab && \
|
||||
curl -Lf \
|
||||
https://github.com/georgmartius/vid.stab/archive/v${LIBVIDSTAB}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/vid.stab
|
||||
RUN \
|
||||
echo "**** compiling vid.stab ****" && \
|
||||
cd /tmp/vid.stab && \
|
||||
echo "" > \
|
||||
CMakeModules/FindSSE.cmake && \
|
||||
cmake . && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing vorbis ****" && \
|
||||
mkdir -p /tmp/vorbis && \
|
||||
curl -Lf \
|
||||
http://downloads.xiph.org/releases/vorbis/libvorbis-${VORBIS}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/vorbis
|
||||
RUN \
|
||||
echo "**** compiling vorbis ****" && \
|
||||
cd /tmp/vorbis && \
|
||||
./configure \
|
||||
--disable-static \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing vpx ****" && \
|
||||
mkdir -p /tmp/vpx && \
|
||||
curl -Lf \
|
||||
https://github.com/webmproject/libvpx/archive/v${VPX}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/vpx
|
||||
RUN \
|
||||
echo "**** compiling vpx ****" && \
|
||||
cd /tmp/vpx && \
|
||||
./configure \
|
||||
--disable-debug \
|
||||
--disable-docs \
|
||||
--disable-examples \
|
||||
--disable-install-bins \
|
||||
--disable-static \
|
||||
--disable-unit-tests \
|
||||
--enable-pic \
|
||||
--enable-shared \
|
||||
--enable-vp8 \
|
||||
--enable-vp9 \
|
||||
--enable-vp9-highbitdepth && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing x264 ****" && \
|
||||
mkdir -p /tmp/x264 && \
|
||||
curl -Lf \
|
||||
https://code.videolan.org/videolan/x264/-/archive/master/x264-stable.tar.bz2 | \
|
||||
tar -jx --strip-components=1 -C /tmp/x264
|
||||
RUN \
|
||||
echo "**** compiling x264 ****" && \
|
||||
cd /tmp/x264 && \
|
||||
./configure \
|
||||
--disable-cli \
|
||||
--disable-static \
|
||||
--enable-pic \
|
||||
--enable-shared && \
|
||||
make && \
|
||||
make install
|
||||
RUN \
|
||||
echo "**** grabbing x265 ****" && \
|
||||
mkdir -p /tmp/x265 && \
|
||||
git clone \
|
||||
--branch ${X265} \
|
||||
https://bitbucket.org/multicoreware/x265_git.git \
|
||||
/tmp/x265
|
||||
RUN \
|
||||
echo "**** compiling x265 ****" && \
|
||||
cd /tmp/x265/build/linux && \
|
||||
export CXXFLAGS="-fPIC" && \
|
||||
./multilib.sh && \
|
||||
make -C 8bit install
|
||||
RUN \
|
||||
echo "**** grabbing xvid ****" && \
|
||||
mkdir -p /tmp/xvid && \
|
||||
curl -Lf \
|
||||
https://downloads.xvid.com/downloads/xvidcore-${XVID}.tar.gz | \
|
||||
tar -zx --strip-components=1 -C /tmp/xvid
|
||||
RUN \
|
||||
echo "**** compiling xvid ****" && \
|
||||
cd /tmp/xvid/build/generic && \
|
||||
./configure && \
|
||||
make && \
|
||||
make install
|
||||
|
||||
# main ffmpeg build
|
||||
RUN \
|
||||
echo "**** Versioning ****" && \
|
||||
if [ -z ${FFMPEG_VERSION+x} ]; then \
|
||||
FFMPEG=${FFMPEG_HARD}; \
|
||||
else \
|
||||
FFMPEG=${FFMPEG_VERSION%-cli}; \
|
||||
fi && \
|
||||
echo "**** grabbing ffmpeg ****" && \
|
||||
mkdir -p /tmp/ffmpeg && \
|
||||
echo "https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.bz2" && \
|
||||
curl -Lf \
|
||||
https://ffmpeg.org/releases/ffmpeg-${FFMPEG}.tar.bz2 | \
|
||||
tar -jx --strip-components=1 -C /tmp/ffmpeg
|
||||
RUN \
|
||||
echo "**** compiling ffmpeg ****" && \
|
||||
cd /tmp/ffmpeg && \
|
||||
./configure \
|
||||
--disable-debug \
|
||||
--disable-doc \
|
||||
--disable-ffplay \
|
||||
--enable-ffprobe \
|
||||
--enable-gpl \
|
||||
--enable-libaom \
|
||||
--enable-libass \
|
||||
--enable-libfdk_aac \
|
||||
--enable-libfreetype \
|
||||
--enable-libkvazaar \
|
||||
--enable-libmp3lame \
|
||||
--enable-libopencore-amrnb \
|
||||
--enable-libopencore-amrwb \
|
||||
--enable-libopenjpeg \
|
||||
--enable-libopus \
|
||||
--enable-libtheora \
|
||||
--enable-libv4l2 \
|
||||
--enable-libvidstab \
|
||||
--enable-libvorbis \
|
||||
--enable-libvpx \
|
||||
--enable-libxml2 \
|
||||
--enable-libx264 \
|
||||
--enable-libx265 \
|
||||
--enable-libxvid \
|
||||
--enable-nonfree \
|
||||
--enable-openssl \
|
||||
--enable-small \
|
||||
--enable-stripping \
|
||||
--enable-version3 && \
|
||||
make
|
||||
|
||||
RUN \
|
||||
echo "**** arrange files ****" && \
|
||||
ldconfig && \
|
||||
mkdir -p \
|
||||
/buildout/usr/local/bin \
|
||||
/buildout/usr/local/lib && \
|
||||
cp \
|
||||
/tmp/ffmpeg/ffmpeg \
|
||||
/buildout/usr/local/bin && \
|
||||
cp \
|
||||
/tmp/ffmpeg/ffprobe \
|
||||
/buildout/usr/local/bin && \
|
||||
cp -a \
|
||||
/usr/local/lib/lib*so* \
|
||||
/buildout/usr/local/lib/
|
||||
|
||||
# runtime stage
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm64v8-jammy
|
||||
|
||||
# Add files from binstage
|
||||
COPY --from=binstage / /
|
||||
COPY --from=buildstage /buildout/ /
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
|
||||
@ -1,38 +0,0 @@
|
||||
# syntax=docker/dockerfile:1
|
||||
|
||||
FROM ghcr.io/linuxserver/ffmpeg:arm32v7-bin as binstage
|
||||
FROM ghcr.io/linuxserver/baseimage-ubuntu:arm32v7-jammy
|
||||
|
||||
# Add files from binstage
|
||||
COPY --from=binstage / /
|
||||
|
||||
# set version label
|
||||
ARG BUILD_DATE
|
||||
ARG VERSION
|
||||
LABEL build_version="Linuxserver.io version:- ${VERSION} Build-date:- ${BUILD_DATE}"
|
||||
LABEL maintainer="thelamer"
|
||||
|
||||
ARG DEBIAN_FRONTEND="noninteractive"
|
||||
|
||||
RUN \
|
||||
echo "**** install runtime ****" && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
libexpat1 \
|
||||
libfontconfig1 \
|
||||
libglib2.0-0 \
|
||||
libgomp1 \
|
||||
libharfbuzz0b \
|
||||
libv4l-0 \
|
||||
libx11-6 \
|
||||
libxcb1 \
|
||||
libxext6 \
|
||||
libxml2 && \
|
||||
echo "**** clean up ****" && \
|
||||
rm -rf \
|
||||
/var/lib/apt/lists/* \
|
||||
/var/tmp/*
|
||||
|
||||
COPY /root /
|
||||
|
||||
ENTRYPOINT ["/ffmpegwrapper.sh"]
|
||||
80
Jenkinsfile
vendored
80
Jenkinsfile
vendored
@ -103,7 +103,7 @@ pipeline {
|
||||
steps{
|
||||
script{
|
||||
env.EXT_RELEASE = sh(
|
||||
script: ''' echo 5.1.2-cli ''',
|
||||
script: ''' echo 6.0-cli ''',
|
||||
returnStdout: true).trim()
|
||||
env.RELEASE_LINK = 'custom_command'
|
||||
}
|
||||
@ -156,7 +156,7 @@ pipeline {
|
||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/' + env.CONTAINER_NAME
|
||||
env.QUAYIMAGE = 'quay.io/linuxserver.io/' + env.CONTAINER_NAME
|
||||
if (env.MULTIARCH == 'true') {
|
||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
} else {
|
||||
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-ls' + env.LS_TAG_NUMBER
|
||||
}
|
||||
@ -179,7 +179,7 @@ pipeline {
|
||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lsiodev-' + env.CONTAINER_NAME
|
||||
env.QUAYIMAGE = 'quay.io/linuxserver.io/lsiodev-' + env.CONTAINER_NAME
|
||||
if (env.MULTIARCH == 'true') {
|
||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
} else {
|
||||
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA
|
||||
}
|
||||
@ -202,7 +202,7 @@ pipeline {
|
||||
env.GITLABIMAGE = 'registry.gitlab.com/linuxserver.io/' + env.LS_REPO + '/lspipepr-' + env.CONTAINER_NAME
|
||||
env.QUAYIMAGE = 'quay.io/linuxserver.io/lspipepr-' + env.CONTAINER_NAME
|
||||
if (env.MULTIARCH == 'true') {
|
||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm32v7-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||
env.CI_TAGS = 'amd64-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST + '|arm64v8-' + env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||
} else {
|
||||
env.CI_TAGS = env.EXT_RELEASE_CLEAN + '-pkg-' + env.PACKAGE_TAG + '-dev-' + env.COMMIT_SHA + '-pr-' + env.PULL_REQUEST
|
||||
}
|
||||
@ -485,44 +485,6 @@ pipeline {
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
}
|
||||
}
|
||||
stage('Build ARMHF') {
|
||||
agent {
|
||||
label 'ARMHF'
|
||||
}
|
||||
steps {
|
||||
echo "Running on node: ${NODE_NAME}"
|
||||
echo 'Logging into Github'
|
||||
sh '''#! /bin/bash
|
||||
echo $GITHUB_TOKEN | docker login ghcr.io -u LinuxServer-CI --password-stdin
|
||||
'''
|
||||
sh "sed -r -i 's|(^FROM .*)|\\1\\n\\nENV LSIO_FIRST_PARTY=true|g' Dockerfile.armhf"
|
||||
sh "docker buildx build \
|
||||
--label \"org.opencontainers.image.created=${GITHUB_DATE}\" \
|
||||
--label \"org.opencontainers.image.authors=linuxserver.io\" \
|
||||
--label \"org.opencontainers.image.url=https://github.com/linuxserver/docker-ffmpeg/packages\" \
|
||||
--label \"org.opencontainers.image.documentation=https://docs.linuxserver.io/images/docker-ffmpeg\" \
|
||||
--label \"org.opencontainers.image.source=https://github.com/linuxserver/docker-ffmpeg\" \
|
||||
--label \"org.opencontainers.image.version=${EXT_RELEASE_CLEAN}-ls${LS_TAG_NUMBER}\" \
|
||||
--label \"org.opencontainers.image.revision=${COMMIT_SHA}\" \
|
||||
--label \"org.opencontainers.image.vendor=linuxserver.io\" \
|
||||
--label \"org.opencontainers.image.licenses=GPL-3.0-only\" \
|
||||
--label \"org.opencontainers.image.ref.name=${COMMIT_SHA}\" \
|
||||
--label \"org.opencontainers.image.title=Ffmpeg\" \
|
||||
--label \"org.opencontainers.image.description=ffmpeg image by linuxserver.io\" \
|
||||
--no-cache --pull -f Dockerfile.armhf -t ${IMAGE}:arm32v7-${META_TAG} --platform=linux/arm/v7 \
|
||||
--build-arg ${BUILD_VERSION_ARG}=${EXT_RELEASE} --build-arg VERSION=\"${VERSION_TAG}\" --build-arg BUILD_DATE=${GITHUB_DATE} ."
|
||||
sh "docker tag ${IMAGE}:arm32v7-${META_TAG} ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
retry(5) {
|
||||
sh "docker push ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}"
|
||||
}
|
||||
sh '''#! /bin/bash
|
||||
containers=$(docker ps -aq)
|
||||
if [[ -n "${containers}" ]]; then
|
||||
docker stop ${containers}
|
||||
fi
|
||||
docker system prune -af --volumes || : '''
|
||||
}
|
||||
}
|
||||
stage('Build ARM64') {
|
||||
agent {
|
||||
label 'ARM64'
|
||||
@ -663,9 +625,7 @@ pipeline {
|
||||
set -e
|
||||
docker pull ghcr.io/linuxserver/ci:latest
|
||||
if [ "${MULTIARCH}" == "true" ]; then
|
||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
|
||||
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
||||
fi
|
||||
docker run --rm \
|
||||
@ -768,8 +728,6 @@ pipeline {
|
||||
echo $GITLAB_TOKEN | docker login registry.gitlab.com -u LinuxServer.io --password-stdin
|
||||
echo $QUAYPASS | docker login quay.io -u $QUAYUSER --password-stdin
|
||||
if [ "${CI}" == "false" ]; then
|
||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm32v7-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm32v7-${META_TAG}
|
||||
docker pull ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER}
|
||||
docker tag ghcr.io/linuxserver/lsiodev-buildcache:arm64v8-${COMMIT_SHA}-${BUILD_NUMBER} ${IMAGE}:arm64v8-${META_TAG}
|
||||
fi
|
||||
@ -777,49 +735,47 @@ pipeline {
|
||||
docker tag ${IMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-latest
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker tag ${IMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-latest
|
||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||
docker tag ${IMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-latest
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker tag ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||
docker tag ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${SEMVER}
|
||||
docker tag ${MANIFESTIMAGE}:arm64v8-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
fi
|
||||
docker push ${MANIFESTIMAGE}:amd64-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:amd64-latest
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-latest
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-latest
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker push ${MANIFESTIMAGE}:amd64-${SEMVER}
|
||||
docker push ${MANIFESTIMAGE}:arm32v7-${SEMVER}
|
||||
docker push ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
fi
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:latest || :
|
||||
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:arm64v8-latest
|
||||
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm32v7-latest --os linux --arch arm
|
||||
docker manifest create ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:amd64-latest ${MANIFESTIMAGE}:arm64v8-latest
|
||||
docker manifest annotate ${MANIFESTIMAGE}:latest ${MANIFESTIMAGE}:arm64v8-latest --os linux --arch arm64 --variant v8
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG} || :
|
||||
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm32v7-${META_TAG} --os linux --arch arm
|
||||
docker manifest create ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:amd64-${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG}
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${META_TAG} ${MANIFESTIMAGE}:arm64v8-${META_TAG} --os linux --arch arm64 --variant v8
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} || :
|
||||
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm32v7-${EXT_RELEASE_TAG} --os linux --arch arm
|
||||
docker manifest create ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:amd64-${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG}
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${EXT_RELEASE_TAG} ${MANIFESTIMAGE}:arm64v8-${EXT_RELEASE_TAG} --os linux --arch arm64 --variant v8
|
||||
if [ -n "${SEMVER}" ]; then
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${SEMVER} || :
|
||||
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm32v7-${SEMVER} --os linux --arch arm
|
||||
docker manifest create ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:amd64-${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER}
|
||||
docker manifest annotate ${MANIFESTIMAGE}:${SEMVER} ${MANIFESTIMAGE}:arm64v8-${SEMVER} --os linux --arch arm64 --variant v8
|
||||
fi
|
||||
token=$(curl -sX GET "https://ghcr.io/token?scope=repository%3Alinuxserver%2F${CONTAINER_NAME}%3Apull" | jq -r '.token')
|
||||
digest=$(curl -s \
|
||||
--header "Accept: application/vnd.docker.distribution.manifest.v2+json" \
|
||||
--header "Authorization: Bearer ${token}" \
|
||||
"https://ghcr.io/v2/linuxserver/${CONTAINER_NAME}/manifests/arm32v7-latest")
|
||||
if [[ $(echo "$digest" | jq -r '.layers') != "null" ]]; then
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest || :
|
||||
docker manifest create ${MANIFESTIMAGE}:arm32v7-latest ${MANIFESTIMAGE}:amd64-latest
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:arm32v7-latest
|
||||
fi
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:latest
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${META_TAG}
|
||||
docker manifest push --purge ${MANIFESTIMAGE}:${EXT_RELEASE_TAG}
|
||||
|
||||
@ -23,7 +23,6 @@ Find us at:
|
||||
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
|
||||
* [Discourse](https://discourse.linuxserver.io) - post on our community forum.
|
||||
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
|
||||
* [Podcast](https://anchor.fm/linuxserverio) - on hiatus. Coming back soon (late 2018).
|
||||
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
|
||||
|
||||
[](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fffmpeg)
|
||||
@ -53,7 +52,7 @@ The architectures supported by this image are:
|
||||
| :----: | :----: | ---- |
|
||||
| x86-64 | ✅ | amd64-\<version tag\> |
|
||||
| arm64 | ✅ | arm64v8-\<version tag\> |
|
||||
| armhf| ✅ | arm32v7-\<version tag\> |
|
||||
| armhf| ❌ | arm32v7-\<version tag\> |
|
||||
|
||||
## Usage
|
||||
|
||||
@ -129,6 +128,7 @@ Once registered you can define the dockerfile to use with `-f Dockerfile.aarch64
|
||||
|
||||
## Versions
|
||||
|
||||
* **13.06.23:** - Bump to 6.0, update shared libraries, deprecate armhf, combine bin stage.
|
||||
* **14.12.22:** - Rebase to Jammy, bump to 5.1.2.
|
||||
* **19.06.22:** - Rebase to Focal.
|
||||
* **26.08.21:** - Add support for libOpenCL.
|
||||
|
||||
@ -3,10 +3,11 @@
|
||||
# jenkins variables
|
||||
project_name: docker-ffmpeg
|
||||
external_type: na
|
||||
custom_version_command: "echo 5.1.2-cli"
|
||||
custom_version_command: "echo 6.0-cli"
|
||||
release_type: stable
|
||||
release_tag: latest
|
||||
ls_branch: master
|
||||
build_armhf: false
|
||||
repo_vars:
|
||||
- BUILD_VERSION_ARG = 'FFMPEG_VERSION'
|
||||
- LS_USER = 'linuxserver'
|
||||
|
||||
@ -26,7 +26,6 @@ full_custom_readme: |
|
||||
* [Discord](https://discord.gg/YWrKVTn) - realtime support / chat with the community and the team.
|
||||
* [Discourse](https://discourse.linuxserver.io) - post on our community forum.
|
||||
* [Fleet](https://fleet.linuxserver.io) - an online web interface which displays all of our maintained images.
|
||||
* [Podcast](https://anchor.fm/linuxserverio) - on hiatus. Coming back soon (late 2018).
|
||||
* [Open Collective](https://opencollective.com/linuxserver) - please consider helping us by either donating or contributing to our budget
|
||||
|
||||
[](https://scarf.sh/gateway/linuxserver-ci/docker/linuxserver%2Fffmpeg)
|
||||
@ -56,7 +55,7 @@ full_custom_readme: |
|
||||
| :----: | :----: | ---- |
|
||||
| x86-64 | ✅ | amd64-\<version tag\> |
|
||||
| arm64 | ✅ | arm64v8-\<version tag\> |
|
||||
| armhf| ✅ | arm32v7-\<version tag\> |
|
||||
| armhf| ❌ | arm32v7-\<version tag\> |
|
||||
|
||||
## Usage
|
||||
|
||||
@ -132,6 +131,7 @@ full_custom_readme: |
|
||||
|
||||
## Versions
|
||||
|
||||
* **13.06.23:** - Bump to 6.0, update shared libraries, deprecate armhf, combine bin stage.
|
||||
* **14.12.22:** - Rebase to Jammy, bump to 5.1.2.
|
||||
* **19.06.22:** - Rebase to Focal.
|
||||
* **26.08.21:** - Add support for libOpenCL.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user