Repository navigation
Conversation
xSTUDIO had no automated way to verify that the tree still builds on
current Linux distros. This adds a Docker-based compile gate so every
push proves Ubuntu 24.04 and Rocky 9 still configure and link cleanly.
Infrastructure:
- ci/linux/: Docker deps+compile recipes
- .github/workflows/build-compile.yml: run on every push
- GHCR push of deps images: reuse Qt/ffmpeg/etc across runs
- .dockerignore: keep the repo-root build context small
Build / toolchain patches:
- CMakeLists.txt + *CMakeLists (utility, global_store, …): link
stdc++fs only on GCC/Clang < 9. Modern libstdc++ already has
std::filesystem
- python/CMakeLists.txt: copy the pure-Python package instead of
pip --prefix. Debian/Ubuntu pip lands in dist-packages, not the
site-packages path install() expects, and can wipe the pybind .so
- embedded_python.cpp: fix LINUX PYTHONHOME. two-parent walk from
multiarch libpython yields /usr/lib, which is not a valid prefix
and breaks CPython ("sys has no attribute stdout")
- openimageio_metadata.cpp / openimageio.cpp: include fmt/ostream.h
(and half.h) before OIIO. fmt 8 + C++20 errors on
fallback_formatter<std::string>
- colour_pipeline.hpp: using make_pre_draw_gpu_hook. GCC 13
-Woverloaded-virtual hides the base overload
- helper_ui.hpp: using JSONTreeModel::index. Same overloaded-virtual
issue for QModelIndex overloads
- marker.hpp / playhead_actor.cpp: drop std::move on Uuid::generate(). Moving from a prvalue is wrong and tripped newer compilers
- conform_manager_actor.cpp: std::advance instead of std::next(it, n). List iterators are not random-access
- ffmpeg.cpp / media_metadata_hud.cpp: give Imath defaults an explicit
zero value.
- ffmpeg_encode.py: raw-string regex \# is not a valid escape in
modern Python regex literals
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
The .github path was gitignored, so build-compile.yml never entered the tree or remote. Stop ignoring .github and add the push-triggered Ubuntu/Rocky compile workflow. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Drop just, drive Linux deps via build-push-action with a registry buildcache, rename compile→build, and split macOS into scripts/build-deps and build-xstudio like Linux. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Rename 00-build-tools/10-build-xstudio to build-tools/build-xstudio, and remove the stray ci/linux/build-*.sh helpers that were not used by CI. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Enable BUILD_TESTING in CI, add run-tests scripts (skip python_tests), and let build.yml own parallelism instead of script-side defaults. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
…find Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
…d-virtual Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Cache object files via Actions Cache keyed by ref (and Linux deps tag); compile Linux with docker run + sccache volume, and install automake on macOS for vcpkg python3. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Unquoted PowerShell & and split quoted run broke workflow parsing. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
CMake rejects INTERFACE includes under CMAKE_SOURCE_DIR when Qt lives in .ci-cache/. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Match macOS/Windows so hit rates show even when the build fails. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Root-owned cache files blocked actions/cache from saving the archive. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Rename ambiguous loop variable; embed debug info so sccache can cache MSVC objects. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Stats are already printed by the dedicated workflow step. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Host --show-stats starts a fresh daemon; dump container stats to a file for the workflow step. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
windows-latest ships VS 2026 / MSVC 14.51, which breaks Qt 6.5.3. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Blackhart
force-pushed
the
ci/build-checks
branch
4 times, most recently
from
October 30, 2026 11:11
3503978 to
ee633d6
Compare
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Blackhart
force-pushed
the
ci/build-checks
branch
from
October 30, 2026 11:24
b6f899c to
fd6d0fd
Compare
Reuse the same image when deps recipes are unchanged, instead of last-write-wins mutable distro tags. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
…s images Use a cached toolchain image on GHCR, install ports via the shared NuGet feed, and keep distro-specific triplets for Ubuntu and Rocky. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Allow git on host-mounted vcpkg inside the container, and remove yasm from the Rocky toolchain image (not in the distro repos). Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
vcpkg needs Mono to use the GitHub Packages binary cache on Linux; drop curl on Rocky where curl-minimal is already installed. Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
…n/Ubuntu Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
…installers Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
Blackhart
force-pushed
the
ci/build-checks
branch
2 times, most recently
from
October 30, 2026 15:55
b117356 to
07651b0
Compare
Signed-off-by: Thomas Manceau <manceau.thomas19@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Linked issues
No issues (Technical improvement)
Summarize your change.
This PR adds a GitHub Actions workflow that builds xSTUDIO on three platforms:
On each platform the job installs dependencies, then builds the project.
Unit tests are left out of CI for now (
BUILD_TESTING=OFF): several tests still fail or time out (especially on Windows, and some on Linux). We can re-add a ctest step once those suites are cleaned up.The PR also includes a few CMake and source fixes needed to compile with newer GCC on the Linux images and windows.
How Each OS Builds (and What Gets Cached)
Linux (Ubuntu 24.04 and Rocky Linux 9)
Linux builds run inside Docker containers based on Ubuntu 24.04 or Rocky Linux 9:
macOS (Apple Silicon)
The macOS build runs on the GitHub Actions runner (macos-latest).
Windows (x64, Visual Studio 2022)
The Windows build runs on the GitHub Actions runner (windows-2022).
What the Organization Needs to Know
Describe the reason for the change.
xSTUDIO targets Linux, macOS, and Windows. Compiling each pull request on those platforms before merge makes it easier to catch platform-specific build issues early, rather than discovering them later in the release cycle.
Describe what you have tested and on which operating system.
Verified via the new GitHub Actions workflow (build check,
BUILD_TESTING=OFF):ubuntu-latestmacos-latestwindows-2022)Add a list of changes, and note any that might need special attention during the review.
Alongside the CI work, this PR includes a few patches so the build can complete on each platform, plus a couple of runtime fixes.
Two of the fixes are Python-related (tested on Linux; review welcome on impact for macOS / Windows and whether this is the right approach):
python/CMakeLists.txt(install layout): on non-Windows,pip install --prefix=…could put the pure-Python package underdist-packages(typical on Debian/Ubuntu) instead oflib/pythonX.Y/site-packages, where the rest of the build expects it. The step now copies the package into thatsite-packageslocation. Windows is unchanged and still usespip install. Worth confirming this copy approach is acceptable on macOS too (same non-Windows branch).src/embedded_python/src/embedded_python.cpp(runtime, non-Windows): on Debian/Ubuntu,libpythonoften lives under/usr/lib/<triplet>/. Walking two parents from that path produced an invalidPYTHONHOME, and the embedded interpreter could fail at startup (module 'sys' has no attribute 'stdout'). The code now setsPYTHONHOMEonly when the library sits directly underlib/lib64, keeps the existing macOS app-bundle (Contents/Frameworks) path, and honoursXSTUDIO_PYTHONHOME(as Windows already did). Windows uses a separate code path and is untouched aside from that shared idea of an override env var on Unix.Unit tests are not run in CI yet (
BUILD_TESTING=OFF). Some dependencies used do not match what the docs recommend (for example, some tests needs FFmpeg 8+), and some tests still fail or time out on Windows and/or Linux.This PR also does not publish release binaries. Before CI ships installers or archives, we should agree how to handle FFmpeg: some builds/codecs are GPL, and that choice needs a clear project decision.