aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/buildWithDocker.md64
1 files changed, 35 insertions, 29 deletions
diff --git a/doc/buildWithDocker.md b/doc/buildWithDocker.md
index 670590a6..9d4db707 100644
--- a/doc/buildWithDocker.md
+++ b/doc/buildWithDocker.md
@@ -15,46 +15,37 @@ Based on Ubuntu 22.04 with the following build dependencies:
Before building, local repository must be fully initialized.
-```
+```sh
git clone https://github.com/InfiniTimeOrg/InfiniTime.git
cd InfiniTime
git submodule update --init
```
-## Run a container to build the project
-
-The `infinitime-build` image contains all the dependencies you need.
-The default `CMD` will compile sources found in `/sources`, so you need only mount your code.
-
-Before continuing, make sure you first build the image as indicated in the [Build the image](#build-the-image) section, or check the [Using the image from Docker Hub](#using-the-image-from-docker-hub) section if you prefer to use a pre-made image.
+## Provision the image
-This example will build the firmware, generate the MCUBoot image and generate the DFU file.
-For cloning the repo, see [these instructions](../doc/buildAndProgram.md#clone-the-repo). Outputs will be written to **<project_root>/build/output**:
+Before continuing, the build image needs to be either build locally or pulled
+from Docker Hub, as described in the two sections below:
-```bash
-cd <project_root> # e.g. cd ./work/Pinetime
-docker run --rm -it -v ${PWD}:/sources --user $(id -u):$(id -g) infinitime-build
-```
+### Build the image
-By default, the container runs as `root`, which is not convenient as all the files generated by the build will also belong to `root`.
-The parameter `--user` overrides that default behavior.
-The command above will run as your current user.
+You can build the image yourself if you like!
-If you only want to build a single CMake target, you can pass it in as the first parameter to the build script.
-This means calling the script explicitly as it will override the `CMD`.
-Here's an example for `pinetime-app`:
+The following commands must be run from the root of the project. This operation
+will take some time but, when done, a new image named `infinitime-build` is
+available.
-```bash
-docker run --rm -it -v ${PWD}:/sources --user $(id -u):$(id -g) infinitime-build /opt/build.sh pinetime-app
+```sh
+docker build -t infinitime-build ./docker
```
-## Using the image from Docker Hub
+### Pull the image from Docker Hub
-The image is available via Docker Hub for both the amd64 and arm64v8 architectures at [infinitime/infinitime-build](https://hub.docker.com/repository/docker/infinitime/infinitime-build).
+The image is available via Docker Hub for both the amd64 and arm64v8 architectures at
+[infinitime/infinitime-build](https://hub.docker.com/repository/docker/infinitime/infinitime-build).
You can run it using the following command:
-```bash
+```sh
docker run --rm -it -v ${PWD}:/sources --user $(id -u):$(id -g) infinitime/infinitime-build
```
@@ -64,12 +55,27 @@ The default `latest` tag *should* automatically identify the correct image archi
- For ARM64v8 (ARM64/aarch64) systems: `docker pull --platform linux/arm64 infinitime/infinitime-build`
-## Build the image
+## Run a container to build the project
-You can build the image yourself if you like!
+The `infinitime-build` image contains all the dependencies you need.
+The default `CMD` will compile sources found in `/sources`, so you need only mount your code.
-The following commands must be run from the root of the project. This operation will take some time but, when done, a new image named *infinitime-build* is available.
+This example will build the firmware, generate the MCUBoot image and generate the DFU file.
+For cloning the repo, see [these instructions](../doc/buildAndProgram.md#clone-the-repo). Outputs will be written to **<project_root>/build/output**:
-```bash
-docker build -t infinitime-build ./docker
+```sh
+cd <project_root> # e.g. cd ./work/Pinetime
+docker run --rm -it -v ${PWD}:/sources --user $(id -u):$(id -g) infinitime-build
+```
+
+By default, the container runs as `root`, which is not convenient as all the files generated by the build will also belong to `root`.
+The parameter `--user` overrides that default behavior.
+The command above will run as your current user.
+
+If you only want to build a single CMake target, you can pass it in as the first parameter to the build script.
+This means calling the script explicitly as it will override the `CMD`.
+Here's an example for `pinetime-app`:
+
+```sh
+docker run --rm -it -v ${PWD}:/sources --user $(id -u):$(id -g) infinitime-build /opt/build.sh pinetime-app
```