137 lines
3.2 KiB
Markdown
137 lines
3.2 KiB
Markdown
# How to Build IodeOs with Docker
|
||
|
||
## Why Docker?
|
||
|
||
Using Docker ensures all required dependencies are pre-installed and properly configured.
|
||
You don’t need to install complex toolchains or modify your host system.
|
||
|
||
---
|
||
|
||
## Requirements
|
||
|
||
### Software
|
||
|
||
- **Docker**
|
||
Install Docker using the official script:
|
||
|
||
```bash
|
||
curl -fsSL https://get.docker.com | sh
|
||
```
|
||
|
||
- **Git**
|
||
[Install Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
|
||
|
||
- **Repo tool**
|
||
Install the Google `repo` tool:
|
||
|
||
```bash
|
||
mkdir -p ~/bin
|
||
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
|
||
chmod a+x ~/bin/repo
|
||
export PATH=~/bin:$PATH
|
||
```
|
||
|
||
### Hardware
|
||
|
||
- **Disk:** \~300 GB (source code and build artifacts). SSD recommended
|
||
|
||
- **CPU:** 64-bit processor (Intel i5/i7 or AMD Ryzen 5/7 and above recommended, 8 cores or more preferred)
|
||
|
||
- **Memory:**
|
||
|
||
- Minimum: 16 GB RAM
|
||
- Bare minimum: 8 GB RAM (with swap; builds will be very slow and unstable)
|
||
|
||
---
|
||
|
||
## Usage
|
||
|
||
1. **Clone this repo** to your local machine and navigate into it:
|
||
|
||
```bash
|
||
git clone https://git.os-source.co/IodeOs/build.git
|
||
cd build
|
||
```
|
||
|
||
2. **Initialize and sync the repo** into the `IodeOs/build` checkout directory:
|
||
|
||
```bash
|
||
repo init -u https://git.os-source.co/IodeOs/manifests_android -b v6-staging --git-lfs
|
||
```
|
||
|
||
3. **Sync the repo** (this may take a while):
|
||
|
||
```bash
|
||
repo sync
|
||
```
|
||
|
||
> 💡 **Tip:** You can speed up and stabilize the sync process with additional options:
|
||
>
|
||
> ```bash
|
||
> repo sync -c -j$(nproc --all) --force-sync --no-clone-bundle --no-tags -f
|
||
> ```
|
||
>
|
||
> - `-c` : Sync only the current manifest branch
|
||
> - `-j$(nproc --all)` : Use all available CPU cores for parallel sync
|
||
> - `--force-sync` : Discard local changes and ensure a clean state
|
||
> - `--no-clone-bundle` : Skip using potentially outdated pre-packaged bundles
|
||
> - `--no-tags` : Avoid downloading all Git tags (saves time/space)
|
||
> - `-f` : Continue syncing other projects even if one fails
|
||
|
||
4. **Start the build with Docker**:
|
||
|
||
```bash
|
||
docker compose up -d
|
||
```
|
||
|
||
5. **Check the build logs and wait**:
|
||
|
||
```bash
|
||
docker logs -f repo_build_iode
|
||
```
|
||
|
||
6. Once the "build completed successfully" message appears in the logs (this typically takes 90–240 minutes, depending on your hardware and
|
||
the number of threads used), navigate to the "out/target/product/brax3" folder to find your OTA package or fastboot images.
|
||
|
||
```bash
|
||
ls -la out/target/product/brax3 | grep lineage_brax3-ota.zip
|
||
-rw-r--r-- 1 root root 1424506068 Sep 30 18:34 lineage_brax3-ota.zip
|
||
```
|
||
|
||
---
|
||
|
||
## Troubleshooting
|
||
|
||
### Repo tool not found
|
||
|
||
If you see:
|
||
|
||
```
|
||
command not found: repo
|
||
```
|
||
|
||
Make sure `~/bin` is in your `PATH`:
|
||
|
||
```bash
|
||
export PATH=~/bin:$PATH
|
||
```
|
||
|
||
Add it to your `~/.bashrc` or `~/.zshrc` to make the change permanent.
|
||
|
||
---
|
||
|
||
### Repo sync is very slow or stalls
|
||
|
||
- Use more jobs with `-j<number>` (e.g. `repo sync -j16`) if you have a fast CPU and good network.
|
||
- If syncing fails, retry with:
|
||
|
||
```bash
|
||
repo sync --force-sync --no-clone-bundle --no-tags
|
||
```
|
||
|
||
---
|
||
|
||
## Licensing
|
||
|
||
IodeOs/build is licensed under the **Apache License, Version 2.0**.
|
||
See [LICENSE](LICENSE) for the full license text.
|