Skip to content

Conversation

@oedmilsonfernandes
Copy link
Contributor

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 .devcontainer environment 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

  • Mono
  • JDK 17
  • Node.js
  • Ruby
  • Lua
  • Perl

🎥 Hardware & Multimedia Support

  • VA-API / VDPAU
  • AV1 (SVT-AV1, dav1d)
  • SRT
  • RIST
  • OpenColorIO (OCIO)

⚙️ Automated Environment Enhancements

  • The setenv script has been aligned with the expanded toolchain.
  • Locale generation for English and German is now included to support the full framework unit test suite.

⚠️ Current Build Exceptions

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 FeatureSummary reporting.

  • JNI Support
    Explicit definition of JAVA_HOME and Java include paths to ensure reliable detection of Java headers.

  • LSP Integration
    Conditional generation of compile_commands.json for Debug builds to support Language Server Protocol (LSP) tooling.

  • Test Workflow Documentation
    The README.md now documents ctest as 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.

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.
@ddennedy ddennedy requested a review from Copilot January 16, 2026 22:20
Copy link
Contributor

Copilot AI left a 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.
@ddennedy ddennedy merged commit 836a70d into mltframework:master Jan 17, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants