syng/resources/appimage/Dockerfile
Christoph Stahl e5406ae4c4
All checks were successful
Check / mypy (push) Successful in 1m41s
Check / ruff (push) Successful in 6s
buildscripts for appimage
2025-06-22 22:33:59 +02:00

118 lines
5.4 KiB
Docker

FROM ubuntu:20.04
ENV DEBIAN_FRONTEND=noninteractive
RUN sed -i 's/htt[p|ps]:\/\/archive.ubuntu.com\/ubuntu\//mirror:\/\/mirrors.ubuntu.com\/mirrors.txt/g' /etc/apt/sources.list
RUN apt update && apt install -y git \
build-essential \
pkg-config \
ninja-build \
libgl1-mesa-dev \
autotools-dev \
autoconf \
libtool \
libfribidi-dev \
libharfbuzz-dev \
libfontconfig1-dev \
libx11-dev \
nasm \
libxv-dev \
libva-dev \
liblcms2-dev \
libdrm-dev \
libasound2-dev \
libgnutls28-dev \
libmp3lame-dev \
libvorbis-dev \
libopus-dev \
libtheora-dev \
libvpx-dev \
libx264-dev \
libx265-dev \
libpulse-dev \
libxext-dev \
libxpresent-dev \
libxrandr-dev \
libxss-dev \
libwebp-dev \
libxkbcommon-dev \
libpulse-dev \
libxkbcommon-x11-dev \
binutils \
python3-pip \
fuse3 \
libpipewire-0.2-dev \
libfreetype-dev \
glslang-dev \
wget \
libxcb-cursor0 libxcb-ewmh2 libxcb-icccm4 luajit libluajit-5.1-dev libpcsclite1 libxcb-keysyms1 libxcb-shape0 libjpeg-dev \
libfontconfig1-dev \
libfreetype-dev \
libgtk-3-dev \
libx11-dev \
libx11-xcb-dev \
libxcb-cursor-dev \
libxcb-glx0-dev \
libxcb-icccm4-dev \
libxcb-image0-dev \
libxcb-keysyms1-dev \
libxcb-randr0-dev \
libxcb-render-util0-dev \
libxcb-shape0-dev \
libxcb-shm0-dev \
libxcb-sync-dev \
libxcb-util-dev \
libxcb-xfixes0-dev \
libxcb-xkb-dev \
libxcb1-dev \
libxext-dev \
libxfixes-dev \
libxi-dev \
libxkbcommon-dev \
libxkbcommon-x11-dev \
libxrender-dev \
libmediainfo0v5
RUN pip3 install meson
RUN useradd -m builder
RUN wget https://github.com/Kitware/CMake/releases/download/v4.0.3/cmake-4.0.3-linux-x86_64.sh -O /tmp/cmake.sh
RUN chmod +x /tmp/cmake.sh && /tmp/cmake.sh --skip-license --prefix=/usr
RUN git clone https://github.com/google/shaderc.git /deps/shaderc && cd /deps/shaderc && /deps/shaderc/utils/git-sync-deps && mkdir -p /deps/shaderc/build && cd /deps/shaderc/build && \
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DSHADERC_SKIP_TESTS=ON -DSHADERC_SKIP_EXAMPLES=ON \
/deps/shaderc && \
ninja && ninja install && rm -rf /deps/shaderc
RUN git clone https://github.com/Cyan4973/xxHash.git /deps/xxHash && cd /deps/xxHash && make && make install && rm -rf /deps/xxHash
RUN git clone https://code.videolan.org/videolan/dav1d.git /deps/dav1d && cd /deps/dav1d && git checkout 1.5.1 && \
mkdir -p /deps/dav1d/build && cd /deps/dav1d/build && \
meson setup .. --default-library=static --buildtype=release --prefix=/usr && \
ninja && ninja install && rm -rf /deps/dav1d
#RUN git clone https://gitlab.freedesktop.org/wayland/wayland.git /deps/wayland
#RUN cd /deps/wayland && git checkout 1.24 && \
# meson setup build --prefix=/usr -Ddocumentation=false -Ddtd_validation=false && \
# ninja -C build install
#RUN git clone https://gitlab.freedesktop.org/wayland/wayland-protocols.git /deps/wayland-protocols
#RUN cd /deps/wayland-protocols && git checkout 1.45 && \
# meson setup build --prefix=/usr -Dtests=false && \
# ninja -C build install
RUN wget https://download.qt.io/official_releases/qt/6.9/6.9.1/single/qt-everywhere-src-6.9.1.tar.xz -O /tmp/qt.tar.xz && tar -xf /tmp/qt.tar.xz -C /deps && rm /tmp/qt.tar.xz && mkdir /deps/qt-build && cd /deps/qt-build && \
/deps/qt-everywhere-src-6.9.1/configure -opensource -confirm-license -nomake examples -nomake tests -release -prefix /usr -skip qtwayland -skip qtwebengine -skip qtwebview -skip qt3d -skip qtdeclarative -skip qtscript -skip qtserialport -skip qttools -skip qtquick3d -skip qtxmlpatterns -skip qtcanvas3d -skip qtgraphs -skip qtlocation -skip qtdoc -skip qtlottie -skip qt5compat -skip qtmqtt -skip qtopcua -skip qtquick3dphysics -skip qtquickeffectmaker -skip qtquicktimeline -skip qttranslations -skip qtvirtualkeyboard -skip qtactiveqt -skip qtshadertools -skip qtmultimedia -skip qtspeech -skip qtcoap -skip qtconnectivity -skip qtdatavis3d -skip qtcharts -skip qtgrpc -skip qtwebsockets -skip qthttpserver -skip qtlanguageserver -skip qtpositioning -skip qtnetworkauth -skip qtremoteobjects -skip qtscmxml -skip qtsensors -skip qtserialbus -skip qtwebchannel -skip qtscxml && \
cd /deps/qt-build && cmake --build . --parallel && cmake --install . && rm -rf /deps/qt-everywhere-src-6.9.1 /deps/qt-build
RUN git clone https://github.com/mpv-player/mpv-build.git /deps/mpv-build/ && cd /deps/mpv-build && echo "-Djavascript=disabled" > mpv_options \
&& echo "--disable-debug" > ffmpeg_options \
&& echo "--disable-doc" >> ffmpeg_options \
&& echo "--enable-encoder=png" >> ffmpeg_options \
&& echo "--enable-gnutls" >> ffmpeg_options \
&& echo "--enable-gpl" >> ffmpeg_options \
&& echo "--enable-version3" >> ffmpeg_options \
&& echo "--enable-libass" >> ffmpeg_options \
&& echo "--enable-libdav1d" >> ffmpeg_options \
&& echo "--enable-libfreetype" >> ffmpeg_options \
&& echo "--enable-libmp3lame" >> ffmpeg_options \
&& echo "--enable-libopus" >> ffmpeg_options \
&& echo "--enable-libtheora" >> ffmpeg_options \
&& echo "--enable-libvorbis" >> ffmpeg_options \
&& echo "--enable-libvpx" >> ffmpeg_options \
&& echo "--enable-libx264" >> ffmpeg_options \
&& echo "--enable-libx265" >> ffmpeg_options \
&& echo "--enable-libwebp" >> ffmpeg_options \
&& /deps/mpv-build/rebuild -j32 \
&& cp /deps/mpv-build/build_libs/bin/ffmpeg /usr/bin/ffmpeg \
&& cp /deps/mpv-build/mpv/build/libmpv.so.2.5.0 /usr/lib/libmpv.so.2.5.0 \
&& rm -rf /deps/mpv-build