Skip to content

Commit c4e076a

Browse files
committed
build(docker): add hpm image
1 parent c2942a1 commit c4e076a

3 files changed

Lines changed: 87 additions & 2 deletions

File tree

.github/workflows/docker-publish.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ jobs:
3131
context: ./esp32
3232
- image_name: docker-image-ch32-riscv
3333
context: ./ch32-riscv
34+
- image_name: docker-image-hpm
35+
context: ./hpm
3436
- image_name: docker-image-linux
3537
context: ./linux
3638
- image_name: docker-image-webots
@@ -124,6 +126,8 @@ jobs:
124126
monitor_name: xrimage-esp32
125127
- image_name: docker-image-ch32-riscv
126128
monitor_name: xrimage-ch32-riscv
129+
- image_name: docker-image-hpm
130+
monitor_name: xrimage-hpm
127131
- image_name: docker-image-linux
128132
monitor_name: xrimage-linux
129133
- image_name: docker-image-webots

README.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,21 @@
11
# Docker image
22
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fxrobot-org%2FDocker-Image.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Fxrobot-org%2FDocker-Image?ref=badge_shield)
33

4-
54
Docker image for XRobot build.
65

6+
## Images
7+
8+
- `linux`: generic Ubuntu 24.04 development base for XRobot Linux-side builds
9+
- `stm32`: STM32 build image with `arm-none-eabi` GNU Arm toolchain and `starm-clang`
10+
- `esp32`: ESP-IDF based image for ESP32 builds
11+
- `ch32-riscv`: CH32 RISC-V image with the WCH `riscv32-wch-elf` toolchain
12+
- `hpm`: HPM image with the published Linux x64 mainline GNU `riscv32-unknown-elf` toolchain from `https://github.com/Jiu-xiao/hpm-linux-gcc-release/releases/tag/v0.1.0`
13+
- `webots`: Webots and OpenCV based simulation image
14+
15+
## Publishing
16+
17+
- GHCR: `ghcr.io/xrobot-org/docker-image-<name>:main`
18+
- Docker Hub mirror: `docker.io/xrimage/xrimage-<name>:latest`
719

820
## License
9-
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fxrobot-org%2FDocker-Image.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fxrobot-org%2FDocker-Image?ref=badge_large)
21+
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fxrobot-org%2FDocker-Image.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fxrobot-org%2FDocker-Image?ref=badge_large)

hpm/Dockerfile

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
FROM ubuntu:24.04
2+
3+
ARG DEBIAN_FRONTEND=noninteractive
4+
ARG HPM_TOOLCHAIN_VERSION="v0.1.0"
5+
ARG HPM_TOOLCHAIN_ARCHIVE_BASENAME="hpm-riscv32-unknown-elf-linux-x64"
6+
ARG HPM_TOOLCHAIN_URL=""
7+
ARG HPM_TOOLCHAIN_SHA256="6a14d30ac29da5a23185db249d5f7b1f9e20bb2deb8d26302ba2baff0442f108"
8+
9+
LABEL maintainer="2592509183@qq.com" \
10+
description="Docker Image for XRobot HPM builds with the published mainline riscv32-unknown-elf GNU toolchain." \
11+
org.opencontainers.image.version="${HPM_TOOLCHAIN_VERSION}"
12+
13+
RUN apt-get update && \
14+
apt-get upgrade -y --no-install-recommends && \
15+
apt-get install -y --no-install-recommends \
16+
ca-certificates \
17+
xz-utils \
18+
git \
19+
curl \
20+
sudo \
21+
wget \
22+
zip \
23+
make \
24+
net-tools \
25+
usbutils \
26+
nano \
27+
gdb \
28+
cmake \
29+
ninja-build \
30+
file \
31+
clang-18 \
32+
clangd \
33+
clang-tidy \
34+
gcc \
35+
g++ \
36+
python3 \
37+
python3-tk \
38+
python3-venv \
39+
libgpiod-dev && \
40+
rm -rf /var/lib/apt/lists/*
41+
42+
RUN update-alternatives --install /usr/bin/clang clang /usr/bin/clang-18 100 && \
43+
update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-18 100
44+
45+
RUN mv /usr/lib/python3.12/EXTERNALLY-MANAGED /usr/lib/python3.12/EXTERNALLY-MANAGED.bk || true
46+
47+
RUN ln -sf /usr/bin/python3 /usr/bin/python && \
48+
curl -sS https://bootstrap.pypa.io/get-pip.py | python3
49+
50+
ENV XR_HPM_TOOLCHAIN_ROOT=/opt/hpm-riscv32-unknown-elf
51+
ENV PATH=${XR_HPM_TOOLCHAIN_ROOT}/bin:${PATH}
52+
53+
RUN set -eux; \
54+
toolchain_url="${HPM_TOOLCHAIN_URL:-https://github.com/Jiu-xiao/hpm-linux-gcc-release/releases/download/${HPM_TOOLCHAIN_VERSION}/${HPM_TOOLCHAIN_ARCHIVE_BASENAME}.tar.xz}"; \
55+
archive="/tmp/${HPM_TOOLCHAIN_ARCHIVE_BASENAME}.tar.xz"; \
56+
curl -L --fail --retry 3 -o "${archive}" "${toolchain_url}"; \
57+
echo "${HPM_TOOLCHAIN_SHA256} ${archive}" | sha256sum -c -; \
58+
tar -xf "${archive}" -C /opt; \
59+
rm -f "${archive}"; \
60+
mv "/opt/${HPM_TOOLCHAIN_ARCHIVE_BASENAME}" "${XR_HPM_TOOLCHAIN_ROOT}"; \
61+
test -x "${XR_HPM_TOOLCHAIN_ROOT}/bin/riscv32-unknown-elf-gcc"; \
62+
test -x "${XR_HPM_TOOLCHAIN_ROOT}/bin/riscv32-unknown-elf-g++"; \
63+
test -x "${XR_HPM_TOOLCHAIN_ROOT}/bin/riscv32-unknown-elf-gdb"; \
64+
for exe in "${XR_HPM_TOOLCHAIN_ROOT}"/bin/*; do \
65+
ln -sf "$exe" "/usr/bin/$(basename "$exe")"; \
66+
done; \
67+
riscv32-unknown-elf-gcc --version | head -n 1; \
68+
riscv32-unknown-elf-g++ --version | head -n 1; \
69+
riscv32-unknown-elf-gdb --version | head -n 1

0 commit comments

Comments
 (0)