| OLD | NEW |
| (Empty) |
| 1 Contributing to the Chrome infra codebase | |
| 2 ========================================= | |
| 3 | |
| 4 This document explains how to contribute to the Chrome infrastructure codebase. | |
| 5 If you want to contribute to the Chromium browser, you're in the wrong place. | |
| 6 See | |
| 7 [http://dev.chromium.org/getting-involved](http://dev.chromium.org/getting-invol
ved) | |
| 8 instead. You can find more information on the Chrome infrastructure | |
| 9 [here](http://dev.chromium.org/infra). | |
| 10 | |
| 11 Checking out the code | |
| 12 --------------------- | |
| 13 If you're reading this file, you're probably involved in the Chromium project | |
| 14 already. If this is not the case, you might want to read | |
| 15 [this page](http://dev.chromium.org/developers/how-tos/get-the-code) | |
| 16 to get some background information. In particular, depot_tools needs to be | |
| 17 installed by following instructions | |
| 18 [here](http://dev.chromium.org/developers/how-tos/install-depot-tools). | |
| 19 | |
| 20 The proper way to check out this repository is (assuming you have depot_tools | |
| 21 somewhere in your path) to run: | |
| 22 | |
| 23 mkdir chrome_infra # or whatever name you please | |
| 24 cd chrome_infra | |
| 25 fetch infra | |
| 26 | |
| 27 This will check out the base repository (infra/) and its dependencies. | |
| 28 | |
| 29 | |
| 30 Bootstrapping Dependencies | |
| 31 -------------------------- | |
| 32 (See `bootstrap/README.md` for more details). | |
| 33 | |
| 34 Manually create a bootstrap virtualenv environment by running: | |
| 35 | |
| 36 `./bootstrap/bootstrap.py --deps_file bootstrap/deps.pyl` | |
| 37 | |
| 38 This is done for you automatically by `gclient sync` (or `gclient runhooks`). | |
| 39 | |
| 40 | |
| 41 Invoking tools | |
| 42 -------------- | |
| 43 | |
| 44 Mixing modules and scripts in the same hierarchy can sometimes be a pain in | |
| 45 Python, because it usually requires updating the Python path. The goal for | |
| 46 infra/ is to be able to check out the repository and be able to run code right | |
| 47 away, without setting up anything. The adopted solution is to use __main__.py | |
| 48 files everywhere. | |
| 49 | |
| 50 Example: `python -m infra.services.lkgr_finder` will run the lkgr_finder script. | |
| 51 | |
| 52 To make things easier, a convenience script is located at root level. This will | |
| 53 do the same thing: `run.py infra.services.lkgr_finder`. It also provides some | |
| 54 additional goodness, like listing all available tools (when invoked without any | |
| 55 arguments), and allowing for autocompletion. | |
| 56 | |
| 57 If you want run.py to auto-complete, just run: | |
| 58 | |
| 59 # BEGIN = ZSH ONLY | |
| 60 autoload -Uz bashcompinit | |
| 61 bashcompinit | |
| 62 # END = ZSH ONLY | |
| 63 | |
| 64 eval "$(/path/to/infra/ENV/bin/register-python-argcomplete run.py)" | |
| 65 eval "$(/path/to/infra/ENV/bin/register-python-argcomplete test.py)" | |
| 66 | |
| 67 And that's it. You may want to put that in your .bashrc somewhere. | |
| 68 | |
| 69 When debugging, one may prefer to invoke scripts directly without going through | |
| 70 a wrapper layer. Doing this from the bash prompt: | |
| 71 | |
| 72 $ source /path/to/infra/misc/testenv.bashrc | |
| 73 | |
| 74 ... will modify the shell environment to match what test.py does. After that, | |
| 75 scripts can be invoked directly from the shell: | |
| 76 | |
| 77 $ /path/to/infra/appengine_module/test_results/test/datastorefile_test.py | |
| 78 | |
| 79 AppEngine | |
| 80 --------- | |
| 81 Infra.git hosts several google appengine projects. In order to support | |
| 82 ease of testing and pylint all of the python code for these projects | |
| 83 is stored in one shared python package "appengine_module". | |
| 84 | |
| 85 In order to interface well with dev_appserver.py and appcfg.py individual | |
| 86 directories exist for the appengine projects under "appengine_apps". Symlinks | |
| 87 exist from those directories back into appengine_module to expose the necessary | |
| 88 parts of the appengine_module package to run the app in question. | |
| 89 | |
| 90 The 'appengine' directory holds the as-of-yet fully converted Appengine apps. | |
| 91 All of those should be split into appengine_apps and appengine_module pieces | |
| 92 and appengine_module should be renamed to 'appengine'. See crbug.com/407734. | |
| OLD | NEW |