Build Environment Effort/Split Build
From Apache OpenOffice Wiki
Requirements
- The split parts should be buildable in an acceptable time.
- The split should group modules together that have something in common.
- The boundaries between the groups should be along stable APIs where they exist code and non-code modules should be separated.
- There should be no cross build dependencies between groups (module A in group 1 depends on module B in group 2 and module C in group 2 depends on module D in group 1).
- There should be no cross runtime dependencies between groups (module A in group 1 depends on module B in group 2 and module C in group 2 depends on module D in group 1).
Proposal for a code architecture
Based on the investigations described here I have a first proposal for an architecture supporting a split build:
I made tests on two platforms (Ubuntu Jaunty, Windows with PCH). Here are some results for Linux (all data has been collect on my Toshiba Tecra M5 notebook with 2 GHz Core 2 Duo and 4 GB RAM):
extern | 00:17:29 | 00:23:07 |
ure | 00:07:26 | 00:14:30 |
odk | 00:03:13 | 00:16:34 |
common | 00:19:05 | 00:25:45 |
content | 00:01:18 | 00:04:07 |
deployment | 00:01:23 | 00:03:43 |
gui | 00:11:04 | 00:15:33 |
framework | 00:25:51 | 00:27:55 |
binfilter | 00:17:37 | 00:28:51 |
toplevel | 00:10:43 | 00:14:46 |
base | 00:07:32 | 00:13:38 |
draw | 00:11:46 | 00:07:32 |
calc | 00:14:40 | 00:23:20 |
writer | 00:19:37 | 00:18:37 |
extensions | 00:01:20 | 00:03:20 |
packimages | 00:00:53 | 00:03:08 |
postprocess | 00:00:02 | 00:00:43 |
instset | 00:05:21 | 00:10:10 |
total | 02:56:20 | 04:15:19 |
“nothing to do” | 00:02:31 | 00:21:12 (00:06:24 without PCH) |
Next steps
The huge "common" group could be split up. Here's a build dependency diagram of the modules in it: