diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml index 04aa44d15..4a9835148 100644 --- a/.github/workflows/flatpak.yml +++ b/.github/workflows/flatpak.yml @@ -65,7 +65,7 @@ jobs: id: setup env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CACHE_KEY: flatpak-builder-${{ hashFiles('CI/flatpak/com.obsproject.Studio.json') }} + CACHE_KEY: flatpak-builder-${{ hashFiles('build-aux/**/*.json') }} run: | dnf install -y -q gh gh extension install actions/gh-actions-cache @@ -83,7 +83,7 @@ jobs: uses: flatpak/flatpak-github-actions/flatpak-builder@v6.1 with: bundle: obs-studio-${{ steps.setup.outputs.git_hash }}.flatpak - manifest-path: CI/flatpak/com.obsproject.Studio.json + manifest-path: build-aux/com.obsproject.Studio.json cache: ${{ fromJSON(steps.setup.outputs.cache_hit) }} cache-key: ${{ steps.setup.outputs.cache_key }} mirror-screenshots-url: https://dl.flathub.org/repo/screenshots diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dfccd902a..9c91f1e8b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -374,7 +374,7 @@ jobs: id: setup env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - CACHE_KEY: flatpak-builder-${{ hashFiles('CI/flatpak/com.obsproject.Studio.json') }} + CACHE_KEY: flatpak-builder-${{ hashFiles('build-aux/**/*.json') }} run: | dnf install -y -q gh gh extension install actions/gh-actions-cache @@ -393,7 +393,7 @@ jobs: with: build-bundle: ${{ fromJSON(needs.config.outputs.create_artifacts) }} bundle: obs-studio-flatpak-${{ steps.setup.outputs.git_hash }}.flatpak - manifest-path: CI/flatpak/com.obsproject.Studio.json + manifest-path: build-aux/com.obsproject.Studio.json cache: ${{ fromJSON(steps.setup.outputs.cache_hit) || (github.event_name == 'push' && github.ref == 'refs/heads/master') }} restore-cache: ${{ fromJSON(steps.setup.outputs.cache_hit) }} cache-key: ${{ steps.setup.outputs.cache_key }} diff --git a/.gitignore b/.gitignore index 5ecbaf77b..04283d354 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ #cmake /build*/ +!/build-aux/ /release*/ /debug*/ .vs/ diff --git a/CI/flatpak/com.obsproject.Studio.json b/CI/flatpak/com.obsproject.Studio.json deleted file mode 100644 index 12cd58b6d..000000000 --- a/CI/flatpak/com.obsproject.Studio.json +++ /dev/null @@ -1,515 +0,0 @@ -{ - "app-id": "com.obsproject.Studio", - "runtime": "org.kde.Platform", - "runtime-version": "6.4", - "sdk": "org.kde.Sdk", - "command": "obs", - "finish-args": [ - "--socket=wayland", - "--socket=x11", - "--socket=pulseaudio", - "--device=all", - "--share=network", - "--share=ipc", - "--filesystem=xdg-run/pipewire-0", - "--filesystem=host", - "--talk-name=org.kde.StatusNotifierWatcher", - "--talk-name=org.freedesktop.Flatpak", - "--talk-name=org.freedesktop.Notifications", - "--talk-name=org.a11y.Bus", - "--own-name=org.kde.StatusNotifierItem-2-2", - "--system-talk-name=org.freedesktop.Avahi", - "--env=VST_PATH=/app/extensions/Plugins/vst" - ], - "add-extensions": { - "com.obsproject.Studio.Plugin": { - "directory": "plugins", - "subdirectories": true, - "add-ld-path": "lib", - "merge-dirs": "lib/obs-plugins;share/obs/obs-plugins", - "no-autodownload": true, - "autodelete": true - }, - "org.freedesktop.LinuxAudio.Plugins": { - "directory": "extensions/Plugins", - "version": "22.08", - "add-ld-path": "lib", - "merge-dirs": "vst", - "subdirectories": true, - "no-autodownload": true - } - }, - "cleanup": [ - "/share/man", - "*.la" - ], - "modules": [ - { - "name": "x264", - "config-opts": [ - "--disable-cli", - "--enable-shared" - ], - "cleanup": [ - "/include", - "/lib/pkgconfig" - ], - "sources": [ - { - "type": "git", - "url": "https://code.videolan.org/videolan/x264.git", - "commit": "eaa68fad9e5d201d42fde51665f2d137ae96baf0" - } - ] - }, - { - "name": "v4l-utils", - "config-opts": [ - "--disable-static", - "--disable-doxygen-doc", - "--disable-libdvbv5", - "--disable-v4l-utils", - "--disable-qv4l2", - "--with-udevdir=/app/lib/udev/" - ], - "cleanup": [ - "/include", - "/lib/pkgconfig" - ], - "sources": [ - { - "type": "archive", - "url": "https://linuxtv.org/downloads/v4l-utils/v4l-utils-1.22.0.tar.bz2", - "sha256": "1069e5d7909bcc563baeaadc3a5c496f0e658524c413cf7818816e37bfcea344" - } - ] - }, - { - "name": "nv-codec-headers", - "no-autogen": true, - "make-install-args": [ - "PREFIX=/app" - ], - "cleanup": [ - "*" - ], - "sources": [ - { - "type": "git", - "url": "https://github.com/FFmpeg/nv-codec-headers.git", - "tag": "n12.0.16.0", - "commit": "c5e4af74850a616c42d39ed45b9b8568b71bf8bf" - } - ] - }, - { - "name": "srt", - "buildsystem": "cmake-ninja", - "config-opts": [ - "-DCMAKE_BUILD_TYPE=Release", - "-DENABLE_STATIC=OFF", - "-DENABLE_APPS=OFF", - "-DENABLE_LOGGING=OFF" - ], - "cleanup": [ - "/include", - "/lib/pkgconfig", - "/bin" - ], - "sources": [ - { - "type": "git", - "url": "https://github.com/Haivision/srt.git", - "tag": "v1.5.1", - "commit": "0bc3b03202b3159fc9b085b3ae6d66ec071c25d6" - } - ] - }, - { - "name": "mbedtls", - "buildsystem": "cmake-ninja", - "builddir": true, - "config-opts": [ - "-DCMAKE_BUILD_TYPE=Release", - "-DCMAKE_POSITION_INDEPENDENT_CODE=ON", - "-DUSE_SHARED_MBEDTLS_LIBRARY=ON", - "-DUSE_STATIC_MBEDTLS_LIBRARY=OFF", - "-DENABLE_TESTING=OFF", - "-DENABLE_PROGRAMS=OFF" - ], - "cleanup": [ - "/include" - ], - "sources": [ - { - "type": "git", - "url": "https://github.com/ARMmbed/mbedtls.git", - "commit": "869298bffeea13b205343361b7a7daf2b210e33d", - "tag": "v3.2.1" - } - ] - }, - { - "name": "librist", - "buildsystem":"meson", - "builddir": true, - "config-opts": [ - "-Duse_mbedtls=true", - "-Dtest=false", - "-Dbuilt_tools=false", - "-Dbuiltin_cjson=true" - ], - "cleanup": [ - "/include", - "/lib/pkgconfig" - ], - "sources": [ - { - "type": "git", - "url": "https://code.videolan.org/rist/librist.git", - "commit": "809390b3b75a259a704079d0fb4d8f1b5f7fa956" - } - ] - }, - { - "name": "aom", - "buildsystem": "cmake-ninja", - "builddir": true, - "config-opts": [ - "-DCMAKE_BUILD_TYPE=Release", - "-DBUILD_SHARED_LIBS=ON", - "-DENABLE_DOCS=OFF", - "-DENABLE_EXAMPLES=OFF", - "-DENABLE_TESTDATA=OFF", - "-DENABLE_TESTS=OFF", - "-DENABLE_TOOLS=OFF " - ], - "cleanup": [ - "/include", - "/lib/pkgconfig" - ], - "sources": [ - { - "type": "git", - "url": "https://aomedia.googlesource.com/aom.git", - "tag": "v3.6.0", - "commit": "3c65175b1972da4a1992c1dae2365b48d13f9a8d" - } - ] - }, - { - "name": "svt-av1", - "buildsystem": "cmake-ninja", - "builddir": true, - "config-opts": [ - "-DCMAKE_BUILD_TYPE=Release", - "-DBUILD_SHARED_LIBS=ON", - "-DBUILD_APPS=OFF", - "-DBUILD_DEC=ON", - "-DBUILD_ENC=ON", - "-DBUILD_TESTING=OFF" - ], - "cleanup": [ - "/include", - "/lib/pkgconfig" - ], - "sources": [ - { - "type": "git", - "url": "https://gitlab.com/AOMediaCodec/SVT-AV1.git", - "tag": "v1.4.1", - "commit": "018276d714ce65d9b586f6205ee016cbd8d5425d" - } - ] - }, - { - "name": "ffmpeg", - "config-opts": [ - "--enable-gpl", - "--enable-shared", - "--disable-static", - "--enable-gnutls", - "--disable-doc", - "--disable-programs", - "--disable-devices", - "--enable-libopus", - "--enable-libvpx", - "--enable-libvorbis", - "--enable-libx264", - "--enable-nvenc", - "--enable-libsrt", - "--enable-librist", - "--enable-libaom", - "--enable-libsvtav1" - ], - "cleanup": [ - "/share/ffmpeg" - ], - "sources": [ - { - "type": "git", - "url": "https://github.com/FFmpeg/FFmpeg.git", - "commit": "a6dc92968a325d331bb6dcf9b3b2248026cd1d6c", - "disable-shallow-clone": true - }, - { - "type": "git", - "dest": "obs-deps", - "url": "https://github.com/obsproject/obs-deps.git", - "tag": "2023-04-12", - "commit": "24e25fd83e6938cfe3cc5020230430b31ba5df59" - }, - { - "type": "shell", - "commands": [ - "patch -Np1 -i obs-deps/deps.ffmpeg/patches/FFmpeg/0001-flvdec-handle-unknown.patch", - "patch -Np1 -i obs-deps/deps.ffmpeg/patches/FFmpeg/0002-libaomenc-presets.patch" - ] - } - ] - }, - { - "name": "luajit", - "no-autogen": true, - "cleanup": [ - "/bin", - "/include", - "/lib/pkgconfig", - "*.a" - ], - "sources": [ - { - "type": "git", - "url": "https://luajit.org/git/luajit-2.0.git", - "commit": "505e2c03de35e2718eef0d2d3660712e06dadf1f", - "disable-shallow-clone": true - }, - { - "type": "shell", - "commands": [ - "sed -i 's|/usr/local|/app|' ./Makefile" - ] - } - ] - }, - { - "name": "swig", - "config-opts": [ - "--without-boost", - "--without-pcre", - "--without-alllang", - "--with-lua=/app/bin/luajit-2.1.0-beta3", - "--with-luaincl=/app/include/luajit-2.1", - "--with-python3" - ], - "cleanup": [ - "*" - ], - "sources": [ - { - "type": "archive", - "url": "https://prdownloads.sourceforge.net/swig/swig-4.0.2.tar.gz", - "sha256": "d53be9730d8d58a16bf0cbd1f8ac0c0c3e1090573168bfa151b01eb47fa906fc" - } - ] - }, - { - "name": "pipewire", - "buildsystem": "meson", - "config-opts": [ - "-Daudiotestsrc=disabled", - "-Droc=disabled", - "-Dvideotestsrc=disabled", - "-Dvolume=disabled", - "-Dvulkan=disabled", - "-Ddocs=disabled", - "-Dman=disabled", - "-Dbluez5-codec-ldac=disabled", - "-Dbluez5-codec-aptx=disabled", - "-Dlibcamera=disabled", - "-Dudevrulesdir=/app/lib/udev/rules.d/", - "-Dsession-managers=[]", - "-Dtests=disabled", - "-Dexamples=disabled", - "-Dpw-cat=disabled" - ], - "cleanup": [ - "/bin" - ], - "sources": [ - { - "type": "git", - "url": "https://github.com/pipewire/pipewire.git", - "tag": "0.3.65", - "commit": "9558a5d5e0360d8af822431c76ee858a8c7495ac" - } - ] - }, - { - "name": "ntv2", - "buildsystem": "cmake-ninja", - "builddir": true, - "config-opts": [ - "-DCMAKE_BUILD_TYPE=Release", - "-DAJA_BUILD_OPENSOURCE=ON", - "-DAJA_BUILD_APPS=OFF", - "-DAJA_INSTALL_HEADERS=ON" - ], - "cleanup": [ - "/include" - ], - "sources": [ - { - "type": "git", - "url": "https://github.com/aja-video/ntv2.git", - "tag": "v16.2-bugfix5", - "commit": "0acbac70a0b5e6509cca78cfbf69974c73c10db9" - } - ] - }, - { - "name": "jansson", - "buildsystem": "cmake-ninja", - "builddir": true, - "config-opts": [ - "-DCMAKE_BUILD_TYPE=Release", - "-DJANSSON_EXAMPLES=OFF", - "-DJANSSON_BUILD_DOCS=OFF", - "-DJANSSON_BUILD_SHARED_LIBS=ON", - "-DJANSSON_WITHOUT_TESTS=ON" - ], - "cleanup": [ - "/include", - "/lib/pkgconfig" - ], - "sources": [ - { - "type": "git", - "url": "https://github.com/akheron/jansson.git", - "tag": "v2.14", - "commit": "684e18c927e89615c2d501737e90018f4930d6c5" - } - ] - }, - { - "name": "nlohmann-json", - "buildsystem": "cmake-ninja", - "builddir": true, - "config-opts": [ - "-DCMAKE_BUILD_TYPE=Release", - "-DJSON_BuildTests=OFF" - ], - "sources": [ - { - "type": "git", - "url": "https://github.com/nlohmann/json.git", - "tag": "v3.11.2", - "commit": "bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d" - } - ] - }, - { - "name": "websocketpp", - "buildsystem": "cmake-ninja", - "builddir": true, - "config-opts": [ - "-DCMAKE_BUILD_TYPE=Release", - "-DENABLE_CPP11=ON", - "-DBUILD_EXAMPLES=OFF", - "-DBUILD_TESTS=OFF" - ], - "sources": [ - { - "type": "git", - "url": "https://github.com/zaphoyd/websocketpp.git", - "tag": "0.8.2", - "commit": "56123c87598f8b1dd471be83ca841ceae07f95ba" - } - ] - }, - { - "name": "asio", - "buildsystem": "simple", - "build-commands": [ - "mkdir -p /app/include", - "cp asio/include/asio.hpp /app/include/", - "cp -R asio/include/asio /app/include/" - ], - "sources": [ - { - "type": "git", - "url": "https://github.com/chriskohlhoff/asio.git", - "tag": "asio-1-12-1", - "commit": "b73dc1d2c0ecb9452a87c26544d7f71e24342df6" - } - ] - }, - { - "name": "cef", - "buildsystem": "cmake-ninja", - "config-opts": [ - "-DCMAKE_BUILD_TYPE=Release" - ], - "no-make-install": true, - "make-args": [ - "libcef_dll_wrapper" - ], - "build-commands": [ - "mkdir -p /app/cef/libcef_dll_wrapper", - "cp -R ./include /app/cef", - "cp -R ./Release /app/cef", - "cp -R ./Resources /app/cef", - "cp -R ./libcef_dll_wrapper/libcef_dll_wrapper.a /app/cef/libcef_dll_wrapper" - ], - "cleanup": [ - "*" - ], - "sources": [ - { - "type": "archive", - "url": "https://cdn-fastly.obsproject.com/downloads/cef_binary_5060_linux64.tar.bz2", - "sha256": "ac4e2a8ebf20700e4e36353e314f876623633dd5b474778a2548bb66bdbea11d" - } - ] - }, - { - "name": "obs", - "buildsystem": "cmake-ninja", - "builddir": true, - "config-opts": [ - "-DCMAKE_BUILD_TYPE=Release", - "-DENABLE_WAYLAND=ON", - "-DENABLE_BROWSER=ON", - "-DCEF_ROOT_DIR=/app/cef", - "-DUSE_XDG=ON", - "-DENABLE_ALSA=OFF", - "-DENABLE_PULSEAUDIO=ON", - "-DENABLE_JACK=ON", - "-DENABLE_RTMPS=ON", - "-DENABLE_VLC=OFF", - "-DENABLE_AJA=ON", - "-DENABLE_LIBFDK=ON" - ], - "secret-opts": [ - "-DRESTREAM_CLIENTID=$RESTREAM_CLIENTID", - "-DRESTREAM_HASH=$RESTREAM_HASH", - "-DTWITCH_CLIENTID=$TWITCH_CLIENTID", - "-DTWITCH_HASH=$TWITCH_HASH", - "-DYOUTUBE_CLIENTID=$YOUTUBE_CLIENTID", - "-DYOUTUBE_CLIENTID_HASH=$YOUTUBE_CLIENTID_HASH", - "-DYOUTUBE_SECRET=$YOUTUBE_SECRET", - "-DYOUTUBE_SECRET_HASH=$YOUTUBE_SECRET_HASH" - ], - "post-install": [ - "install -d /app/plugins", - "install -d /app/extensions/Plugins" - ], - "sources": [ - { - "type": "dir", - "path": "../../" - } - ] - } - ] -} diff --git a/UI/xdg-data/com.obsproject.Studio.appdata.xml.in b/UI/xdg-data/com.obsproject.Studio.appdata.xml.in index 81033ecdc..a67869806 100644 --- a/UI/xdg-data/com.obsproject.Studio.appdata.xml.in +++ b/UI/xdg-data/com.obsproject.Studio.appdata.xml.in @@ -44,6 +44,6 @@ - https://github.com/obsproject/obs-studio/blob/@GIT_HASH@/CI/flatpak/com.obsproject.Studio.json + https://github.com/obsproject/obs-studio/blob/@GIT_HASH@/build-aux/ diff --git a/build-aux/README.md b/build-aux/README.md new file mode 100644 index 000000000..2c0cedc81 --- /dev/null +++ b/build-aux/README.md @@ -0,0 +1,24 @@ +# `build-aux` folder + +This folder contains only the Flatpak manifest used to build OBS Studio. + +## OBS Studio Flatpak Manifest + +The manifest is composed of multiple files: + - The main manifest `com.obsproject.Studio.json` + - The `modules` folder which contains OBS Studio dependencies modules + +### Manifest modules + +Modules are ordered/dispatched in numbered categories following a short list of rules: +- A module must not depend on another module from the same category, so a module can only depend on modules from lower numbered categories. +- A module without dependencies must be placed in the highest numbered category in use, excluding categories meant for specific types of dependency. + +Actual categories: + - `99-`: CEF + - `90-`: Headers-only libraries that are dependencies of only OBS Studio + - `50-`: Modules that are dependencies of only OBS Studio + - `40-`: Modules that are dependencies of the `50-` category + - `30-`: FFmpeg + - `20-`: Modules that are dependencies of FFmpeg + - `10-`: Modules that are dependencies of the `20-` category diff --git a/build-aux/com.obsproject.Studio.json b/build-aux/com.obsproject.Studio.json new file mode 100644 index 000000000..394f8b2f8 --- /dev/null +++ b/build-aux/com.obsproject.Studio.json @@ -0,0 +1,105 @@ +{ + "app-id": "com.obsproject.Studio", + "runtime": "org.kde.Platform", + "runtime-version": "6.4", + "sdk": "org.kde.Sdk", + "command": "obs", + "finish-args": [ + "--socket=wayland", + "--socket=x11", + "--socket=pulseaudio", + "--device=all", + "--share=network", + "--share=ipc", + "--filesystem=xdg-run/pipewire-0", + "--filesystem=host", + "--talk-name=org.kde.StatusNotifierWatcher", + "--talk-name=org.freedesktop.Flatpak", + "--talk-name=org.freedesktop.Notifications", + "--talk-name=org.a11y.Bus", + "--own-name=org.kde.StatusNotifierItem-2-2", + "--system-talk-name=org.freedesktop.Avahi", + "--env=VST_PATH=/app/extensions/Plugins/vst" + ], + "add-extensions": { + "com.obsproject.Studio.Plugin": { + "directory": "plugins", + "subdirectories": true, + "add-ld-path": "lib", + "merge-dirs": "lib/obs-plugins;share/obs/obs-plugins", + "no-autodownload": true, + "autodelete": true + }, + "org.freedesktop.LinuxAudio.Plugins": { + "directory": "extensions/Plugins", + "version": "22.08", + "add-ld-path": "lib", + "merge-dirs": "vst", + "subdirectories": true, + "no-autodownload": true + } + }, + "cleanup": [ + "/share/man", + "*.la" + ], + "modules": [ + "modules/10-mbedtls.json", + "modules/20-aom.json", + "modules/20-librist.json", + "modules/20-nv-codec.json", + "modules/20-srt.json", + "modules/20-svt-av1.json", + "modules/20-x264.json", + "modules/30-ffmpeg.json", + "modules/40-luajit.json", + "modules/50-jansson.json", + "modules/50-ntv2.json", + "modules/50-pipewire.json", + "modules/50-swig.json", + "modules/50-v4l-utils.json", + "modules/90-asio.json", + "modules/90-nlohmann-json.json", + "modules/90-websocketpp.json", + "modules/99-cef.json", + { + "name": "obs", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DENABLE_WAYLAND=ON", + "-DENABLE_BROWSER=ON", + "-DCEF_ROOT_DIR=/app/cef", + "-DUSE_XDG=ON", + "-DENABLE_ALSA=OFF", + "-DENABLE_PULSEAUDIO=ON", + "-DENABLE_JACK=ON", + "-DENABLE_RTMPS=ON", + "-DENABLE_VLC=OFF", + "-DENABLE_AJA=ON", + "-DENABLE_LIBFDK=ON" + ], + "secret-opts": [ + "-DRESTREAM_CLIENTID=$RESTREAM_CLIENTID", + "-DRESTREAM_HASH=$RESTREAM_HASH", + "-DTWITCH_CLIENTID=$TWITCH_CLIENTID", + "-DTWITCH_HASH=$TWITCH_HASH", + "-DYOUTUBE_CLIENTID=$YOUTUBE_CLIENTID", + "-DYOUTUBE_CLIENTID_HASH=$YOUTUBE_CLIENTID_HASH", + "-DYOUTUBE_SECRET=$YOUTUBE_SECRET", + "-DYOUTUBE_SECRET_HASH=$YOUTUBE_SECRET_HASH" + ], + "post-install": [ + "install -d /app/plugins", + "install -d /app/extensions/Plugins" + ], + "sources": [ + { + "type": "dir", + "path": "../" + } + ] + } + ] +} diff --git a/build-aux/modules/10-mbedtls.json b/build-aux/modules/10-mbedtls.json new file mode 100644 index 000000000..0bf75f8c3 --- /dev/null +++ b/build-aux/modules/10-mbedtls.json @@ -0,0 +1,24 @@ +{ + "name": "mbedtls", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DCMAKE_POSITION_INDEPENDENT_CODE=ON", + "-DUSE_SHARED_MBEDTLS_LIBRARY=ON", + "-DUSE_STATIC_MBEDTLS_LIBRARY=OFF", + "-DENABLE_TESTING=OFF", + "-DENABLE_PROGRAMS=OFF" + ], + "cleanup": [ + "/include" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/ARMmbed/mbedtls.git", + "commit": "869298bffeea13b205343361b7a7daf2b210e33d", + "tag": "v3.2.1" + } + ] +} diff --git a/build-aux/modules/20-aom.json b/build-aux/modules/20-aom.json new file mode 100644 index 000000000..94f94b00d --- /dev/null +++ b/build-aux/modules/20-aom.json @@ -0,0 +1,26 @@ +{ + "name": "aom", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DBUILD_SHARED_LIBS=ON", + "-DENABLE_DOCS=OFF", + "-DENABLE_EXAMPLES=OFF", + "-DENABLE_TESTDATA=OFF", + "-DENABLE_TESTS=OFF", + "-DENABLE_TOOLS=OFF " + ], + "cleanup": [ + "/include", + "/lib/pkgconfig" + ], + "sources": [ + { + "type": "git", + "url": "https://aomedia.googlesource.com/aom.git", + "tag": "v3.6.0", + "commit": "3c65175b1972da4a1992c1dae2365b48d13f9a8d" + } + ] +} diff --git a/build-aux/modules/20-librist.json b/build-aux/modules/20-librist.json new file mode 100644 index 000000000..732827c8f --- /dev/null +++ b/build-aux/modules/20-librist.json @@ -0,0 +1,22 @@ +{ + "name": "librist", + "buildsystem": "meson", + "builddir": true, + "config-opts": [ + "-Duse_mbedtls=true", + "-Dtest=false", + "-Dbuilt_tools=false", + "-Dbuiltin_cjson=true" + ], + "cleanup": [ + "/include", + "/lib/pkgconfig" + ], + "sources": [ + { + "type": "git", + "url": "https://code.videolan.org/rist/librist.git", + "commit": "809390b3b75a259a704079d0fb4d8f1b5f7fa956" + } + ] +} diff --git a/build-aux/modules/20-nv-codec.json b/build-aux/modules/20-nv-codec.json new file mode 100644 index 000000000..b8b3fa14b --- /dev/null +++ b/build-aux/modules/20-nv-codec.json @@ -0,0 +1,18 @@ +{ + "name": "nv-codec", + "no-autogen": true, + "make-install-args": [ + "PREFIX=/app" + ], + "cleanup": [ + "*" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/FFmpeg/nv-codec-headers.git", + "tag": "n12.0.16.0", + "commit": "c5e4af74850a616c42d39ed45b9b8568b71bf8bf" + } + ] +} diff --git a/build-aux/modules/20-srt.json b/build-aux/modules/20-srt.json new file mode 100644 index 000000000..1581973a9 --- /dev/null +++ b/build-aux/modules/20-srt.json @@ -0,0 +1,23 @@ +{ + "name": "srt", + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DENABLE_STATIC=OFF", + "-DENABLE_APPS=OFF", + "-DENABLE_LOGGING=OFF" + ], + "cleanup": [ + "/include", + "/lib/pkgconfig", + "/bin" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/Haivision/srt.git", + "tag": "v1.5.1", + "commit": "0bc3b03202b3159fc9b085b3ae6d66ec071c25d6" + } + ] +} diff --git a/build-aux/modules/20-svt-av1.json b/build-aux/modules/20-svt-av1.json new file mode 100644 index 000000000..e2ad021aa --- /dev/null +++ b/build-aux/modules/20-svt-av1.json @@ -0,0 +1,25 @@ +{ + "name": "svt-av1", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DBUILD_SHARED_LIBS=ON", + "-DBUILD_APPS=OFF", + "-DBUILD_DEC=ON", + "-DBUILD_ENC=ON", + "-DBUILD_TESTING=OFF" + ], + "cleanup": [ + "/include", + "/lib/pkgconfig" + ], + "sources": [ + { + "type": "git", + "url": "https://gitlab.com/AOMediaCodec/SVT-AV1.git", + "tag": "v1.4.1", + "commit": "018276d714ce65d9b586f6205ee016cbd8d5425d" + } + ] +} diff --git a/build-aux/modules/20-x264.json b/build-aux/modules/20-x264.json new file mode 100644 index 000000000..8927b725b --- /dev/null +++ b/build-aux/modules/20-x264.json @@ -0,0 +1,18 @@ +{ + "name": "x264", + "config-opts": [ + "--disable-cli", + "--enable-shared" + ], + "cleanup": [ + "/include", + "/lib/pkgconfig" + ], + "sources": [ + { + "type": "git", + "url": "https://code.videolan.org/videolan/x264.git", + "commit": "eaa68fad9e5d201d42fde51665f2d137ae96baf0" + } + ] +} diff --git a/build-aux/modules/30-ffmpeg.json b/build-aux/modules/30-ffmpeg.json new file mode 100644 index 000000000..2f0dd4101 --- /dev/null +++ b/build-aux/modules/30-ffmpeg.json @@ -0,0 +1,46 @@ +{ + "name": "ffmpeg", + "config-opts": [ + "--enable-gpl", + "--enable-shared", + "--disable-static", + "--enable-gnutls", + "--disable-doc", + "--disable-programs", + "--disable-devices", + "--enable-libopus", + "--enable-libvpx", + "--enable-libvorbis", + "--enable-libx264", + "--enable-nvenc", + "--enable-libsrt", + "--enable-librist", + "--enable-libaom", + "--enable-libsvtav1" + ], + "cleanup": [ + "/share/ffmpeg" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/FFmpeg/FFmpeg.git", + "commit": "a6dc92968a325d331bb6dcf9b3b2248026cd1d6c", + "disable-shallow-clone": true + }, + { + "type": "git", + "dest": "obs-deps", + "url": "https://github.com/obsproject/obs-deps.git", + "tag": "2023-04-12", + "commit": "24e25fd83e6938cfe3cc5020230430b31ba5df59" + }, + { + "type": "shell", + "commands": [ + "patch -Np1 -i obs-deps/deps.ffmpeg/patches/FFmpeg/0001-flvdec-handle-unknown.patch", + "patch -Np1 -i obs-deps/deps.ffmpeg/patches/FFmpeg/0002-libaomenc-presets.patch" + ] + } + ] +} diff --git a/build-aux/modules/40-luajit.json b/build-aux/modules/40-luajit.json new file mode 100644 index 000000000..902bfb5da --- /dev/null +++ b/build-aux/modules/40-luajit.json @@ -0,0 +1,24 @@ +{ + "name": "luajit", + "no-autogen": true, + "cleanup": [ + "/bin", + "/include", + "/lib/pkgconfig", + "*.a" + ], + "sources": [ + { + "type": "git", + "url": "https://luajit.org/git/luajit-2.0.git", + "commit": "505e2c03de35e2718eef0d2d3660712e06dadf1f", + "disable-shallow-clone": true + }, + { + "type": "shell", + "commands": [ + "sed -i 's|/usr/local|/app|' ./Makefile" + ] + } + ] +} diff --git a/build-aux/modules/50-jansson.json b/build-aux/modules/50-jansson.json new file mode 100644 index 000000000..b7411250b --- /dev/null +++ b/build-aux/modules/50-jansson.json @@ -0,0 +1,24 @@ +{ + "name": "jansson", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DJANSSON_EXAMPLES=OFF", + "-DJANSSON_BUILD_DOCS=OFF", + "-DJANSSON_BUILD_SHARED_LIBS=ON", + "-DJANSSON_WITHOUT_TESTS=ON" + ], + "cleanup": [ + "/include", + "/lib/pkgconfig" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/akheron/jansson.git", + "tag": "v2.14", + "commit": "684e18c927e89615c2d501737e90018f4930d6c5" + } + ] +} diff --git a/build-aux/modules/50-ntv2.json b/build-aux/modules/50-ntv2.json new file mode 100644 index 000000000..cb1a9838f --- /dev/null +++ b/build-aux/modules/50-ntv2.json @@ -0,0 +1,22 @@ +{ + "name": "ntv2", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DAJA_BUILD_OPENSOURCE=ON", + "-DAJA_BUILD_APPS=OFF", + "-DAJA_INSTALL_HEADERS=ON" + ], + "cleanup": [ + "/include" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/aja-video/ntv2.git", + "tag": "v16.2-bugfix5", + "commit": "0acbac70a0b5e6509cca78cfbf69974c73c10db9" + } + ] +} diff --git a/build-aux/modules/50-pipewire.json b/build-aux/modules/50-pipewire.json new file mode 100644 index 000000000..5b08f9f10 --- /dev/null +++ b/build-aux/modules/50-pipewire.json @@ -0,0 +1,32 @@ +{ + "name": "pipewire", + "buildsystem": "meson", + "config-opts": [ + "-Daudiotestsrc=disabled", + "-Droc=disabled", + "-Dvideotestsrc=disabled", + "-Dvolume=disabled", + "-Dvulkan=disabled", + "-Ddocs=disabled", + "-Dman=disabled", + "-Dbluez5-codec-ldac=disabled", + "-Dbluez5-codec-aptx=disabled", + "-Dlibcamera=disabled", + "-Dudevrulesdir=/app/lib/udev/rules.d/", + "-Dsession-managers=[]", + "-Dtests=disabled", + "-Dexamples=disabled", + "-Dpw-cat=disabled" + ], + "cleanup": [ + "/bin" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/pipewire/pipewire.git", + "tag": "0.3.65", + "commit": "9558a5d5e0360d8af822431c76ee858a8c7495ac" + } + ] +} diff --git a/build-aux/modules/50-swig.json b/build-aux/modules/50-swig.json new file mode 100644 index 000000000..ef7edf105 --- /dev/null +++ b/build-aux/modules/50-swig.json @@ -0,0 +1,21 @@ +{ + "name": "swig", + "config-opts": [ + "--without-boost", + "--without-pcre", + "--without-alllang", + "--with-lua=/app/bin/luajit-2.1.0-beta3", + "--with-luaincl=/app/include/luajit-2.1", + "--with-python3" + ], + "cleanup": [ + "*" + ], + "sources": [ + { + "type": "archive", + "url": "https://prdownloads.sourceforge.net/swig/swig-4.0.2.tar.gz", + "sha256": "d53be9730d8d58a16bf0cbd1f8ac0c0c3e1090573168bfa151b01eb47fa906fc" + } + ] +} diff --git a/build-aux/modules/50-v4l-utils.json b/build-aux/modules/50-v4l-utils.json new file mode 100644 index 000000000..0348ff439 --- /dev/null +++ b/build-aux/modules/50-v4l-utils.json @@ -0,0 +1,22 @@ +{ + "name": "v4l-utils", + "config-opts": [ + "--disable-static", + "--disable-doxygen-doc", + "--disable-libdvbv5", + "--disable-v4l-utils", + "--disable-qv4l2", + "--with-udevdir=/app/lib/udev/" + ], + "cleanup": [ + "/include", + "/lib/pkgconfig" + ], + "sources": [ + { + "type": "archive", + "url": "https://linuxtv.org/downloads/v4l-utils/v4l-utils-1.22.0.tar.bz2", + "sha256": "1069e5d7909bcc563baeaadc3a5c496f0e658524c413cf7818816e37bfcea344" + } + ] +} diff --git a/build-aux/modules/90-asio.json b/build-aux/modules/90-asio.json new file mode 100644 index 000000000..1d1a0ea7a --- /dev/null +++ b/build-aux/modules/90-asio.json @@ -0,0 +1,17 @@ +{ + "name": "asio", + "buildsystem": "simple", + "build-commands": [ + "mkdir -p /app/include", + "cp asio/include/asio.hpp /app/include/", + "cp -R asio/include/asio /app/include/" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/chriskohlhoff/asio.git", + "tag": "asio-1-12-1", + "commit": "b73dc1d2c0ecb9452a87c26544d7f71e24342df6" + } + ] +} diff --git a/build-aux/modules/90-nlohmann-json.json b/build-aux/modules/90-nlohmann-json.json new file mode 100644 index 000000000..4087737bf --- /dev/null +++ b/build-aux/modules/90-nlohmann-json.json @@ -0,0 +1,17 @@ +{ + "name": "nlohmann-json", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DJSON_BuildTests=OFF" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/nlohmann/json.git", + "tag": "v3.11.2", + "commit": "bc889afb4c5bf1c0d8ee29ef35eaaf4c8bef8a5d" + } + ] +} diff --git a/build-aux/modules/90-websocketpp.json b/build-aux/modules/90-websocketpp.json new file mode 100644 index 000000000..c67b56058 --- /dev/null +++ b/build-aux/modules/90-websocketpp.json @@ -0,0 +1,19 @@ +{ + "name": "websocketpp", + "buildsystem": "cmake-ninja", + "builddir": true, + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release", + "-DENABLE_CPP11=ON", + "-DBUILD_EXAMPLES=OFF", + "-DBUILD_TESTS=OFF" + ], + "sources": [ + { + "type": "git", + "url": "https://github.com/zaphoyd/websocketpp.git", + "tag": "0.8.2", + "commit": "56123c87598f8b1dd471be83ca841ceae07f95ba" + } + ] +} diff --git a/build-aux/modules/99-cef.json b/build-aux/modules/99-cef.json new file mode 100644 index 000000000..beeadc137 --- /dev/null +++ b/build-aux/modules/99-cef.json @@ -0,0 +1,28 @@ +{ + "name": "cef", + "buildsystem": "cmake-ninja", + "config-opts": [ + "-DCMAKE_BUILD_TYPE=Release" + ], + "no-make-install": true, + "make-args": [ + "libcef_dll_wrapper" + ], + "build-commands": [ + "mkdir -p /app/cef/libcef_dll_wrapper", + "cp -R ./include /app/cef", + "cp -R ./Release /app/cef", + "cp -R ./Resources /app/cef", + "cp -R ./libcef_dll_wrapper/libcef_dll_wrapper.a /app/cef/libcef_dll_wrapper" + ], + "cleanup": [ + "*" + ], + "sources": [ + { + "type": "archive", + "url": "https://cdn-fastly.obsproject.com/downloads/cef_binary_5060_linux64.tar.bz2", + "sha256": "ac4e2a8ebf20700e4e36353e314f876623633dd5b474778a2548bb66bdbea11d" + } + ] +}