-
Notifications
You must be signed in to change notification settings - Fork 358
build: continue DevContainer integration and binding toolchain updates #1198
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
build: continue DevContainer integration and binding toolchain updates #1198
Conversation
Enables CMAKE_EXPORT_COMPILE_COMMANDS conditionally to support LSP tools and static analysis during development without affecting release configurations.
- Update Regex in FindMono.cmake to handle distribution suffixes (e.g. +dfsg). - Fix variable initialization order to ensure versioned paths are set correctly. - Add Mono_FOUND variable to satisfy CMake's FeatureSummary requirement.
Adjust MLT_PROFILES_PATH and MLT_PRESETS_PATH to point to the 'out/' directory instead of the source root. This ensures the environment matches the build output structure and fixes test failures.
Include 'ctest' command in the build and environment setup instructions to encourage running tests before installation.
- Update package names for Noble Numbat (t64 transition). - Install full binding toolchains (Mono, JDK, scripting languages). - Configure locales and JAVA_HOME for framework unit tests and JNI. - Set 'mold' as the default system linker for build performance. - Fix 'mcs' and 'clang-format' symlinks for script compatibility.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR advances the MLT DevContainer development environment by migrating to Ubuntu 24.04, expanding multimedia and binding toolchain support, and improving build performance through the mold linker integration. The changes enable building the project with nearly all features enabled by default while maintaining compatibility with modern Debian-based distributions.
Changes:
- Migrated DevContainer base image to Ubuntu 24.04 and updated package names for t64 transition
- Added comprehensive binding toolchain support (Mono, JDK 17, Node.js, Ruby, Lua, Perl) and multimedia libraries (VA-API, VDPAU, AV1, SRT, RIST, OCIO)
- Enhanced CMake detection for Mono, added LSP support via compile_commands.json generation, and updated development workflow documentation
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| .devcontainer/Dockerfile | Migrates to Ubuntu 24.04, adds binding toolchains, multimedia libraries, locale generation, and mold linker configuration |
| cmake/FindMono.cmake | Improves regex pattern for version detection and adds FeatureSummary compatibility flags |
| CMakeLists.txt | Adds conditional compile_commands.json generation for Debug builds to support LSP tools |
| setenv | Updates profile and preset paths to reference installed locations in out/share/mlt |
| README.md | Documents ctest as part of the standard development workflow |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Change USER to USERNAME in Dockerfile for flexibility. - Translate Portuguese comments to English in FindMono.cmake.
- Add /usr/local/include/mlt-7 to CPATH for MLT++ headers. - Add /usr/local/lib to LIBRARY_PATH for linker resolution. - Fix USER instruction to use variable $USERNAME instead of literal string.
PR: Continued DevContainer Integration and Toolchain Expansion
This pull request continues the ongoing integration of the MLT development environment. The focus of this phase is to provide a near-complete dependency stack, allowing the project to be built with almost all options enabled by default.
🚀 Progress Update
🛠 Environment Modernization
OS Migration
The
.devcontainerenvironment has been migrated to Ubuntu 24.04 (Noble Numbat).Library Transitions
Package names have been updated to align with the t64 transition in newer Debian-based distributions (e.g.
libqt6core6t64).Build Performance
The mold linker is now configured as the default system linker, significantly improving compilation times across the framework.
📦 Dependency & Binding Support
The development environment now supports building the project with nearly all features enabled. Notable additions include:
🔗 Full Binding Toolchains
🎥 Hardware & Multimedia Support
⚙️ Automated Environment Enhancements
setenvscript has been aligned with the expanded toolchain.While the goal is full feature coverage, the following components are excluded from the default out-of-the-box build due to unresolved technical constraints:
PHP & SpatialAudio
Temporarily disabled due to function signature changes that require upstream code updates.
NDI
DevContainer integration is pending further investigation regarding redistribution and setup requirements.
SWIG PHP Bindings
Excluded until the PHP signature issues are resolved.
🧩 Technical Fixes & Improvements
Mono Detection
Enhanced CMake detection logic to better handle distribution-specific versioning and improve
FeatureSummaryreporting.JNI Support
Explicit definition of
JAVA_HOMEand Java include paths to ensure reliable detection of Java headers.LSP Integration
Conditional generation of
compile_commands.jsonfor Debug builds to support Language Server Protocol (LSP) tooling.Test Workflow Documentation
The
README.mdnow documentsctestas a standard step in the development workflow.✅ Summary
This PR significantly advances the DevContainer-based development experience by modernizing the base system, expanding toolchain and multimedia support, and improving build reliability and contributor ergonomics—bringing the project closer to a true "build everything by default" environment.