Skip to content

Commit 9131398

Browse files
committed
Use Debian as the base image and remove obselete platforms
1 parent 6c970ab commit 9131398

30 files changed

+158
-809
lines changed

.github/workflows/main.yml

Lines changed: 16 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,17 @@ jobs:
1010
build:
1111
name: Build
1212
runs-on: ubuntu-latest
13-
strategy:
14-
matrix:
15-
ubuntu-version:
16-
- 22.04
17-
- 24.04
1813
steps:
1914
- uses: actions/checkout@v4
20-
- run: make UBUNTU=${{ matrix.ubuntu-version }} update
21-
- run: make UBUNTU=${{ matrix.ubuntu-version }} build
15+
- run: make DEBIAN=trixie update
16+
- run: make DEBIAN=trixie build
2217
- name: Log in to docker
2318
uses: docker/login-action@v3
2419
with:
2520
username: ${{ secrets.DOCKER_USERNAME }}
2621
password: ${{ secrets.DOCKER_PASSWORD }}
2722
if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }}
28-
- run: make UBUNTU=${{ matrix.ubuntu-version }} push
23+
- run: make DEBIAN=trixie push
2924
if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }}
3025

3126
build-ds:
@@ -66,7 +61,7 @@ jobs:
6661
strategy:
6762
matrix:
6863
debian-version:
69-
- bookworm
64+
- trixie
7065
steps:
7166
- uses: actions/checkout@v4
7267
- run: make DEBIAN=${{ matrix.debian-version }} update/arm
@@ -77,47 +72,30 @@ jobs:
7772
username: ${{ secrets.DOCKER_USERNAME }}
7873
password: ${{ secrets.DOCKER_PASSWORD }}
7974
if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }}
80-
- run: make UBUNTU=${{ matrix.debian-version }} push/arm-base
75+
- run: make DEBIAN=${{ matrix.debian-version }} push/arm-base
8176
if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }}
8277

8378
build-minimal:
8479
name: Build Minimal
8580
runs-on: ubuntu-latest
86-
strategy:
87-
matrix:
88-
ubuntu-version:
89-
- 22.04
90-
- 24.04
9181
steps:
9282
- uses: actions/checkout@v4
93-
- run: make UBUNTU=${{ matrix.ubuntu-version }} update
94-
- run: make UBUNTU=${{ matrix.ubuntu-version }} build/minimal-cross
83+
- run: make DEBIAN=trixie update
84+
- run: make DEBIAN=trixie build/minimal-cross
9585
- name: Log in to docker
9686
uses: docker/login-action@v3
9787
with:
9888
username: ${{ secrets.DOCKER_USERNAME }}
9989
password: ${{ secrets.DOCKER_PASSWORD }}
10090
if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }}
101-
- run: make UBUNTU=${{ matrix.ubuntu-version }} push/minimal-cross
91+
- run: make DEBIAN=trixie push/minimal-cross
10292
if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }}
10393

104-
- run: make UBUNTU=${{ matrix.ubuntu-version }} save/minimal-cross
105-
- name: Upload roborio cross base image
106-
uses: actions/upload-artifact@v4
107-
with:
108-
name: roborio-${{ matrix.ubuntu-version }}
109-
path: roborio.tar.zst
110-
retention-days: 1
111-
- name: Upload raspbian cross base image
112-
uses: actions/upload-artifact@v4
113-
with:
114-
name: raspbian-${{ matrix.ubuntu-version }}
115-
path: raspbian.tar.zst
116-
retention-days: 1
94+
- run: make DEBIAN=trixie save/minimal-cross
11795
- name: Upload systemcore cross base image
11896
uses: actions/upload-artifact@v4
11997
with:
120-
name: systemcore-${{ matrix.ubuntu-version }}
98+
name: systemcore-trixie
12199
path: systemcore.tar.zst
122100
retention-days: 1
123101

@@ -128,36 +106,20 @@ jobs:
128106
strategy:
129107
matrix:
130108
type:
131-
- raspbian
109+
- systemcore
132110
pyversion:
133-
- py311
134-
- py312
135111
- py313
136112
- py314
137-
ubuntu-version:
138-
- 22.04
139-
- 24.04
140-
include:
141-
- type: roborio
142-
pyversion: py313
143-
ubuntu-version: 22.04
144-
- type: roborio
145-
pyversion: py314
146-
ubuntu-version: 22.04
147-
- type: systemcore
148-
pyversion: py313
149-
ubuntu-version: 24.04
150-
- type: systemcore
151-
pyversion: py314
152-
ubuntu-version: 24.04
113+
debian-version:
114+
- trixie
153115

154116
steps:
155117
- uses: actions/checkout@v4
156118

157119
- name: Download image
158120
uses: actions/download-artifact@v4
159121
with:
160-
name: ${{ matrix.type }}-${{ matrix.ubuntu-version }}
122+
name: ${{ matrix.type }}-${{ matrix.debian-version }}
161123
path: img
162124

163125
- name: Load image
@@ -166,13 +128,13 @@ jobs:
166128
rm img/${{ matrix.type }}.tar.zst
167129
168130
- name: Build image
169-
run: make UBUNTU=${{ matrix.ubuntu-version }} build/cross-${{ matrix.type }}-${{ matrix.pyversion }}
131+
run: make DEBIAN=trixie build/cross-${{ matrix.type }}-${{ matrix.pyversion }}
170132
- name: Log in to docker
171133
uses: docker/login-action@v3
172134
with:
173135
username: ${{ secrets.DOCKER_USERNAME }}
174136
password: ${{ secrets.DOCKER_PASSWORD }}
175137
if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }}
176138
- name: Upload image
177-
run: make UBUNTU=${{ matrix.ubuntu-version }} push/cross-${{ matrix.type }}-${{ matrix.pyversion }}
139+
run: make DEBIAN=trixie push/cross-${{ matrix.type }}-${{ matrix.pyversion }}
178140
if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }}

Makefile

Lines changed: 22 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
UBUNTU?=22.04
21
OPENSDK_UBUNTU?=20.04
3-
DEBIAN?=bookworm
2+
DEBIAN?=trixie
43

54
DS?=trixie
65

@@ -13,7 +12,7 @@ usage:
1312
@echo "Run make update, make build, and make push"
1413

1514
update:
16-
docker pull docker.io/ubuntu:${UBUNTU}
15+
docker pull docker.io/debian:${DEBIAN}
1716
docker pull docker.io/ubuntu:${OPENSDK_UBUNTU}
1817

1918
update/arm:
@@ -26,34 +25,24 @@ build/arm-base:
2625
docker build -t ${DOCKER_USER}/debian-base:arm64-${DEBIAN} -f Dockerfile.${DEBIAN} .
2726

2827
build/base:
29-
cd ubuntu-base && \
30-
docker build -t ${DOCKER_USER}/ubuntu-base:${UBUNTU} -f Dockerfile.${UBUNTU} .
28+
cd debian-base && \
29+
docker build -t ${DOCKER_USER}/debian-base:${DEBIAN} -f Dockerfile.${DEBIAN} .
3130

3231
build/cross: build/base
33-
cd roborio-cross-ubuntu && \
34-
docker build -t ${DOCKER_USER}/roborio-cross-ubuntu:2025-${UBUNTU} -f Dockerfile.2025 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=base .
35-
cd systemcore-cross-ubuntu && \
36-
docker build -t ${DOCKER_USER}/systemcore-cross-ubuntu:2027-${UBUNTU} -f Dockerfile.2027 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=base .
37-
cd raspbian-cross-ubuntu && \
38-
docker build -t ${DOCKER_USER}/raspbian-cross-ubuntu:bookworm-${UBUNTU} -f Dockerfile.bookworm-2025 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=base . && \
39-
docker build -t ${DOCKER_USER}/raspbian-cross-ubuntu:2027-bookworm-${UBUNTU} -f Dockerfile.bookworm-2027 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=base .
40-
cd aarch64-cross-ubuntu && \
41-
docker build -t ${DOCKER_USER}/aarch64-cross-ubuntu:bookworm-${UBUNTU} -f Dockerfile.bookworm-2025 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=base . && \
42-
docker build -t ${DOCKER_USER}/aarch64-cross-ubuntu:2027-bookworm-${UBUNTU} -f Dockerfile.bookworm-2027 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=base .
32+
cd systemcore-cross-debian && \
33+
docker build -t ${DOCKER_USER}/systemcore-cross-debian:${DEBIAN} -f Dockerfile.${DEBIAN} --build-arg DEBIAN=${DEBIAN} --build-arg TYPE=base .
34+
cd aarch64-cross-debian && \
35+
docker build -t ${DOCKER_USER}/aarch64-cross-debian:${DEBIAN} -f Dockerfile.${DEBIAN} --build-arg DEBIAN=${DEBIAN} --build-arg TYPE=base .
4336

4437
build/minimal-base:
45-
cd ubuntu-minimal-base && \
46-
docker build -t ${DOCKER_USER}/ubuntu-minimal-base:${UBUNTU} -f Dockerfile.${UBUNTU} .
38+
cd debian-minimal-base && \
39+
docker build -t ${DOCKER_USER}/debian-minimal-base:${DEBIAN} -f Dockerfile.${DEBIAN} .
4740

4841
build/minimal-cross: build/minimal-base
49-
cd roborio-cross-ubuntu && \
50-
docker build -t ${DOCKER_USER}/roborio-cross-ubuntu-minimal:2025-${UBUNTU} -f Dockerfile.2025 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=minimal-base .
51-
cd systemcore-cross-ubuntu && \
52-
docker build -t ${DOCKER_USER}/systemcore-cross-ubuntu-minimal:2027-${UBUNTU} -f Dockerfile.2027 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=minimal-base .
53-
cd raspbian-cross-ubuntu && \
54-
docker build -t ${DOCKER_USER}/raspbian-cross-ubuntu-minimal:bookworm-${UBUNTU} -f Dockerfile.bookworm-2025 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=minimal-base .
55-
cd aarch64-cross-ubuntu && \
56-
docker build -t ${DOCKER_USER}/aarch64-cross-ubuntu-minimal:bookworm-${UBUNTU} -f Dockerfile.bookworm-2025 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=minimal-base .
42+
cd systemcore-cross-debian && \
43+
docker build -t ${DOCKER_USER}/systemcore-cross-debian-minimal:${DEBIAN} -f Dockerfile.${DEBIAN} --build-arg DEBIAN=${DEBIAN} --build-arg TYPE=minimal-base .
44+
cd aarch64-cross-debian && \
45+
docker build -t ${DOCKER_USER}/aarch64-cross-debian-minimal:${DEBIAN} -f Dockerfile.${DEBIAN} --build-arg DEBIAN=${DEBIAN} --build-arg TYPE=minimal-base .
5746

5847
build/opensdk:
5948
cd opensdk/ubuntu && \
@@ -65,36 +54,28 @@ push/arm-base:
6554
docker push ${DOCKER_USER}/debian-base:arm64-${DEBIAN}
6655

6756
push/base:
68-
docker push ${DOCKER_USER}/ubuntu-base:${UBUNTU}
57+
docker push ${DOCKER_USER}/debian-base:${DEBIAN}
6958

7059
push/cross: push/base
71-
docker push ${DOCKER_USER}/roborio-cross-ubuntu:2025-${UBUNTU}
72-
docker push ${DOCKER_USER}/systemcore-cross-ubuntu:2027-${UBUNTU}
73-
docker push ${DOCKER_USER}/raspbian-cross-ubuntu:bookworm-${UBUNTU}
74-
docker push ${DOCKER_USER}/aarch64-cross-ubuntu:bookworm-${UBUNTU}
75-
docker push ${DOCKER_USER}/raspbian-cross-ubuntu:2027-bookworm-${UBUNTU}
76-
docker push ${DOCKER_USER}/aarch64-cross-ubuntu:2027-bookworm-${UBUNTU}
60+
docker push ${DOCKER_USER}/systemcore-cross-debian:${DEBIAN}
61+
docker push ${DOCKER_USER}/aarch64-cross-debian:${DEBIAN}
7762

7863
push/minimal-base:
79-
docker push ${DOCKER_USER}/ubuntu-minimal-base:${UBUNTU}
64+
docker push ${DOCKER_USER}/debian-minimal-base:${DEBIAN}
8065

8166
push/minimal-cross: push/minimal-base
82-
docker push ${DOCKER_USER}/roborio-cross-ubuntu-minimal:2025-${UBUNTU}
83-
docker push ${DOCKER_USER}/systemcore-cross-ubuntu-minimal:2027-${UBUNTU}
84-
docker push ${DOCKER_USER}/raspbian-cross-ubuntu-minimal:bookworm-${UBUNTU}
85-
docker push ${DOCKER_USER}/aarch64-cross-ubuntu-minimal:bookworm-${UBUNTU}
67+
docker push ${DOCKER_USER}/systemcore-cross-debian-minimal:${DEBIAN}
68+
docker push ${DOCKER_USER}/aarch64-cross-debian-minimal:${DEBIAN}
8669

8770
push/opensdk:
8871
docker push ${DOCKER_USER}/opensdk-ubuntu:${OPENSDK_UBUNTU}
8972

9073

9174
.PHONY: save/minimal-cross
9275
save/minimal-cross:
93-
docker save ${DOCKER_USER}/roborio-cross-ubuntu-minimal:2025-${UBUNTU} | zstd > roborio.tar.zst
94-
docker save ${DOCKER_USER}/systemcore-cross-ubuntu-minimal:2027-${UBUNTU} | zstd > systemcore.tar.zst
95-
docker save ${DOCKER_USER}/raspbian-cross-ubuntu-minimal:bookworm-${UBUNTU} | zstd > raspbian.tar.zst
76+
docker save ${DOCKER_USER}/systemcore-cross-debian-minimal:${DEBIAN} | zstd > systemcore.tar.zst
9677

97-
include cross-ubuntu-py/py.mk
78+
include cross-debian-py/py.mk
9879

9980
update/ds:
10081
docker pull docker.io/debian:${DS}

README.md

Lines changed: 31 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3,47 +3,42 @@ Docker images for building WPILib
33

44
These are the dockerfiles for the wpilib dockerhub repositories.
55

6-
ubuntu-base
7-
- Based on official ubuntu repo (host)
6+
debian-base
7+
- Based on official debian repo (host)
88
- Contains Java and C++ native tools required for WPILib development
99
- Base image for cross-compiler images
10-
- Published as wpilib/ubuntu-base:host ubuntu version (e.g. 18.04)
10+
- Published as wpilib/debian-base:host debian codename (e.g. trixie)
1111

12-
ubuntu-minimal-base
13-
- Based on official ubuntu repo (host)
12+
debian-minimal-base
13+
- Based on official debian repo (host)
1414
- Base image for minimal cross-compiler images that only contain cross compiler
15-
- Published as wpilib/ubuntu-minimal-base:host ubuntu version (e.g. 18.04)
16-
17-
roborio-cross-ubuntu
18-
- Based on wpilib/ubuntu-base
19-
- Cross-compiler for roboRIO
20-
- Published as wpilib/roborio-cross-ubuntu:frc season-host ubuntu version
21-
(e.g. 2020-18.04)
22-
- Minimal variant published as roborio-cross-ubuntu-minimal
23-
24-
systemcore-cross-ubuntu
25-
- Based on wpilib/ubuntu-base
26-
- Cross-compiler for systemcore (Bookworm for now)
27-
- Published as wpilib/systemcore-cross-ubuntu:frc season-host ubuntu version
28-
(e.g. 2020-18.04)
29-
- Minimal variant published as systemcore-cross-ubuntu-minimal
30-
31-
raspbian-cross-ubuntu
32-
- Based on wpilib/ubuntu-base
33-
- Cross-compiler for Raspbian
34-
- Published as wpilib/raspbian-cross-ubuntu:target version-host ubuntu version
35-
(e.g. 10-18.04)
36-
- Minimal variant published as raspbian-cross-ubuntu-minimal
37-
38-
aarch64-cross-ubuntu
39-
- Based on wpilib/ubuntu-base
15+
- Published as wpilib/debian-minimal-base:host debian codename (e.g. trixie)
16+
17+
driverstation-base
18+
- Based on official debian repo (host)
19+
- Base image for building the Driver Station application
20+
- Published as wpilib/driverstation-base:arch (e.g. x64 or arm64)
21+
22+
opensdk-ubuntu
23+
- Based on official ubuntu repo (host)
24+
- Base image for building opensdk toolchains
25+
- Published as wpilib/opensdk-ubuntu:host ubuntu version (e.g. 24.04)
26+
27+
systemcore-cross-debian
28+
- Based on wpilib/debian-base
29+
- Cross-compiler for systemcore (Trixie for now)
30+
- Published as wpilib/systemcore-cross-debian:host debian codename
31+
(e.g. trixie)
32+
- Minimal variant published as wpilib/systemcore-cross-debian-minimal
33+
34+
aarch64-cross-debian
35+
- Based on wpilib/debian-base
4036
- Cross-compiler for aarch64 (TX2 and Nano)
41-
- Published as wpilib/aarch-cross-ubuntu:target version-host ubuntu version
42-
(e.g. bionic-18.04)
43-
- Minimal variant published as raspbian-cross-ubuntu-aarch64
37+
- Published as wpilib/aarch-cross-debian:host debian codename
38+
(e.g. trixie)
39+
- Minimal variant published as wpilib/aarch64-cross-debian-minimal
4440

45-
roborio-cross-ubuntu-pyXXX
46-
raspbian-cross-ubuntu-pyXXX
41+
systemcore-cross-debian-pyXXX
4742
- Based on the minimal cross compiler image
4843
- Contains crossenv at /build/venv for cross-compiling python wheels
49-
- Published as wpilib/{type}-cross-ubuntu:{version}-{ubuntu}-py{pyversion}
44+
- Published as wpilib/systemcore-cross-debian:{debian}-py{pyversion}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
ARG UBUNTU=22.04
1+
ARG DEBIAN=trixie
22
ARG TYPE=base
3-
FROM wpilib/ubuntu-${TYPE}:${UBUNTU}
3+
FROM wpilib/debian-${TYPE}:${DEBIAN}
44

55
# Install toolchain
6-
RUN curl -SL https://github.com/wpilibsuite/opensdk/releases/download/v2025-1/arm64-bookworm-2025-x86_64-linux-gnu-Toolchain-12.2.0.tgz | sh -c 'mkdir -p /usr/local && cd /usr/local && tar xzf - --strip-components=2'
6+
RUN curl -SL https://github.com/wpilibsuite/opensdk/releases/download/v2025-2/arm64-bookworm-2025-x86_64-linux-gnu-Toolchain-12.2.0.tgz | sh -c 'mkdir -p /usr/local && cd /usr/local && tar xzf - --strip-components=2'
77

88
WORKDIR /

cross-ubuntu-py/0001-Use-specified-host_cpu-when-cross-compiling-for-Linu.patch renamed to cross-debian-py/0001-Use-specified-host_cpu-when-cross-compiling-for-Linu.patch

File renamed without changes.

cross-ubuntu-py/0001-bpo-41916-allow-cross-compiled-python-to-have-pthrea.patch renamed to cross-debian-py/0001-bpo-41916-allow-cross-compiled-python-to-have-pthrea.patch

File renamed without changes.
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11

2-
ARG UBUNTU=invalid-ubuntu
2+
ARG DEBIAN=invalid-debian
33
ARG ARCH=invalid-arch
44
ARG VERSION=invalid-version
55

6-
FROM wpilib/${ARCH}-cross-ubuntu-minimal:${VERSION}-${UBUNTU} AS pycompile
6+
FROM wpilib/${ARCH}-cross-debian-minimal:${DEBIAN} AS pycompile
77

88
ARG TARGET_HOST=invalid-target-host
99
ARG AC_TARGET_HOST=invalid-ac-target-host
@@ -29,7 +29,7 @@ ENV PREFIX="$INSTALL_DIRECTORY"
2929
RUN set -xe; \
3030
apt-get update; \
3131
apt-get install -y build-essential checkinstall g++ libreadline-dev libncurses-dev libssl-dev \
32-
libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev lzma-dev libffi-dev zlib1g-dev; \
32+
libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev libffi-dev zlib1g-dev; \
3333
# cleanup
3434
rm -rf /var/lib/apt/lists/*
3535

@@ -81,7 +81,7 @@ RUN set -xe; \
8181
# Minimal cross-compilation environment
8282
#
8383

84-
FROM wpilib/${ARCH}-cross-ubuntu-minimal:${VERSION}-${UBUNTU} AS crossenv
84+
FROM wpilib/${ARCH}-cross-debian-minimal:${DEBIAN} AS crossenv
8585

8686
RUN set -xe; \
8787
apt-get update; \
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11

2-
ARG UBUNTU=invalid-ubuntu
2+
ARG DEBIAN=invalid-debian
33
ARG ARCH=invalid-arch
44
ARG VERSION=invalid-version
55

6-
FROM wpilib/${ARCH}-cross-ubuntu-minimal:${VERSION}-${UBUNTU} AS pycompile
6+
FROM wpilib/${ARCH}-cross-debian-minimal:${DEBIAN} AS pycompile
77

88
ARG TARGET_HOST=invalid-target-host
99
ARG AC_TARGET_HOST=invalid-ac-target-host
@@ -81,7 +81,7 @@ RUN set -xe; \
8181
# Minimal cross-compilation environment
8282
#
8383

84-
FROM wpilib/${ARCH}-cross-ubuntu-minimal:${VERSION}-${UBUNTU} AS crossenv
84+
FROM wpilib/${ARCH}-cross-debian-minimal:${DEBIAN} AS crossenv
8585

8686
RUN set -xe; \
8787
apt-get update; \

0 commit comments

Comments
 (0)