|
| 1 | +FROM --platform=linux/amd64 ubuntu:24.04 AS build |
| 2 | + |
| 3 | +# Install build deps (from .github/scripts/utils.zsh/setup_ubuntu) |
| 4 | +RUN apt-get update && apt-get install -y --no-install-recommends \ |
| 5 | + build-essential cmake ninja-build git curl ca-certificates jq pkg-config \ |
| 6 | + libglib2.0-dev extra-cmake-modules lsb-release \ |
| 7 | + libcurl4-openssl-dev \ |
| 8 | + libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev \ |
| 9 | + libswresample-dev libswscale-dev \ |
| 10 | + libjansson-dev libx11-xcb-dev libgles2-mesa-dev \ |
| 11 | + libwayland-dev libpipewire-0.3-dev libpulse-dev \ |
| 12 | + libx264-dev libmbedtls-dev libgl1-mesa-dev \ |
| 13 | + uthash-dev libsimde-dev \ |
| 14 | + libluajit-5.1-dev python3-dev swig libcmocka-dev \ |
| 15 | + libx11-dev libxcb-randr0-dev libxcb-shm0-dev libxcb-xinerama0-dev \ |
| 16 | + libxcb-composite0-dev libxinerama-dev libxcb1-dev libx11-xcb-dev libxcb-xfixes0-dev \ |
| 17 | + libxss-dev libglvnd-dev libxkbcommon-dev \ |
| 18 | + libatk1.0-dev libatk-bridge2.0-dev libxcomposite-dev libxdamage-dev \ |
| 19 | + libasound2-dev libfdk-aac-dev libfontconfig-dev libfreetype6-dev \ |
| 20 | + libjack-jackd2-dev libsndio-dev libspeexdsp-dev \ |
| 21 | + libudev-dev libv4l-dev libva-dev libvlc-dev libpci-dev libdrm-dev \ |
| 22 | + nlohmann-json3-dev libwebsocketpp-dev libasio-dev libqrcodegencpp-dev \ |
| 23 | + libffmpeg-nvenc-dev librist-dev libsrt-openssl-dev \ |
| 24 | + qt6-base-dev libqt6svg6-dev qt6-base-private-dev \ |
| 25 | + libvpl-dev libvpl2 libnss3-dev libnspr4-dev xz-utils file \ |
| 26 | + && rm -rf /var/lib/apt/lists/* |
| 27 | + |
| 28 | +WORKDIR /build |
| 29 | +COPY . . |
| 30 | + |
| 31 | +# Download CEF (parse version from CMakePresets.json) |
| 32 | +RUN CEF_VERSION=$(jq -r '.configurePresets[] | select(.name=="dependencies") | .vendor["obsproject.com/obs-studio"].dependencies.cef.version' CMakePresets.json) && \ |
| 33 | + CEF_REVISION=$(jq -r '.configurePresets[] | select(.name=="dependencies") | .vendor["obsproject.com/obs-studio"].dependencies.cef.revision["ubuntu-x86_64"] // empty' CMakePresets.json) && \ |
| 34 | + CEF_HASH=$(jq -r '.configurePresets[] | select(.name=="dependencies") | .vendor["obsproject.com/obs-studio"].dependencies.cef.hashes["ubuntu-x86_64"]' CMakePresets.json) && \ |
| 35 | + mkdir -p .deps && cd .deps && \ |
| 36 | + FILENAME="cef_binary_${CEF_VERSION}_linux_x86_64${CEF_REVISION:+_v${CEF_REVISION}}.tar.xz" && \ |
| 37 | + curl -fSLO "https://cdn-fastly.obsproject.com/downloads/${FILENAME}" && \ |
| 38 | + echo "${CEF_HASH} ${FILENAME}" | sha256sum -c - && \ |
| 39 | + mkdir -p "cef_binary_${CEF_VERSION}_linux_x86_64" && \ |
| 40 | + tar --strip-components=1 -xJf "${FILENAME}" -C "cef_binary_${CEF_VERSION}_linux_x86_64" |
| 41 | + |
| 42 | +# Configure + Build + Package |
| 43 | +RUN CEF_VERSION=$(jq -r '.configurePresets[] | select(.name=="dependencies") | .vendor["obsproject.com/obs-studio"].dependencies.cef.version' CMakePresets.json) && \ |
| 44 | + cmake -S . --preset ubuntu \ |
| 45 | + -DCMAKE_BUILD_TYPE=Release \ |
| 46 | + -DENABLE_BROWSER=ON \ |
| 47 | + -DCEF_ROOT_DIR="/build/.deps/cef_binary_${CEF_VERSION}_linux_x86_64" && \ |
| 48 | + cmake --build build_ubuntu --config Release --parallel && \ |
| 49 | + cd build_ubuntu && cpack -C Release |
0 commit comments