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 |