summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/main.yml160
-rw-r--r--doc/buildWithDocker.md8
-rw-r--r--docker/Dockerfile5
-rwxr-xr-xdocker/build.sh16
-rwxr-xr-xdocker/post_build.sh.in10
5 files changed, 32 insertions, 167 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 09425a08..c043439c 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -20,155 +20,31 @@ on:
# Steps to run for the Workflow
jobs:
build:
-
- # Run these steps on Ubuntu
runs-on: ubuntu-latest
-
+ container:
+ image: jf002/infinitime-build
steps:
-
- #########################################################################################
- # Download and Cache Dependencies
-
- - name: Install cmake
- uses: lukka/get-cmake@v3.18.3
-
- - name: Check cache for Embedded Arm Toolchain arm-none-eabi-gcc
- id: cache-toolchain
- uses: actions/cache@v2
- env:
- cache-name: cache-toolchain-9-2020-q2
- with:
- path: ${{ runner.temp }}/arm-none-eabi
- key: ${{ runner.os }}-build-${{ env.cache-name }}
- restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}
-
- - name: Install Embedded Arm Toolchain arm-none-eabi-gcc
- if: steps.cache-toolchain.outputs.cache-hit != 'true' # Install toolchain if not found in cache
- uses: fiam/arm-none-eabi-gcc@v1.0.4
- with:
- # GNU Embedded Toolchain for Arm release name, in the V-YYYY-qZ format (e.g. "9-2019-q4")
- release: 9-2020-q2
- # Directory to unpack GCC to. Defaults to a temporary directory.
- directory: ${{ runner.temp }}/arm-none-eabi
-
- - name: Check cache for nRF5 SDK
- id: cache-nrf5sdk
- uses: actions/cache@v2
- env:
- cache-name: cache-nrf5sdk
- with:
- path: ${{ runner.temp }}/nrf5_sdk
- key: ${{ runner.os }}-build-${{ env.cache-name }}
- restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}
-
- - name: Install nRF5 SDK
- if: steps.cache-nrf5sdk.outputs.cache-hit != 'true' # Install SDK if not found in cache
- run: |
- cd ${{ runner.temp }}
- curl https://developer.nordicsemi.com/nRF5_SDK/nRF5_SDK_v15.x.x/nRF5_SDK_15.3.0_59ac345.zip -o nrf5_sdk.zip
- unzip nrf5_sdk.zip
- mv nRF5_SDK_15.3.0_59ac345 nrf5_sdk
-
- - name: Check cache for MCUBoot
- id: cache-mcuboot
- uses: actions/cache@v2
- env:
- cache-name: cache-mcuboot
- with:
- path: ${{ runner.temp }}/mcuboot
- key: ${{ runner.os }}-build-${{ env.cache-name }}
- restore-keys: ${{ runner.os }}-build-${{ env.cache-name }}
-
- - name: Install MCUBoot
- if: steps.cache-mcuboot.outputs.cache-hit != 'true' # Install MCUBoot if not found in cache
- run: |
- cd ${{ runner.temp }}
- git clone --branch v1.7.2 https://github.com/mcu-tools/mcuboot
-
- - name: Install imgtool dependencies
- run: |
- pip3 install --user -r ${{ runner.temp }}/mcuboot/scripts/requirements.txt
-
- - name: Install adafruit-nrfutil
- run: |
- pip3 install --user wheel
- pip3 install --user setuptools
- pip3 install --user adafruit-nrfutil
-
- - name: Install lv_font_conv
- run:
- npm i -g lv_font_conv@1.5.2
-
- #########################################################################################
- # Checkout
-
+ - name: Workaround permission issues
+ run: git config --global --add safe.directory "$GITHUB_WORKSPACE"
- name: Checkout source files
uses: actions/checkout@v2
with:
submodules: recursive
-
- - name: Show files
- run: set ; pwd ; ls -l
-
- #########################################################################################
- # CMake
-
- - name: CMake
- run: |
- mkdir -p build
- cd build
- cmake -G Ninja -DARM_NONE_EABI_TOOLCHAIN_PATH=${{ runner.temp }}/arm-none-eabi -DNRF5_SDK_PATH=${{ runner.temp }}/nrf5_sdk -DUSE_OPENOCD=1 -DBUILD_DFU=1 ../
-
- #########################################################################################
- # Make and Upload DFU Package
- # pinetime-mcuboot-app.img must be flashed at address 0x8000 in the internal flash memory with OpenOCD:
- # program image.bin 0x8000
-
- # For Debugging Builds: Remove "make" option "-j" for clearer output. Add "--trace" to see details.
- # For Faster Builds: Add "make" option "-j"
-
- - name: Make pinetime-mcuboot-app
- run: |
- cmake --build build --target pinetime-mcuboot-app
-
- - name: Unzip DFU package
- run: |
- # Unzip the package because Upload Artifact will zip up the files
- unzip build/src/pinetime-mcuboot-app-dfu*.zip -d build/src/pinetime-mcuboot-app-dfu
-
- - name: Upload DFU package
+ - name: Build
+ shell: bash
+ env:
+ SOURCES_DIR: .
+ run: |
+ /opt/build.sh all
+ - name: Upload DFU artifacts
uses: actions/upload-artifact@v2
with:
- name: pinetime-mcuboot-app-dfu
- path: build/src/pinetime-mcuboot-app-dfu/*
-
- #########################################################################################
- # Make and Upload Standalone Firmware
-
- - name: Make pinetime-app
- run: |
- cmake --build build --target pinetime-app
-
- - name: Upload standalone firmware
+ name: InfiniTime DFU file
+ path: |
+ ./build/output/pinetime-mcuboot-app-dfu-*.zip
+ - name: Upload MCUBoot image artifacts
uses: actions/upload-artifact@v2
with:
- name: pinetime-app.out
- path: build/src/pinetime-app*.out
-
- #########################################################################################
- # Make but don't Upload the Recovery Firmware to be sure it builds correctly
-
- - name: Make pinetime-recovery
- run: |
- cmake --build build --target pinetime-recovery
-
- #########################################################################################
- # Finish
-
- - name: Find output
- run: |
- find . -name "pinetime-app.*" -ls
- find . -name "pinetime-mcuboot-app.*" -ls
-
-# Embedded Arm Toolchain and nRF5 SDK will only be cached if the build succeeds.
-# So make sure that the first build always succeeds, e.g. comment out the "Make" step.
+ name: InfiniTime MCUBoot image file
+ path: |
+ ./build/output/pinetime-mcuboot-app-image-*.bin
diff --git a/doc/buildWithDocker.md b/doc/buildWithDocker.md
index a57893c9..cfd054fb 100644
--- a/doc/buildWithDocker.md
+++ b/doc/buildWithDocker.md
@@ -44,19 +44,19 @@ docker run --rm -it -v $(pwd):/sources --user 1234:1234 infinitime-build
## Using the image from Docker Hub
-The image is available via Docker Hub for both the amd64 and arm64v8 architectures at [pfeerick/infinitime-build](https://hub.docker.com/r/pfeerick/infinitime-build).
+The image is available via Docker Hub for both the amd64 and arm64v8 architectures at [jf002/infinitime-build](https://hub.docker.com/repository/docker/jf002/infinitime-build).
It can be pulled (downloaded) using the following command:
```bash
-docker pull pfeerick/infinitime-build
+docker pull jf002/infinitime-build
```
The default `latest` tag *should* automatically identify the correct image architecture, but if for some reason Docker does not, you can specify it manually:
-* For AMD64 (x86_64) systems: `docker pull pfeerick/infinitime-build:amd64`
+* For AMD64 (x86_64) systems: `docker pull jf002/infinitime-build:amd64`
-* For ARM64v8 (ARM64/aarch64) systems: `docker pull pfeerick/infinitime-build:arm64v8`
+* For ARM64v8 (ARM64/aarch64) systems: `docker pull jf002/infinitime-build:arm64v8`
## Build the image
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 10bed55f..f2d187d0 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -44,10 +44,5 @@ RUN bash -c "source /opt/build.sh; GetNrfSdk;"
# McuBoot
RUN bash -c "source /opt/build.sh; GetMcuBoot;"
-ARG PUID=1000
-ARG PGID=1000
-RUN groupadd --system --gid $PGID infinitime && useradd --system --uid $PUID --gid $PGID infinitime
-
-USER infinitime:infinitime
ENV SOURCES_DIR /sources
CMD ["/opt/build.sh"]
diff --git a/docker/build.sh b/docker/build.sh
index d86e7c21..878d9ec6 100755
--- a/docker/build.sh
+++ b/docker/build.sh
@@ -9,7 +9,7 @@ set -e
export TOOLS_DIR="${TOOLS_DIR:=/opt}"
export SOURCES_DIR="${SOURCES_DIR:=/sources}"
export BUILD_DIR="${BUILD_DIR:=$SOURCES_DIR/build}"
-export OUTPUT_DIR="${OUTPUT_DIR:=$BUILD_DIR/output}"
+export OUTPUT_DIR="${OUTPUT_DIR:=$SOURCES_DIR/build/output}"
export BUILD_TYPE=${BUILD_TYPE:=Release}
export GCC_ARM_VER=${GCC_ARM_VER:="gcc-arm-none-eabi-9-2020-q2-update"}
@@ -22,7 +22,7 @@ main() {
local target="$1"
mkdir -p "$TOOLS_DIR"
-
+
[[ ! -d "$TOOLS_DIR/$GCC_ARM_VER" ]] && GetGcc
[[ ! -d "$TOOLS_DIR/$NRF_SDK_VER" ]] && GetNrfSdk
[[ ! -d "$TOOLS_DIR/mcuboot" ]] && GetMcuBoot
@@ -31,7 +31,7 @@ main() {
CmakeGenerate
CmakeBuild $target
- BUILD_RESULT=$?
+ BUILD_RESULT=$?
if [ "$DISABLE_POSTBUILD" != "true" -a "$BUILD_RESULT" == 0 ]; then
source "$BUILD_DIR/post_build.sh"
fi
@@ -54,18 +54,14 @@ GetNrfSdk() {
}
CmakeGenerate() {
- # We can swap the CD and trailing SOURCES_DIR for -B and -S respectively
- # once we go to newer CMake (Ubuntu 18.10 gives us CMake 3.10)
- cd "$BUILD_DIR"
-
cmake -G "Unix Makefiles" \
+ -S "$SOURCES_DIR" \
+ -B "$BUILD_DIR" \
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
-DUSE_OPENOCD=1 \
-DARM_NONE_EABI_TOOLCHAIN_PATH="$TOOLS_DIR/$GCC_ARM_VER" \
-DNRF5_SDK_PATH="$TOOLS_DIR/$NRF_SDK_VER" \
- -DBUILD_DFU=1 \
- "$SOURCES_DIR"
- cmake -L -N .
+ -DBUILD_DFU=1
}
CmakeBuild() {
diff --git a/docker/post_build.sh.in b/docker/post_build.sh.in
index db6e7a94..8c94471a 100755
--- a/docker/post_build.sh.in
+++ b/docker/post_build.sh.in
@@ -15,12 +15,10 @@ cp "$BUILD_DIR/src/pinetime-mcuboot-app-dfu-$PROJECT_VERSION.zip" "$OUTPUT_DIR/p
cp "$BUILD_DIR/src/pinetime-mcuboot-recovery-loader-image-$PROJECT_VERSION.bin" "$OUTPUT_DIR/pinetime-mcuboot-recovery-loader-image-$PROJECT_VERSION.bin"
cp "$BUILD_DIR/src/pinetime-mcuboot-recovery-loader-dfu-$PROJECT_VERSION.zip" "$OUTPUT_DIR/pinetime-mcuboot-recovery-loader-dfu-$PROJECT_VERSION.zip"
-
mkdir -p "$OUTPUT_DIR/src"
-cd "$BUILD_DIR"
-cp src/*.bin "$OUTPUT_DIR/src"
-cp src/*.hex "$OUTPUT_DIR/src"
-cp src/*.out "$OUTPUT_DIR/src"
-cp src/*.map "$OUTPUT_DIR/src"
+cp $BUILD_DIR/src/*.bin "$OUTPUT_DIR/src/"
+cp $BUILD_DIR/src/*.hex "$OUTPUT_DIR/src/"
+cp $BUILD_DIR/src/*.out "$OUTPUT_DIR/src/"
+cp $BUILD_DIR/src/*.map "$OUTPUT_DIR/src/"
ls -RUv1 "$OUTPUT_DIR" | sed 's;^\([^/]\); \1;g' \ No newline at end of file