Scripts to build and package dependencies for OBS on CI
lib | git commit | version |
---|---|---|
aom | Google Source | 3.2.0 |
ffmpeg | ffmpeg.org | 4.4.1 |
libfreetype | Sourceforge | 2.10.4 |
libjansson | Petri Lehtinen | 2.13.1 |
libluajit | GitHub | 2.1 |
libmbedtls | GitHub | 2.24.0 |
libogg | GitHub | 1.3.5 |
libopus | GitHub | 1.3.1-93-gdfd6c88a |
libpng | Sourceforge | 1.6.37 |
librist | 0b1aaf9 | Master branch |
librnnoise | 90ec41e | Master branch |
libsrt | GitHub | 1.4.1 |
libtheora | xiph.org | 1.1.1 |
libvorbis | xiph.org | 1.3.7 |
libvpx | GitHub | 1.10.0 |
libx264 | GitHub | r3059 |
ntv2 | GitHub | 16.1 |
Qt | Qt.io | 5.15.2 |
- libpng is patched for Apple M1 compatibility
- mbedtls is patched to enable
pthread
functionality - SpeexDSP is patched to allow macOS 10.13 compatibility
- Qt is patched to cross-compile ARM64 on x86_64 hosts
- Qt is patched to fix https://bugreports.qt.io/browse/QTBUG-74606
- Qt is patched to fix https://bugreports.qt.io/browse/QTBUG-90370
- Qt is patched to fix https://bugreports.qt.io/browse/QTBUG-97855
- Homebrew (https://brew.sh)
- Checkout
obs-deps
from GitHub:
git clone https://github.com/obsproject/obs-deps.git
- Enter the
obs-deps
directory - Run
bash ./CI/build-deps-macos.sh
to build main dependencies - Run
bash ./CI/build-qt-macos.sh
to build Qt dependency
- Create a destination directory for the dependencies (e.g.
obs-deps
) - Unpack the dependencies into this directory (e.g. via
XZ_OPT=-T0 tar -xf macos-deps-VERSION-universal.tar.xz -C obs-deps
- replaceVERSION
with the downloaded/desired version) - Repeat the same for the Qt dependencies
- IMPORTANT: Remove the quarantine attribute from the downloaded Qt dependencies by running
xattr -r -d com.apple.quarantine obs-deps
- Use
obs-deps
as part ofCMAKE_PREFIX_PATH
when runningcmake
for OBS:
cmake -DCMAKE_PREFIX_PATH="some_other_path;obs-deps" [..]
- Add/edit seperate build scripts for every dependency in the
CI/[OPERATING SYSTEM/
directory - For new dependencies:
- Create the
sha256sum
of the downloaded dependency archive - Add the dependency version as
[DEPENDENCY_NAME]_VERSION
and the downloaded archive hash as[DEPENDENCY_NAME]_HASH
to the GitHub actions workflow in.github/workflows/main.yml
as well as the main build script inCI/build-deps-macos.sh
.
- Create the
- For existing dependencies:
- Always update the
sha256sum
of the updated dependency archive as well as the version
- Always update the
- Patches need to be placed either in the patches directory (if applied for all OS) or inside the patches directory for a specific OS
- Generate patches by running
diff -Naur [OLD_FILE] [NEW_FILE]
- Fixup paths in the patch file to a path relative from the dependency's source directory, e.g
./src/FILE.c
(the./
is important)
- Generate patches by running