Compare commits

...

17 Commits

Author SHA1 Message Date
Jean-François Milants
1ba4891caf Tentative : Fix artifact path 2022-05-14 23:04:54 +02:00
Jean-François Milants
ba10b274fc Tentative 3 : workaround permissions issues in main github workflow 2022-05-14 22:59:15 +02:00
Jean-François Milants
a13ef3703f Tentative 3 : workaround permissions issues in main github workflow 2022-05-14 22:55:13 +02:00
Jean-François Milants
f653fde5d2 Tentative 2 : workaround permissions issues in main github workflow 2022-05-14 22:46:37 +02:00
Jean-François Milants
b86e1a7a54 Tentative : workaround permissions issues in main github workflow 2022-05-14 22:40:44 +02:00
Jean-François Milants
9d1c1bfa59 Merge branch 'develop' into docker-actions
# Conflicts:
#	.github/workflows/main.yml
#	docker/Dockerfile
2022-05-14 21:56:03 +02:00
Jean-François Milants
447c761f4b Fix path to build artifacts in main github action workflow 2022-05-14 21:04:55 +02:00
Jean-François Milants
b86fecdcb8 Duplicating the Dockerfile was not needed! It builds correctly on dev computer using the following command line : docker run --rm -it -v ${PWD}:/sources -u $(id -u ${USER}):$(id -g ${USER}) jf002/infinitime-build. 2022-05-10 20:38:42 +02:00
Jean-François Milants
a35cd45b33 Duplicate the Dockerfiles: 1 for everyone and 1 for github action. The 2nd is needed because github actions do not support the USER instruction. I published the images in my docker account and edited the documentation accordingly 2022-05-07 21:42:13 +02:00
Jean-François Milants
fc14a64e2f Fix MCUBoot image file in action yml file. 2022-03-20 21:59:24 +01:00
Jean-François Milants
43d2dfe268 Split artifacts in 2 steps to (hopefully) get them in 2 separate files instead of a single .zip file. 2022-03-20 21:53:22 +01:00
Jean-François Milants
4339adb0af Fix output filename in actions yml file. 2022-03-20 21:44:58 +01:00
Jean-François Milants
12d04dab19 Fix path in post_build.sh 2022-03-20 21:38:41 +01:00
Jean-François Milants
4b21fb16ee Fix OUTPUT_DIR in build script. 2022-03-20 21:08:14 +01:00
Jean-François Milants
ea04af1477 Fix build script. 2022-03-20 20:56:02 +01:00
Jean-François Milants
b7551e964f Fix image name. 2022-03-20 20:42:22 +01:00
Jean-François Milants
0f0d314c81 CI with Github Action : use the infinitime-build docker container inside the Github Action job. 2022-03-20 20:38:56 +01:00
6 changed files with 32 additions and 167 deletions

View File

@ -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

View File

@ -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

View File

@ -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"]

View File

@ -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() {

View File

@ -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'

View File

@ -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);
}