Compare commits
17 Commits
rei/develo
...
docker-act
Author | SHA1 | Date | |
---|---|---|---|
|
1ba4891caf | ||
|
ba10b274fc | ||
|
a13ef3703f | ||
|
f653fde5d2 | ||
|
b86e1a7a54 | ||
|
9d1c1bfa59 | ||
|
447c761f4b | ||
|
b86fecdcb8 | ||
|
a35cd45b33 | ||
|
fc14a64e2f | ||
|
43d2dfe268 | ||
|
4339adb0af | ||
|
12d04dab19 | ||
|
4b21fb16ee | ||
|
ea04af1477 | ||
|
b7551e964f | ||
|
0f0d314c81 |
158
.github/workflows/main.yml
vendored
158
.github/workflows/main.yml
vendored
@ -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
|
||||
- name: Build
|
||||
shell: bash
|
||||
env:
|
||||
SOURCES_DIR: .
|
||||
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
|
||||
/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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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"]
|
||||
|
@ -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"}
|
||||
@ -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() {
|
||||
|
@ -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'
|
@ -38,7 +38,7 @@ nimble_port_freertos_init(TaskFunction_t host_task_fn)
|
||||
* since it has compatible prototype.
|
||||
*/
|
||||
xTaskCreate(nimble_port_ll_task_func, "ll", configMINIMAL_STACK_SIZE + 200,
|
||||
NULL, 2, &ll_task_h);
|
||||
NULL, configMAX_PRIORITIES - 1, &ll_task_h);
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -47,5 +47,5 @@ nimble_port_freertos_init(TaskFunction_t host_task_fn)
|
||||
* default queue it is just easier to make separate task which does this.
|
||||
*/
|
||||
xTaskCreate(host_task_fn, "ble", configMINIMAL_STACK_SIZE + 600,
|
||||
NULL, 1, &host_task_h);
|
||||
NULL, tskIDLE_PRIORITY + 1, &host_task_h);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user