mirror of
https://github.com/cecio/USBvalve.git
synced 2026-04-22 17:01:22 +00:00
60 lines
2.7 KiB
Docker
60 lines
2.7 KiB
Docker
#
|
|
# To Build:
|
|
# docker build -t usbvalve-sdk -f Dockerfile.sdk .
|
|
#
|
|
# To Run (default: pico, SSD1306 OLED 128x32):
|
|
# docker run --rm -v $PWD:/mnt usbvalve-sdk
|
|
#
|
|
# Options (via environment variables):
|
|
# BOARD=pico|pico2 Board target (default: pico)
|
|
# OLED_HEIGHT=32|64 OLED display height (default: 32)
|
|
# PIWATCH=1 Use GC9A01 round TFT instead of SSD1306
|
|
# USE_BOOTSEL=1 Enable BOOTSEL button (disrupts Low Speed USB)
|
|
#
|
|
# Examples:
|
|
# docker run --rm -e BOARD=pico2 -v $PWD:/mnt usbvalve-sdk
|
|
# docker run --rm -e PIWATCH=1 -v $PWD:/mnt usbvalve-sdk
|
|
# docker run --rm -e BOARD=pico2 -e OLED_HEIGHT=64 -v $PWD:/mnt usbvalve-sdk
|
|
#
|
|
|
|
FROM ubuntu:22.04
|
|
WORKDIR /app
|
|
|
|
# OS setup + ARM toolchain + CMake
|
|
RUN apt-get update -y \
|
|
&& apt-get install -y git cmake gcc-arm-none-eabi libnewlib-arm-none-eabi \
|
|
build-essential libstdc++-arm-none-eabi-newlib python3 \
|
|
&& apt-get autoremove -y \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
# Clone Pico SDK
|
|
RUN cd /app \
|
|
&& git clone --depth 1 https://github.com/raspberrypi/pico-sdk.git \
|
|
&& cd pico-sdk \
|
|
&& git submodule update --init
|
|
|
|
ENV PICO_SDK_PATH=/app/pico-sdk
|
|
|
|
# Build script
|
|
RUN echo '#!/bin/bash' > /app/entrypoint.sh \
|
|
&& echo 'set -e' >> /app/entrypoint.sh \
|
|
&& echo 'BOARD="${BOARD:-pico}"' >> /app/entrypoint.sh \
|
|
&& echo 'if [ -d /mnt/USBvalve-sdk ]; then cd /mnt/USBvalve-sdk; elif [ -f /mnt/src/main.c ]; then cd /mnt; else echo "Error: mount the repo root or USBvalve-sdk dir to /mnt"; exit 1; fi' >> /app/entrypoint.sh \
|
|
&& echo 'rm -rf build && mkdir build && cd build' >> /app/entrypoint.sh \
|
|
&& echo 'CMAKE_ARGS="-DPICO_BOARD=$BOARD"' >> /app/entrypoint.sh \
|
|
&& echo '[ -n "$OLED_HEIGHT" ] && CMAKE_ARGS="$CMAKE_ARGS -DOLED_HEIGHT=$OLED_HEIGHT"' >> /app/entrypoint.sh \
|
|
&& echo '[ -n "$PIWATCH" ] && CMAKE_ARGS="$CMAKE_ARGS -DPIWATCH=$PIWATCH"' >> /app/entrypoint.sh \
|
|
&& echo '[ -n "$USE_BOOTSEL" ] && CMAKE_ARGS="$CMAKE_ARGS -DUSE_BOOTSEL=$USE_BOOTSEL"' >> /app/entrypoint.sh \
|
|
&& echo 'echo "Building for $BOARD with: $CMAKE_ARGS"' >> /app/entrypoint.sh \
|
|
&& echo 'cmake $CMAKE_ARGS ..' >> /app/entrypoint.sh \
|
|
&& echo 'make -j$(nproc)' >> /app/entrypoint.sh \
|
|
&& echo 'SUFFIX="$BOARD"' >> /app/entrypoint.sh \
|
|
&& echo '[ -n "$PIWATCH" ] && SUFFIX="${SUFFIX}-piwatch"' >> /app/entrypoint.sh \
|
|
&& echo 'mkdir -p /mnt/USBvalve_out' >> /app/entrypoint.sh \
|
|
&& echo 'cp src/USBvalve.uf2 /mnt/USBvalve_out/USBvalve-sdk-${SUFFIX}.uf2' >> /app/entrypoint.sh \
|
|
&& echo 'echo "Build complete: USBvalve_out/USBvalve-sdk-${SUFFIX}.uf2"' >> /app/entrypoint.sh \
|
|
&& chmod +x /app/entrypoint.sh
|
|
|
|
ENTRYPOINT ["/app/entrypoint.sh"]
|