| 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 |