OLD | NEW |
1 # The MB (Meta-Build wrapper) design spec | 1 # The MB (Meta-Build wrapper) design spec |
2 | 2 |
3 [TOC] | 3 [TOC] |
4 | 4 |
5 ## Intro | 5 ## Intro |
6 | 6 |
7 MB is intended to address two major aspects of the GYP -> GN transition | 7 MB is intended to address two major aspects of the GYP -> GN transition |
8 for Chromium: | 8 for Chromium: |
9 | 9 |
10 1. "bot toggling" - make it so that we can easily flip a given bot | 10 1. "bot toggling" - make it so that we can easily flip a given bot |
(...skipping 20 matching lines...) Expand all Loading... |
31 | 31 |
32 ### Command line | 32 ### Command line |
33 | 33 |
34 It is structured as a single binary that supports a list of subcommands: | 34 It is structured as a single binary that supports a list of subcommands: |
35 | 35 |
36 * `mb gen -c linux_rel_bot //out/Release` | 36 * `mb gen -c linux_rel_bot //out/Release` |
37 * `mb analyze -m tryserver.chromium.linux -b linux_rel /tmp/input.json /tmp/outp
ut.json` | 37 * `mb analyze -m tryserver.chromium.linux -b linux_rel /tmp/input.json /tmp/outp
ut.json` |
38 | 38 |
39 ### Configurations | 39 ### Configurations |
40 | 40 |
41 `mb` looks in the `//tools/mb/mb_config.pyl` config file to determine whether | 41 `mb` will first look for a bot config file in a set of different locations |
42 to use GYP or GN for a particular build directory, and what set of flags | 42 (initially just in //ios/build/bots). Bot config files are JSON files that |
43 (`GYP_DEFINES` or `gn args`) to use. | 43 contain keys for 'GYP_DEFINES' (a list of strings that will be joined together |
| 44 with spaces and passed to GYP, or a dict that will be similarly converted), |
| 45 'gn_args' (a list of strings that will be joined together), and an |
| 46 'mb_type' field that says whether to use GN or GYP. Bot config files |
| 47 require the full list of settings to be given explicitly. |
| 48 |
| 49 If no mathcing bot config file is found, `mb` looks in the |
| 50 `//tools/mb/mb_config.pyl` config file to determine whether to use GYP or GN |
| 51 for a particular build directory, and what set of flags (`GYP_DEFINES` or `gn |
| 52 args`) to use. |
44 | 53 |
45 A config can either be specified directly (useful for testing) or by specifying | 54 A config can either be specified directly (useful for testing) or by specifying |
46 the master name and builder name (useful on the bots so that they do not need | 55 the master name and builder name (useful on the bots so that they do not need |
47 to specify a config directly and can be hidden from the details). | 56 to specify a config directly and can be hidden from the details). |
48 | 57 |
49 See the [user guide](user_guide.md#mb_config.pyl) for details. | 58 See the [user guide](user_guide.md#mb_config.pyl) for details. |
50 | 59 |
51 ### Handling the analyze step | 60 ### Handling the analyze step |
52 | 61 |
53 The interface to `mb analyze` is described in the | 62 The interface to `mb analyze` is described in the |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
421 * Some common flags (goma\_dir being the obvious one) may need to be | 430 * Some common flags (goma\_dir being the obvious one) may need to be |
422 specified via the user, and it's unclear how to integrate this with | 431 specified via the user, and it's unclear how to integrate this with |
423 the concept of build\_configs. | 432 the concept of build\_configs. |
424 | 433 |
425 Right now, MB has hard-coded support for a few flags (i.e., you can | 434 Right now, MB has hard-coded support for a few flags (i.e., you can |
426 pass the --goma-dir flag, and it will know to expand "${goma\_dir}" in | 435 pass the --goma-dir flag, and it will know to expand "${goma\_dir}" in |
427 the string before calling out to the tool. We may want to generalize | 436 the string before calling out to the tool. We may want to generalize |
428 this to a common key/value approach (perhaps then meeting the | 437 this to a common key/value approach (perhaps then meeting the |
429 ChromeOS non-goal, above), or we may want to keep this very strictly | 438 ChromeOS non-goal, above), or we may want to keep this very strictly |
430 limited for simplicity. | 439 limited for simplicity. |
OLD | NEW |