Patrick Georgi | 3c28d01 | 2015-02-05 23:36:32 +0100 | [diff] [blame] | 1 | Use of git submodules in coreboot |
| 2 | ================================= |
| 3 | coreboot uses git submodules to keep certain parts of the tree separate, |
| 4 | with two major use cases: |
| 5 | |
| 6 | First, we use a vendor tool by NVIDIA for systems based on their SoC |
| 7 | and since they publish it through git, we can just import it into our |
| 8 | tree using submodules. |
| 9 | |
| 10 | Second, lots of boards these days require binaries and we want to keep |
| 11 | them separate from coreboot proper to clearly delineate shiny Open Source |
| 12 | from ugly blobs. |
| 13 | Since we don't want to impose blobs on users who really don't need them, |
| 14 | that repository is only downloaded and checked out on explicit request. |
| 15 | |
| 16 | Handling submodules |
| 17 | ------------------- |
| 18 | For the most part, submodules should be automatically checked out on the |
| 19 | first execution of the coreboot Makefile. |
| 20 | |
| 21 | To manually fetch all repositories (eg. when you want to prepare the tree |
| 22 | for archiving, or to use it without network access), run |
| 23 | |
| 24 | $ git submodule update --init --checkout |
| 25 | |
| 26 | This also checks out the binaries below `3rdparty/` |
| 27 | |
| 28 | Mirroring coreboot |
| 29 | ------------------ |
| 30 | When running a coreboot mirror to checkout from, for full operation, you |
| 31 | should also mirror the blobs and nvidia-cbootimage repository, and place |
| 32 | them in the same directory as the coreboot repository mirror. |
| 33 | |
| 34 | That is, when residing in coreboot's repository, `cd ../blobs.git` |
| 35 | should move you to the blobs repository. |
| 36 | |
| 37 | With that, no matter what the URL of your coreboot repository is, the |
| 38 | git client (of a sufficiently new version) is able to pick up the other |
| 39 | repositories transparently. |
| 40 | |
| 41 | Minimum requirements |
| 42 | -------------------- |
| 43 | git needs to be able to handle relative paths to submodule repositories, |
| 44 | and it needs to know about non-automatic submodules. |
| 45 | |
| 46 | For these features, we require git version 1.7.6.1 or newer. |