Lessons Learned From Porting LibreOffice's Build System To Meson
summary
Port of LibreOffice’s build moves a 5.8M+ line C++ tree off bespoke GNU Make onto Meson/Ninja by scraping verbose compiler invocations to reproduce flags, reimplementing code generators as Python to avoid native build-time binaries, and onboarding dependencies via wrapdb (about 18 external dependencies needed to build core on Windows). Surprises include multiple XML parsers (yes, awk appears) and subtle undefined-behavior bugs that only surface after switching; result compiles and needs iterative debugging and polishing rather than instant drop-in replacement.
AI-written summary · about
chapters (34)
- 0:00Intro
- 0:32More than just LO
- 1:26Why Meson?
- 1:43Let's look at an example
- 3:46Suppose you want to use Abseil C++ containers
- 4:31WrapDB web service Make downloading dependencies as easy as possible but do not mandate its use
- 6:19LibreOffice is BIG
- 7:16One of the largest open source C++ code bases in the world
- 8:43Changing build systems is a major engineering challenge
- 10:03Hofstadter's law applied to change management
- 10:27A real world example
- 11:21The silver lining
- 11:39A real world comment
- 12:15Main skills needed
- 13:28A typical vintage build pipeline
- 13:58What about documentation?
- 14:55The most important guideline on trying to understand how existing build setups have been implemented
- 15:17A simple example
- 16:11A more complicated example
- 16:35What to do instead?
- 16:51Practical steps to take • Run Make (or equivalent) in verbose mode
- 17:47Same for configuration headers
- 18:39Example from LibreOffice
- 20:30Codegen fun
- 22:15A portability thing to consider
- 25:04External dependencies
- 25:53For LibreOffice
- 26:24Contrast this to many modern languages
- 27:10Developer training
- 27:29Splitting the work
- 28:14Automation
- 30:22A LibreOffice example
- 32:12A Godot example
- 34:18What have we learned?
related talks
33mBehind the Scenes of a C++ Build System
41mDesigning a modern build system and dependency manager, how hard can it be?
01h 34mThings I Learnt While Trying to Avoid Becoming a CMake Expert
21mBuilding Portable C++ Packages: The Curse of Abundance
26mC++ Modules Myth Busting
01h 07mBuilding C++ Modules
01h 04mKeynote: Learn Programming, then Learn how to Be a Programmer
01h 08mC++ MythBusters Strike 2
