| # What is this? |
| |
| This is Project Shodan, a project to research the fusion of novel hardware and |
| software architectures to produce a low-power, ambient AI core. For more |
| information, see our internal site at |
| [sites/cerebrahardware/shodan](https://sites.google.com/corp/google.com/cerebrahardware/shodan). |
| |
| ## Developing in this Codebase |
| |
| We've stored our code in Gerrit, and like the Android developers before us, we |
| use `repo` to manage the projects in our Gerrit repositories. |
| |
| To get started, first make sure you have a Git login for all our projects |
| by going to [googlesource.com/new-password](https://www.googlesource.com/new-password) |
| and pasting the provided script into a terminal. |
| |
| Now you need to pull down a copy of the `repo` |
| tool from our public facing sites and add it to your path: |
| |
| ``` |
| mkdir -p bin |
| export PATH=$PATH:$HOME/bin |
| curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo |
| chmod a+x ~/bin/repo |
| ``` |
| |
| Make sure you've initialized git with your name and email address, and have |
| configured it properly for fetching the sources: |
| |
| ``` |
| git config --global user.name "Your Name" |
| git config --global user.email "you@example.com" |
| ``` |
| |
| Once you've done this, you're actually ready to check out the sources. Make a |
| new directory where you'd like it to live, and initialize `repo` with the |
| current release branch. |
| |
| ``` |
| repo init -u https://spacebeaker.googlesource.com/manifest |
| repo sync -j$(nproc) |
| ``` |
| |
| ## Repository Layout |
| |
| Our layout is pretty simple: |
| |
| #### build/ |
| |
| Contains build scripts for the whole tree. This is effectively just an |
| orchestration layer to make building the whole shebang easier. Each subtree may |
| have its own build systems and have their own ways of building. |
| |
| #### cicd/ |
| |
| Contains continuous integration scripts and tooling for Jenkins, our CI/CD tool. |
| |
| #### docs/ |
| |
| Lots of extra documentation (we hope) about how the repo is laid out, how the |
| build system works, code reviews, licensing, etc. |
| |
| #### manifest/ |
| |
| The repo manifest used to glue all the git repositories together. |
| |
| ## More Information |
| |
| - [Information on how to use repo](https://go/repo) |