-
Notifications
You must be signed in to change notification settings - Fork 2
/
Dockerfile
134 lines (111 loc) · 3.87 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# syntax=docker/dockerfile:1
FROM ubuntu:22.04 AS base
ARG SOURCE_DATE_EPOCH
ARG DEBIAN_FRONTEND=noninteractive
RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \
--mount=type=cache,target=/var/lib/apt,sharing=locked \
rm -f /etc/apt/apt.conf.d/docker-clean; \
echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache && \
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
apt-get update && apt-get install --no-install-recommends -y \
bc \
bison \
build-essential \
ca-certificates \
coccinelle \
curl \
device-tree-compiler \
dfu-util \
efitools \
flex \
gdisk \
git \
graphviz \
imagemagick \
liblz4-tool \
libgnutls28-dev \
libguestfs-tools \
libncurses-dev \
libpython3-dev \
libsdl2-dev \
libssl-dev \
lz4 \
lzma \
lzma-alone \
openssl \
pkg-config \
python3 \
python3-asteval \
python3-coverage \
python3-filelock \
python3-pkg-resources \
python3-pycryptodome \
python3-pyelftools \
python3-pytest \
python3-pytest-xdist \
python3-sphinxcontrib.apidoc \
python3-sphinx-rtd-theme \
python3-subunit \
python3-testtools \
python3-virtualenv \
swig \
uuid-dev \
&& rm -rf /var/lib/apt/lists/*
FROM base AS u-boot-downloader
ARG SOURCE_DATE_EPOCH
ARG U_BOOT_VERSION=v2024.07
ARG U_BOOT_SOURCE=https://source.denx.de/u-boot/u-boot/-/archive/${U_BOOT_VERSION}/u-boot-${U_BOOT_VERSION}.tar.gz
ARG U_BOOT_PATCHES_DIR=./patches
RUN mkdir -p /u-boot/src && \
mkdir -p /u-boot/patches && \
curl -L ${U_BOOT_SOURCE} | tar -xz -C /u-boot/src --strip-components=1
COPY $U_BOOT_PATCHES_DIR/* /u-boot/patches/
RUN for patch in /u-boot/patches/*.patch; do \
patch -d /u-boot/src -p1 < $patch; \
done
FROM base AS rkbin-downloader
ARG SOURCE_DATE_EPOCH
ARG RKBIN_SOURCE=https://github.com/rockchip-linux/rkbin/archive/refs/heads/master.tar.gz
RUN mkdir -p /src && \
mkdir -p /rkbin && \
curl -L ${RKBIN_SOURCE} | tar -xz -C /src --strip-components=1 && \
cp /src/bin/rk35/$(ls -1 /src/bin/rk35 | grep -E 'rk3588_ddr_lp4_2112MHz_lp5_2400MHz_v[0-9.]+.bin' | tail -n 1) /rkbin/tpl.bin && \
cp /src/bin/rk35/$(ls -1 /src/bin/rk35 | grep -E 'rk3588_bl31_v[0-9.]+.elf' | tail -n 1) /rkbin/bl31.bin
FROM base AS u-boot-builder
ARG SOURCE_DATE_EPOCH
COPY --from=u-boot-downloader /u-boot/src /u-boot/src
COPY --from=rkbin-downloader /rkbin /rkbin
ARG U_BOOT_VERSION=v2024.07
ARG BOARD=orangepi5
ARG NAME=u-boot-${U_BOOT_VERSION}-${BOARD}-spi
ARG DEFCONFIG=orangepi-5-rk3588s
ENV ROCKCHIP_TPL=/rkbin/tpl.bin
ENV BL31=/rkbin/bl31.bin
ENV ARCH=arm64
WORKDIR /u-boot/src
RUN --mount=type=cache,target=/u-boot/build \
make O=/u-boot/build -j$(nproc) ${DEFCONFIG}_defconfig && \
make O=/u-boot/build -j$(nproc) HOSTLDLIBS_mkimage="-lssl -lcrypto"
WORKDIR /u-boot
RUN --mount=type=cache,target=/u-boot/build \
mkdir -p out && \
cp -r build/u-boot-rockchip-spi.bin out/${NAME}.bin
FROM scratch AS u-boot
ARG SOURCE_DATE_EPOCH
ARG U_BOOT_VERSION=v2024.07
ARG BOARD=orangepi5
ARG IMAGE_NAME="${BOARD}-u-boot-${U_BOOT_VERSION}"
ARG IMAGE_TITLE="Orange Pi 5 U-Boot ${U_BOOT_VERSION}"
ARG IMAGE_DESCRIPTION="U-Boot ${U_BOOT_VERSION}} for Orange Pi 5"
ARG IMAGE_SOURCE="https://github.com/schneid-l/u-boot-orangepi5"
ARG IMAGE_AUTHORS="Louis S. <[email protected]>"
ARG IMAGE_VENDOR="Denx Software Engineering"
ARG IMAGE_VERSION=$U_BOOT_VERSION
LABEL org.opencontainers.image.name=$IMAGE_NAME
LABEL org.opencontainers.image.title=$IMAGE_TITLE
LABEL org.opencontainers.image.description=$IMAGE_DESCRIPTION
LABEL org.opencontainers.image.source=$IMAGE_SOURCE
LABEL org.opencontainers.image.authors=$IMAGE_AUTHORS
LABEL org.opencontainers.image.vendor=$IMAGE_VENDOR
LABEL org.opencontainers.image.version=$IMAGE_VERSION
COPY --from=u-boot-builder /u-boot/out/* /