~/talk

Lessons Learned From Porting LibreOffice's Build System To Meson

Talkat CppNorth 2022 · 2022-07-18..07-20· [c-and-cpp]
links:none on file
slides:none on file

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

  1. 0:00Intro
  2. 0:32More than just LO
  3. 1:26Why Meson?
  4. 1:43Let's look at an example
  5. 3:46Suppose you want to use Abseil C++ containers
  6. 4:31WrapDB web service Make downloading dependencies as easy as possible but do not mandate its use
  7. 6:19LibreOffice is BIG
  8. 7:16One of the largest open source C++ code bases in the world
  9. 8:43Changing build systems is a major engineering challenge
  10. 10:03Hofstadter's law applied to change management
  11. 10:27A real world example
  12. 11:21The silver lining
  13. 11:39A real world comment
  14. 12:15Main skills needed
  15. 13:28A typical vintage build pipeline
  16. 13:58What about documentation?
  17. 14:55The most important guideline on trying to understand how existing build setups have been implemented
  18. 15:17A simple example
  19. 16:11A more complicated example
  20. 16:35What to do instead?
  21. 16:51Practical steps to take • Run Make (or equivalent) in verbose mode
  22. 17:47Same for configuration headers
  23. 18:39Example from LibreOffice
  24. 20:30Codegen fun
  25. 22:15A portability thing to consider
  26. 25:04External dependencies
  27. 25:53For LibreOffice
  28. 26:24Contrast this to many modern languages
  29. 27:10Developer training
  30. 27:29Splitting the work
  31. 28:14Automation
  32. 30:22A LibreOffice example
  33. 32:12A Godot example
  34. 34:18What have we learned?
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.