Build Environment Effort/Split Build

From Apache OpenOffice Wiki
Jump to: navigation, search

Edit.png

Build Environment Effort

Quick Navigation

About this template


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:

Splitbuild architecture.png

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:

Common dependencies.png

Personal tools