| 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 28 matching lines...) Expand all Loading... |
| 39 ### Configurations | 39 ### Configurations |
| 40 | 40 |
| 41 `mb` will first look for a bot config file in a set of different locations | 41 `mb` will first look for a bot config file in a set of different locations |
| 42 (initially just in //ios/build/bots). Bot config files are JSON files that | 42 (initially just in //ios/build/bots). Bot config files are JSON files that |
| 43 contain keys for 'GYP_DEFINES' (a list of strings that will be joined together | 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), | 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 | 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 | 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. | 47 require the full list of settings to be given explicitly. |
| 48 | 48 |
| 49 If no mathcing bot config file is found, `mb` looks in the | 49 If no matching 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 | 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 | 51 for a particular build directory, and what set of flags (`GYP_DEFINES` or `gn |
| 52 args`) to use. | 52 args`) to use. |
| 53 | 53 |
| 54 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 |
| 55 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 |
| 56 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). |
| 57 | 57 |
| 58 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. |
| 59 | 59 |
| (...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 | 417 |
| 418 * MB is not intended at this time to be something developers use frequently, | 418 * MB is not intended at this time to be something developers use frequently, |
| 419 or to add a lot of features to. We hope to be able to get rid of it once | 419 or to add a lot of features to. We hope to be able to get rid of it once |
| 420 the GYP->GN migration is done, and so we should not add things for | 420 the GYP->GN migration is done, and so we should not add things for |
| 421 developers that can't easily be added to GN itself. | 421 developers that can't easily be added to GN itself. |
| 422 | 422 |
| 423 * MB is not intended to replace the | 423 * MB is not intended to replace the |
| 424 [CR tool](https://code.google.com/p/chromium/wiki/CRUserManual). Not | 424 [CR tool](https://code.google.com/p/chromium/wiki/CRUserManual). Not |
| 425 only is it only intended to replace the gyp\_chromium part of `'gclient | 425 only is it only intended to replace the gyp\_chromium part of `'gclient |
| 426 runhooks'`, it is not really meant as a developer-facing tool. | 426 runhooks'`, it is not really meant as a developer-facing tool. |
| 427 | |
| 428 ### Open issues | |
| 429 | |
| 430 * Some common flags (goma\_dir being the obvious one) may need to be | |
| 431 specified via the user, and it's unclear how to integrate this with | |
| 432 the concept of build\_configs. | |
| 433 | |
| 434 Right now, MB has hard-coded support for a few flags (i.e., you can | |
| 435 pass the --goma-dir flag, and it will know to expand "${goma\_dir}" in | |
| 436 the string before calling out to the tool. We may want to generalize | |
| 437 this to a common key/value approach (perhaps then meeting the | |
| 438 ChromeOS non-goal, above), or we may want to keep this very strictly | |
| 439 limited for simplicity. | |
| OLD | NEW |