mirror of
https://github.com/armel/uv-k1-k5v3-firmware-custom.git
synced 2026-10-02 03:15:37 +00:00
Fix Dockerfile and backup Dockerfile alternatives
This commit is contained in:
1 parent
11a91e0cb9
commit
5ffb5d2376
3 files changed
+120
-44
No files matched your search
+31
-44
@@ -1,51 +1,38 @@
|
|||||||
# syntax=docker/dockerfile:1.6
|
FROM mcr.microsoft.com/devcontainers/python:3.10-bookworm
|
||||||
FROM debian:bookworm-slim
|
|
||||||
|
|
||||||
ARG DEBIAN_FRONTEND=noninteractive
|
# ---------------------------------------------
|
||||||
ARG TARGETARCH
|
# Base build tools
|
||||||
ARG ARM_GCC_VERSION=13.3.rel1
|
# ---------------------------------------------
|
||||||
|
|
||||||
# Install minimal runtime build deps (keep it small: no build-essential, no git, no python)
|
|
||||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
ca-certificates bash cmake ninja-build \
|
build-essential cmake ninja-build python3 curl xz-utils ca-certificates \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
# Install ARM toolchain depending on container architecture
|
# ---------------------------------------------
|
||||||
# - amd64/arm64: download official Arm tarball (glibc); remove curl/xz afterwards
|
# Install ARM GNU Toolchain (host autodetect)
|
||||||
# - arm (arm/v7): use Debian packages (no official tarball)
|
# Works with or without TARGETARCH/BuildKit
|
||||||
RUN set -eux; \
|
# ---------------------------------------------
|
||||||
case "${TARGETARCH}" in \
|
ARG ARM_GCC_VERSION=13.3.rel1
|
||||||
amd64) \
|
ARG TARGETARCH # may be unset under legacy builder
|
||||||
apt-get update && apt-get install -y --no-install-recommends curl xz-utils; \
|
|
||||||
URL="https://developer.arm.com/-/media/Files/downloads/gnu/${ARM_GCC_VERSION}/binrel/arm-gnu-toolchain-${ARM_GCC_VERSION}-x86_64-arm-none-eabi.tar.xz"; \
|
|
||||||
curl -L "$URL" -o /tmp/gcc.tar.xz; \
|
|
||||||
mkdir -p /opt; tar -xJf /tmp/gcc.tar.xz -C /opt; rm -f /tmp/gcc.tar.xz; \
|
|
||||||
ln -s /opt/arm-gnu-toolchain-${ARM_GCC_VERSION}-*/bin/* /usr/local/bin/; \
|
|
||||||
apt-get purge -y curl xz-utils && apt-get autoremove -y; \
|
|
||||||
rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man; \
|
|
||||||
;; \
|
|
||||||
arm64) \
|
|
||||||
apt-get update && apt-get install -y --no-install-recommends curl xz-utils; \
|
|
||||||
URL="https://developer.arm.com/-/media/Files/downloads/gnu/${ARM_GCC_VERSION}/binrel/arm-gnu-toolchain-${ARM_GCC_VERSION}-aarch64-arm-none-eabi.tar.xz"; \
|
|
||||||
curl -L "$URL" -o /tmp/gcc.tar.xz; \
|
|
||||||
mkdir -p /opt; tar -xJf /tmp/gcc.tar.xz -C /opt; rm -f /tmp/gcc.tar.xz; \
|
|
||||||
ln -s /opt/arm-gnu-toolchain-${ARM_GCC_VERSION}-*/bin/* /usr/local/bin/; \
|
|
||||||
apt-get purge -y curl xz-utils && apt-get autoremove -y; \
|
|
||||||
rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man; \
|
|
||||||
;; \
|
|
||||||
arm) \
|
|
||||||
apt-get update && apt-get install -y --no-install-recommends \
|
|
||||||
gcc-arm-none-eabi binutils-arm-none-eabi gdb-multiarch \
|
|
||||||
&& rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man; \
|
|
||||||
;; \
|
|
||||||
*) echo "Unsupported TARGETARCH=${TARGETARCH}"; exit 1; \
|
|
||||||
esac
|
|
||||||
|
|
||||||
# Optional: trim docs/examples inside the Arm toolchain to save a few MB
|
RUN set -e; \
|
||||||
RUN set -eux; \
|
# Derive base arch: prefer TARGETARCH if provided, fallback to uname -m
|
||||||
if ls /opt/arm-gnu-toolchain-* >/dev/null 2>&1; then \
|
BASE_ARCH="${TARGETARCH:-}"; \
|
||||||
find /opt/arm-gnu-toolchain-* -type d \( -name doc -o -name docs -o -name man -o -name info -o -name share \) -prune -exec rm -rf {} + || true; \
|
if [ -z "$BASE_ARCH" ]; then BASE_ARCH="$(uname -m)"; fi; \
|
||||||
fi
|
case "$BASE_ARCH" in \
|
||||||
|
amd64|x86_64) HOSTARCH="x86_64" ;; \
|
||||||
|
arm64|aarch64) HOSTARCH="aarch64" ;; \
|
||||||
|
*) HOSTARCH="x86_64" ;; \
|
||||||
|
esac; \
|
||||||
|
TARBALL="arm-gnu-toolchain-${ARM_GCC_VERSION}-${HOSTARCH}-arm-none-eabi.tar.xz"; \
|
||||||
|
URL="https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/${ARM_GCC_VERSION}/binrel/${TARBALL}"; \
|
||||||
|
echo "Downloading ${URL}"; \
|
||||||
|
curl -fL -O "${URL}"; \
|
||||||
|
tar -xf "${TARBALL}"; \
|
||||||
|
rm "${TARBALL}"; \
|
||||||
|
DIR="$(ls -d arm-gnu-toolchain-${ARM_GCC_VERSION}-*-arm-none-eabi)"; \
|
||||||
|
mv "${DIR}" /opt/toolchain
|
||||||
|
|
||||||
|
# Toolchain in PATH
|
||||||
|
ENV PATH="/opt/toolchain/bin:${PATH}"
|
||||||
|
|
||||||
WORKDIR /src
|
WORKDIR /src
|
||||||
CMD ["bash"]
|
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
FROM mcr.microsoft.com/devcontainers/python:3.10-bookworm
|
||||||
|
|
||||||
|
# ---------------------------------------------
|
||||||
|
# Base build tools
|
||||||
|
# ---------------------------------------------
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
build-essential cmake ninja-build python3 curl xz-utils ca-certificates \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# ---------------------------------------------
|
||||||
|
# Install ARM GNU Toolchain (host autodetect)
|
||||||
|
# Works with or without TARGETARCH/BuildKit
|
||||||
|
# ---------------------------------------------
|
||||||
|
ARG ARM_GCC_VERSION=13.3.rel1
|
||||||
|
ARG TARGETARCH # may be unset under legacy builder
|
||||||
|
|
||||||
|
RUN set -e; \
|
||||||
|
# Derive base arch: prefer TARGETARCH if provided, fallback to uname -m
|
||||||
|
BASE_ARCH="${TARGETARCH:-}"; \
|
||||||
|
if [ -z "$BASE_ARCH" ]; then BASE_ARCH="$(uname -m)"; fi; \
|
||||||
|
case "$BASE_ARCH" in \
|
||||||
|
amd64|x86_64) HOSTARCH="x86_64" ;; \
|
||||||
|
arm64|aarch64) HOSTARCH="aarch64" ;; \
|
||||||
|
*) HOSTARCH="x86_64" ;; \
|
||||||
|
esac; \
|
||||||
|
TARBALL="arm-gnu-toolchain-${ARM_GCC_VERSION}-${HOSTARCH}-arm-none-eabi.tar.xz"; \
|
||||||
|
URL="https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu/${ARM_GCC_VERSION}/binrel/${TARBALL}"; \
|
||||||
|
echo "Downloading ${URL}"; \
|
||||||
|
curl -fL -O "${URL}"; \
|
||||||
|
tar -xf "${TARBALL}"; \
|
||||||
|
rm "${TARBALL}"; \
|
||||||
|
DIR="$(ls -d arm-gnu-toolchain-${ARM_GCC_VERSION}-*-arm-none-eabi)"; \
|
||||||
|
mv "${DIR}" /opt/toolchain
|
||||||
|
|
||||||
|
# Toolchain in PATH
|
||||||
|
ENV PATH="/opt/toolchain/bin:${PATH}"
|
||||||
|
|
||||||
|
WORKDIR /src
|
||||||
@@ -0,0 +1,51 @@
|
|||||||
|
# syntax=docker/dockerfile:1.6
|
||||||
|
FROM debian:bookworm-slim
|
||||||
|
|
||||||
|
ARG DEBIAN_FRONTEND=noninteractive
|
||||||
|
ARG TARGETARCH
|
||||||
|
ARG ARM_GCC_VERSION=13.3.rel1
|
||||||
|
|
||||||
|
# Install minimal runtime build deps (keep it small: no build-essential, no git, no python)
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
ca-certificates bash cmake ninja-build \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Install ARM toolchain depending on container architecture
|
||||||
|
# - amd64/arm64: download official Arm tarball (glibc); remove curl/xz afterwards
|
||||||
|
# - arm (arm/v7): use Debian packages (no official tarball)
|
||||||
|
RUN set -eux; \
|
||||||
|
case "${TARGETARCH}" in \
|
||||||
|
amd64) \
|
||||||
|
apt-get update && apt-get install -y --no-install-recommends curl xz-utils; \
|
||||||
|
URL="https://developer.arm.com/-/media/Files/downloads/gnu/${ARM_GCC_VERSION}/binrel/arm-gnu-toolchain-${ARM_GCC_VERSION}-x86_64-arm-none-eabi.tar.xz"; \
|
||||||
|
curl -L "$URL" -o /tmp/gcc.tar.xz; \
|
||||||
|
mkdir -p /opt; tar -xJf /tmp/gcc.tar.xz -C /opt; rm -f /tmp/gcc.tar.xz; \
|
||||||
|
ln -s /opt/arm-gnu-toolchain-${ARM_GCC_VERSION}-*/bin/* /usr/local/bin/; \
|
||||||
|
apt-get purge -y curl xz-utils && apt-get autoremove -y; \
|
||||||
|
rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man; \
|
||||||
|
;; \
|
||||||
|
arm64) \
|
||||||
|
apt-get update && apt-get install -y --no-install-recommends curl xz-utils; \
|
||||||
|
URL="https://developer.arm.com/-/media/Files/downloads/gnu/${ARM_GCC_VERSION}/binrel/arm-gnu-toolchain-${ARM_GCC_VERSION}-aarch64-arm-none-eabi.tar.xz"; \
|
||||||
|
curl -L "$URL" -o /tmp/gcc.tar.xz; \
|
||||||
|
mkdir -p /opt; tar -xJf /tmp/gcc.tar.xz -C /opt; rm -f /tmp/gcc.tar.xz; \
|
||||||
|
ln -s /opt/arm-gnu-toolchain-${ARM_GCC_VERSION}-*/bin/* /usr/local/bin/; \
|
||||||
|
apt-get purge -y curl xz-utils && apt-get autoremove -y; \
|
||||||
|
rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man; \
|
||||||
|
;; \
|
||||||
|
arm) \
|
||||||
|
apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
gcc-arm-none-eabi binutils-arm-none-eabi gdb-multiarch \
|
||||||
|
&& rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man; \
|
||||||
|
;; \
|
||||||
|
*) echo "Unsupported TARGETARCH=${TARGETARCH}"; exit 1; \
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Optional: trim docs/examples inside the Arm toolchain to save a few MB
|
||||||
|
RUN set -eux; \
|
||||||
|
if ls /opt/arm-gnu-toolchain-* >/dev/null 2>&1; then \
|
||||||
|
find /opt/arm-gnu-toolchain-* -type d \( -name doc -o -name docs -o -name man -o -name info -o -name share \) -prune -exec rm -rf {} + || true; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
WORKDIR /src
|
||||||
|
CMD ["bash"]
|
||||||
Reference in new issue
Block a user