diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index c071a11..5da2416 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -10,22 +10,17 @@ jobs: build: name: Build runs-on: ubuntu-latest - strategy: - matrix: - ubuntu-version: - - 22.04 - - 24.04 steps: - uses: actions/checkout@v6 - - run: make UBUNTU=${{ matrix.ubuntu-version }} update - - run: make UBUNTU=${{ matrix.ubuntu-version }} build + - run: make DEBIAN=trixie update + - run: make DEBIAN=trixie build - name: Log in to docker uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }} - - run: make UBUNTU=${{ matrix.ubuntu-version }} push + - run: make DEBIAN=trixie push if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }} build-ds: @@ -66,7 +61,7 @@ jobs: strategy: matrix: debian-version: - - bookworm + - trixie steps: - uses: actions/checkout@v6 - run: make DEBIAN=${{ matrix.debian-version }} update/arm @@ -77,47 +72,30 @@ jobs: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }} - - run: make UBUNTU=${{ matrix.debian-version }} push/arm-base + - run: make DEBIAN=${{ matrix.debian-version }} push/arm-base if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }} build-minimal: name: Build Minimal runs-on: ubuntu-latest - strategy: - matrix: - ubuntu-version: - - 22.04 - - 24.04 steps: - uses: actions/checkout@v6 - - run: make UBUNTU=${{ matrix.ubuntu-version }} update - - run: make UBUNTU=${{ matrix.ubuntu-version }} build/minimal-cross + - run: make DEBIAN=trixie update + - run: make DEBIAN=trixie build/minimal-cross - name: Log in to docker uses: docker/login-action@v3 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }} - - run: make UBUNTU=${{ matrix.ubuntu-version }} push/minimal-cross + - run: make DEBIAN=trixie push/minimal-cross if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }} - - run: make UBUNTU=${{ matrix.ubuntu-version }} save/minimal-cross - - name: Upload roborio cross base image - uses: actions/upload-artifact@v7 - with: - name: roborio-${{ matrix.ubuntu-version }} - path: roborio.tar.zst - retention-days: 1 - - name: Upload raspbian cross base image - uses: actions/upload-artifact@v7 - with: - name: raspbian-${{ matrix.ubuntu-version }} - path: raspbian.tar.zst - retention-days: 1 + - run: make DEBIAN=trixie save/minimal-cross - name: Upload systemcore cross base image uses: actions/upload-artifact@v7 with: - name: systemcore-${{ matrix.ubuntu-version }} + name: systemcore-trixie path: systemcore.tar.zst retention-days: 1 @@ -128,28 +106,12 @@ jobs: strategy: matrix: type: - - raspbian + - systemcore pyversion: - - py311 - - py312 - py313 - py314 - ubuntu-version: - - 22.04 - - 24.04 - include: - - type: roborio - pyversion: py313 - ubuntu-version: 22.04 - - type: roborio - pyversion: py314 - ubuntu-version: 22.04 - - type: systemcore - pyversion: py313 - ubuntu-version: 24.04 - - type: systemcore - pyversion: py314 - ubuntu-version: 24.04 + debian-version: + - trixie steps: - uses: actions/checkout@v6 @@ -157,7 +119,7 @@ jobs: - name: Download image uses: actions/download-artifact@v4 with: - name: ${{ matrix.type }}-${{ matrix.ubuntu-version }} + name: ${{ matrix.type }}-${{ matrix.debian-version }} path: img - name: Load image @@ -166,7 +128,7 @@ jobs: rm img/${{ matrix.type }}.tar.zst - name: Build image - run: make UBUNTU=${{ matrix.ubuntu-version }} build/cross-${{ matrix.type }}-${{ matrix.pyversion }} + run: make DEBIAN=trixie build/cross-${{ matrix.type }}-${{ matrix.pyversion }} - name: Log in to docker uses: docker/login-action@v3 with: @@ -174,5 +136,5 @@ jobs: password: ${{ secrets.DOCKER_PASSWORD }} if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }} - name: Upload image - run: make UBUNTU=${{ matrix.ubuntu-version }} push/cross-${{ matrix.type }}-${{ matrix.pyversion }} + run: make DEBIAN=trixie push/cross-${{ matrix.type }}-${{ matrix.pyversion }} if: ${{ github.repository_owner == 'wpilibsuite' && github.ref == 'refs/heads/main' }} diff --git a/Makefile b/Makefile index 33e4f63..956c894 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,5 @@ -UBUNTU?=22.04 OPENSDK_UBUNTU?=22.04 -DEBIAN?=bookworm +DEBIAN?=trixie DS?=trixie @@ -13,7 +12,7 @@ usage: @echo "Run make update, make build, and make push" update: - docker pull docker.io/ubuntu:${UBUNTU} + docker pull docker.io/debian:${DEBIAN} docker pull docker.io/ubuntu:${OPENSDK_UBUNTU} update/arm: @@ -23,37 +22,27 @@ build: build/base build/cross build/opensdk build/arm-base: cd debian-base && \ - docker build -t ${DOCKER_USER}/debian-base:arm64-${DEBIAN} -f Dockerfile.${DEBIAN} . + docker build -t ${DOCKER_USER}/debian-base:arm64-${DEBIAN} -f Dockerfile.arm64.${DEBIAN} . build/base: - cd ubuntu-base && \ - docker build -t ${DOCKER_USER}/ubuntu-base:${UBUNTU} -f Dockerfile.${UBUNTU} . + cd debian-base && \ + docker build -t ${DOCKER_USER}/debian-base:${DEBIAN} -f Dockerfile.x64.${DEBIAN} . build/cross: build/base - cd roborio-cross-ubuntu && \ - docker build -t ${DOCKER_USER}/roborio-cross-ubuntu:2025-${UBUNTU} -f Dockerfile.2025 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=base . - cd systemcore-cross-ubuntu && \ - docker build -t ${DOCKER_USER}/systemcore-cross-ubuntu:2027-${UBUNTU} -f Dockerfile.2027 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=base . - cd raspbian-cross-ubuntu && \ - docker build -t ${DOCKER_USER}/raspbian-cross-ubuntu:bookworm-${UBUNTU} -f Dockerfile.bookworm-2025 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=base . && \ - docker build -t ${DOCKER_USER}/raspbian-cross-ubuntu:2027-bookworm-${UBUNTU} -f Dockerfile.bookworm-2027 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=base . - cd aarch64-cross-ubuntu && \ - docker build -t ${DOCKER_USER}/aarch64-cross-ubuntu:bookworm-${UBUNTU} -f Dockerfile.bookworm-2025 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=base . && \ - docker build -t ${DOCKER_USER}/aarch64-cross-ubuntu:2027-bookworm-${UBUNTU} -f Dockerfile.bookworm-2027 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=base . + cd systemcore-cross-debian && \ + docker build -t ${DOCKER_USER}/systemcore-cross-debian:${DEBIAN} -f Dockerfile.${DEBIAN} --build-arg DEBIAN=${DEBIAN} --build-arg TYPE=base . + cd aarch64-cross-debian && \ + docker build -t ${DOCKER_USER}/aarch64-cross-debian:${DEBIAN} -f Dockerfile.${DEBIAN} --build-arg DEBIAN=${DEBIAN} --build-arg TYPE=base . build/minimal-base: - cd ubuntu-minimal-base && \ - docker build -t ${DOCKER_USER}/ubuntu-minimal-base:${UBUNTU} -f Dockerfile.${UBUNTU} . + cd debian-minimal-base && \ + docker build -t ${DOCKER_USER}/debian-minimal-base:${DEBIAN} -f Dockerfile.${DEBIAN} . build/minimal-cross: build/minimal-base - cd roborio-cross-ubuntu && \ - docker build -t ${DOCKER_USER}/roborio-cross-ubuntu-minimal:2025-${UBUNTU} -f Dockerfile.2025 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=minimal-base . - cd systemcore-cross-ubuntu && \ - docker build -t ${DOCKER_USER}/systemcore-cross-ubuntu-minimal:2027-${UBUNTU} -f Dockerfile.2027 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=minimal-base . - cd raspbian-cross-ubuntu && \ - docker build -t ${DOCKER_USER}/raspbian-cross-ubuntu-minimal:bookworm-${UBUNTU} -f Dockerfile.bookworm-2025 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=minimal-base . - cd aarch64-cross-ubuntu && \ - docker build -t ${DOCKER_USER}/aarch64-cross-ubuntu-minimal:bookworm-${UBUNTU} -f Dockerfile.bookworm-2025 --build-arg UBUNTU=${UBUNTU} --build-arg TYPE=minimal-base . + cd systemcore-cross-debian && \ + docker build -t ${DOCKER_USER}/systemcore-cross-debian-minimal:${DEBIAN} -f Dockerfile.${DEBIAN} --build-arg DEBIAN=${DEBIAN} --build-arg TYPE=minimal-base . + cd aarch64-cross-debian && \ + docker build -t ${DOCKER_USER}/aarch64-cross-debian-minimal:${DEBIAN} -f Dockerfile.${DEBIAN} --build-arg DEBIAN=${DEBIAN} --build-arg TYPE=minimal-base . build/opensdk: cd opensdk/ubuntu && \ @@ -65,24 +54,18 @@ push/arm-base: docker push ${DOCKER_USER}/debian-base:arm64-${DEBIAN} push/base: - docker push ${DOCKER_USER}/ubuntu-base:${UBUNTU} + docker push ${DOCKER_USER}/debian-base:${DEBIAN} push/cross: push/base - docker push ${DOCKER_USER}/roborio-cross-ubuntu:2025-${UBUNTU} - docker push ${DOCKER_USER}/systemcore-cross-ubuntu:2027-${UBUNTU} - docker push ${DOCKER_USER}/raspbian-cross-ubuntu:bookworm-${UBUNTU} - docker push ${DOCKER_USER}/aarch64-cross-ubuntu:bookworm-${UBUNTU} - docker push ${DOCKER_USER}/raspbian-cross-ubuntu:2027-bookworm-${UBUNTU} - docker push ${DOCKER_USER}/aarch64-cross-ubuntu:2027-bookworm-${UBUNTU} + docker push ${DOCKER_USER}/systemcore-cross-debian:${DEBIAN} + docker push ${DOCKER_USER}/aarch64-cross-debian:${DEBIAN} push/minimal-base: - docker push ${DOCKER_USER}/ubuntu-minimal-base:${UBUNTU} + docker push ${DOCKER_USER}/debian-minimal-base:${DEBIAN} push/minimal-cross: push/minimal-base - docker push ${DOCKER_USER}/roborio-cross-ubuntu-minimal:2025-${UBUNTU} - docker push ${DOCKER_USER}/systemcore-cross-ubuntu-minimal:2027-${UBUNTU} - docker push ${DOCKER_USER}/raspbian-cross-ubuntu-minimal:bookworm-${UBUNTU} - docker push ${DOCKER_USER}/aarch64-cross-ubuntu-minimal:bookworm-${UBUNTU} + docker push ${DOCKER_USER}/systemcore-cross-debian-minimal:${DEBIAN} + docker push ${DOCKER_USER}/aarch64-cross-debian-minimal:${DEBIAN} push/opensdk: docker push ${DOCKER_USER}/opensdk-ubuntu:${OPENSDK_UBUNTU} @@ -90,11 +73,9 @@ push/opensdk: .PHONY: save/minimal-cross save/minimal-cross: - docker save ${DOCKER_USER}/roborio-cross-ubuntu-minimal:2025-${UBUNTU} | zstd > roborio.tar.zst - docker save ${DOCKER_USER}/systemcore-cross-ubuntu-minimal:2027-${UBUNTU} | zstd > systemcore.tar.zst - docker save ${DOCKER_USER}/raspbian-cross-ubuntu-minimal:bookworm-${UBUNTU} | zstd > raspbian.tar.zst + docker save ${DOCKER_USER}/systemcore-cross-debian-minimal:${DEBIAN} | zstd > systemcore.tar.zst -include cross-ubuntu-py/py.mk +include cross-debian-py/py.mk update/ds: docker pull docker.io/debian:${DS} diff --git a/README.md b/README.md index 08332fa..59ccb09 100644 --- a/README.md +++ b/README.md @@ -3,47 +3,42 @@ Docker images for building WPILib These are the dockerfiles for the wpilib dockerhub repositories. -ubuntu-base - - Based on official ubuntu repo (host) +debian-base + - Based on official debian repo (host) - Contains Java and C++ native tools required for WPILib development - Base image for cross-compiler images - - Published as wpilib/ubuntu-base:host ubuntu version (e.g. 18.04) + - Published as wpilib/debian-base:arch-host debian codename (e.g. trixie or arm64-trixie) -ubuntu-minimal-base - - Based on official ubuntu repo (host) +debian-minimal-base + - Based on official debian repo (host) - Base image for minimal cross-compiler images that only contain cross compiler - - Published as wpilib/ubuntu-minimal-base:host ubuntu version (e.g. 18.04) - -roborio-cross-ubuntu - - Based on wpilib/ubuntu-base - - Cross-compiler for roboRIO - - Published as wpilib/roborio-cross-ubuntu:frc season-host ubuntu version - (e.g. 2020-18.04) - - Minimal variant published as roborio-cross-ubuntu-minimal - -systemcore-cross-ubuntu - - Based on wpilib/ubuntu-base - - Cross-compiler for systemcore (Bookworm for now) - - Published as wpilib/systemcore-cross-ubuntu:frc season-host ubuntu version - (e.g. 2020-18.04) - - Minimal variant published as systemcore-cross-ubuntu-minimal - -raspbian-cross-ubuntu - - Based on wpilib/ubuntu-base - - Cross-compiler for Raspbian - - Published as wpilib/raspbian-cross-ubuntu:target version-host ubuntu version - (e.g. 10-18.04) - - Minimal variant published as raspbian-cross-ubuntu-minimal - -aarch64-cross-ubuntu - - Based on wpilib/ubuntu-base + - Published as wpilib/debian-minimal-base:host debian codename (e.g. trixie) + +driverstation-base + - Based on official debian repo (host) + - Base image for building the Driver Station application + - Published as wpilib/driverstation-base:arch (e.g. x64 or arm64) + +opensdk-ubuntu + - Based on official ubuntu repo (host) + - Base image for building opensdk toolchains + - Published as wpilib/opensdk-ubuntu:host ubuntu version (e.g. 24.04) + +systemcore-cross-debian + - Based on wpilib/debian-base + - Cross-compiler for systemcore (Trixie for now) + - Published as wpilib/systemcore-cross-debian:host debian codename + (e.g. trixie) + - Minimal variant published as wpilib/systemcore-cross-debian-minimal + +aarch64-cross-debian + - Based on wpilib/debian-base - Cross-compiler for aarch64 (TX2 and Nano) - - Published as wpilib/aarch-cross-ubuntu:target version-host ubuntu version - (e.g. bionic-18.04) - - Minimal variant published as raspbian-cross-ubuntu-aarch64 + - Published as wpilib/aarch-cross-debian:host debian codename + (e.g. trixie) + - Minimal variant published as wpilib/aarch64-cross-debian-minimal -roborio-cross-ubuntu-pyXXX -raspbian-cross-ubuntu-pyXXX +systemcore-cross-debian-pyXXX - Based on the minimal cross compiler image - Contains crossenv at /build/venv for cross-compiling python wheels -- Published as wpilib/{type}-cross-ubuntu:{version}-{ubuntu}-py{pyversion} +- Published as wpilib/systemcore-cross-debian:{debian}-py{pyversion} \ No newline at end of file diff --git a/aarch64-cross-ubuntu/Dockerfile.bookworm-2025 b/aarch64-cross-debian/Dockerfile.trixie similarity index 62% rename from aarch64-cross-ubuntu/Dockerfile.bookworm-2025 rename to aarch64-cross-debian/Dockerfile.trixie index acc8963..0349b42 100644 --- a/aarch64-cross-ubuntu/Dockerfile.bookworm-2025 +++ b/aarch64-cross-debian/Dockerfile.trixie @@ -1,8 +1,8 @@ -ARG UBUNTU=22.04 +ARG DEBIAN=trixie ARG TYPE=base -FROM wpilib/ubuntu-${TYPE}:${UBUNTU} +FROM wpilib/debian-${TYPE}:${DEBIAN} # Install toolchain -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' +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' WORKDIR / diff --git a/cross-ubuntu-py/0001-Use-specified-host_cpu-when-cross-compiling-for-Linu.patch b/cross-debian-py/0001-Use-specified-host_cpu-when-cross-compiling-for-Linu.patch similarity index 100% rename from cross-ubuntu-py/0001-Use-specified-host_cpu-when-cross-compiling-for-Linu.patch rename to cross-debian-py/0001-Use-specified-host_cpu-when-cross-compiling-for-Linu.patch diff --git a/cross-ubuntu-py/0001-bpo-41916-allow-cross-compiled-python-to-have-pthrea.patch b/cross-debian-py/0001-bpo-41916-allow-cross-compiled-python-to-have-pthrea.patch similarity index 100% rename from cross-ubuntu-py/0001-bpo-41916-allow-cross-compiled-python-to-have-pthrea.patch rename to cross-debian-py/0001-bpo-41916-allow-cross-compiled-python-to-have-pthrea.patch diff --git a/cross-ubuntu-py/Dockerfile.py313 b/cross-debian-py/Dockerfile.py313 similarity index 92% rename from cross-ubuntu-py/Dockerfile.py313 rename to cross-debian-py/Dockerfile.py313 index 3371282..b6201a0 100644 --- a/cross-ubuntu-py/Dockerfile.py313 +++ b/cross-debian-py/Dockerfile.py313 @@ -1,9 +1,9 @@ -ARG UBUNTU=invalid-ubuntu +ARG DEBIAN=invalid-debian ARG ARCH=invalid-arch ARG VERSION=invalid-version -FROM wpilib/${ARCH}-cross-ubuntu-minimal:${VERSION}-${UBUNTU} AS pycompile +FROM wpilib/${ARCH}-cross-debian-minimal:${DEBIAN} AS pycompile ARG TARGET_HOST=invalid-target-host ARG AC_TARGET_HOST=invalid-ac-target-host @@ -29,7 +29,7 @@ ENV PREFIX="$INSTALL_DIRECTORY" RUN set -xe; \ apt-get update; \ apt-get install -y build-essential checkinstall g++ libreadline-dev libncurses-dev libssl-dev \ - libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev lzma-dev libffi-dev zlib1g-dev; \ + libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev libffi-dev zlib1g-dev; \ # cleanup rm -rf /var/lib/apt/lists/* @@ -54,7 +54,7 @@ RUN set -xe; \ RUN set -xe; \ # Remove build dependencies -- compilation uses host for some reason apt-get remove -y libreadline-dev libncursesw5-dev libssl-dev \ - libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev lzma-dev libffi-dev zlib1g-dev; \ + libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev libffi-dev zlib1g-dev; \ apt-get autoremove -y; RUN set -xe; \ @@ -81,7 +81,7 @@ RUN set -xe; \ # Minimal cross-compilation environment # -FROM wpilib/${ARCH}-cross-ubuntu-minimal:${VERSION}-${UBUNTU} AS crossenv +FROM wpilib/${ARCH}-cross-debian-minimal:${DEBIAN} AS crossenv RUN set -xe; \ apt-get update; \ diff --git a/cross-ubuntu-py/Dockerfile.py314 b/cross-debian-py/Dockerfile.py314 similarity index 92% rename from cross-ubuntu-py/Dockerfile.py314 rename to cross-debian-py/Dockerfile.py314 index 8c91ae4..183ba4d 100644 --- a/cross-ubuntu-py/Dockerfile.py314 +++ b/cross-debian-py/Dockerfile.py314 @@ -1,9 +1,9 @@ -ARG UBUNTU=invalid-ubuntu +ARG DEBIAN=invalid-debian ARG ARCH=invalid-arch ARG VERSION=invalid-version -FROM wpilib/${ARCH}-cross-ubuntu-minimal:${VERSION}-${UBUNTU} AS pycompile +FROM wpilib/${ARCH}-cross-debian-minimal:${DEBIAN} AS pycompile ARG TARGET_HOST=invalid-target-host ARG AC_TARGET_HOST=invalid-ac-target-host @@ -29,7 +29,7 @@ ENV PREFIX="$INSTALL_DIRECTORY" RUN set -xe; \ apt-get update; \ apt-get install -y build-essential checkinstall g++ libreadline-dev libncurses-dev libssl-dev \ - libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev lzma-dev libffi-dev zlib1g-dev; \ + libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev libffi-dev zlib1g-dev; \ # cleanup rm -rf /var/lib/apt/lists/* @@ -54,7 +54,7 @@ RUN set -xe; \ RUN set -xe; \ # Remove build dependencies -- compilation uses host for some reason apt-get remove -y libreadline-dev libncursesw5-dev libssl-dev \ - libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev lzma-dev libffi-dev zlib1g-dev; \ + libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev libffi-dev zlib1g-dev; \ apt-get autoremove -y; RUN set -xe; \ @@ -81,7 +81,7 @@ RUN set -xe; \ # Minimal cross-compilation environment # -FROM wpilib/${ARCH}-cross-ubuntu-minimal:${VERSION}-${UBUNTU} AS crossenv +FROM wpilib/${ARCH}-cross-debian-minimal:${DEBIAN} AS crossenv RUN set -xe; \ apt-get update; \ diff --git a/cross-ubuntu-py/os-release-systemcore b/cross-debian-py/os-release-systemcore similarity index 100% rename from cross-ubuntu-py/os-release-systemcore rename to cross-debian-py/os-release-systemcore diff --git a/cross-ubuntu-py/pip-systemcore.conf b/cross-debian-py/pip-systemcore.conf similarity index 100% rename from cross-ubuntu-py/pip-systemcore.conf rename to cross-debian-py/pip-systemcore.conf diff --git a/cross-debian-py/py.mk b/cross-debian-py/py.mk new file mode 100644 index 0000000..505e5ad --- /dev/null +++ b/cross-debian-py/py.mk @@ -0,0 +1,70 @@ + +DEBIAN?=trixie +YEAR?=2026 +DOCKER_USER?=wpilib + +TYPE_SYSTEMCORE=systemcore +VERSION_SYSTEMCORE=2027 +TARGET_HOST_SYSTEMCORE=aarch64-bookworm-linux-gnu +AC_TARGET_HOST_SYSTEMCORE=aarch64-bookworm-linux-gnu + + +.PHONY: build/cross-python +build/cross-python: \ + build/cross-systemcore-py313 \ + build/cross-systemcore-py314 + + +.PHONY: push/cross-python +push/cross-python: \ + push/cross-systemcore-py313 \ + push/cross-systemcore-py314 + +# systemcore manylinux tags for crossenv +SC_ML_VERSIONS := $(shell seq 35 -1 17) +SC_MANYLINUX_TAGS := $(foreach v,$(SC_ML_VERSIONS),--platform-tag=manylinux_2_$(v)_aarch64) + +# +# Python 3.13 +# + +.PHONY: build/cross-systemcore-py313 +build/cross-systemcore-py313: + cd cross-debian-py && \ + docker build . \ + -t wpilib/$(TYPE_SYSTEMCORE)-cross-debian:$(YEAR)-$(DEBIAN)-py313 \ + --build-arg DEBIAN=$(DEBIAN) \ + --build-arg ARCH=$(TYPE_SYSTEMCORE) \ + --build-arg TARGET_HOST=$(TARGET_HOST_SYSTEMCORE) \ + --build-arg AC_TARGET_HOST=$(AC_TARGET_HOST_SYSTEMCORE) \ + --build-arg VERSION=$(VERSION_SYSTEMCORE) \ + --build-arg MACHINE_ARG="--machine=systemcore" \ + --build-arg EXTRA_CROSSENV_ARGS="--platform-tag=linux_systemcore $(SC_MANYLINUX_TAGS) --platform-tag=linux_aarch64" \ + -f Dockerfile.py313 + +.PHONY: push/cross-systemcore-py313 +push/cross-systemcore-py313: + docker push wpilib/$(TYPE_SYSTEMCORE)-cross-debian:$(YEAR)-$(DEBIAN)-py313 + + +# +# Python 3.14 +# + +.PHONY: build/cross-systemcore-py314 +build/cross-systemcore-py314: + cd cross-debian-py && \ + docker build . \ + -t wpilib/$(TYPE_SYSTEMCORE)-cross-debian:$(YEAR)-$(DEBIAN)-py314 \ + --build-arg DEBIAN=$(DEBIAN) \ + --build-arg ARCH=$(TYPE_SYSTEMCORE) \ + --build-arg TARGET_HOST=$(TARGET_HOST_SYSTEMCORE) \ + --build-arg AC_TARGET_HOST=$(AC_TARGET_HOST_SYSTEMCORE) \ + --build-arg VERSION=$(VERSION_SYSTEMCORE) \ + --build-arg MACHINE_ARG="--machine=systemcore" \ + --build-arg EXTRA_CROSSENV_ARGS="--platform-tag=linux_systemcore $(SC_MANYLINUX_TAGS) --platform-tag=linux_aarch64" \ + -f Dockerfile.py314 + +.PHONY: push/cross-systemcore-py314 +push/cross-systemcore-py314: + docker push wpilib/$(TYPE_SYSTEMCORE)-cross-debian:$(YEAR)-$(DEBIAN)-py314 \ No newline at end of file diff --git a/cross-ubuntu-py/Dockerfile.py311 b/cross-ubuntu-py/Dockerfile.py311 deleted file mode 100644 index 9afcb4b..0000000 --- a/cross-ubuntu-py/Dockerfile.py311 +++ /dev/null @@ -1,103 +0,0 @@ - -ARG UBUNTU=invalid-ubuntu -ARG ARCH=invalid-arch -ARG VERSION=invalid-version - -FROM wpilib/${ARCH}-cross-ubuntu-minimal:${VERSION}-${UBUNTU} AS pycompile - -ARG TARGET_HOST=invalid-target-host -ARG AC_TARGET_HOST=invalid-ac-target-host - -ENV TARGET_HOST=${TARGET_HOST} -ENV AC_TARGET_HOST=${AC_TARGET_HOST} -ENV BUILD_HOST="x86_64" -ENV WORKING_DIRECTORY="/build" -ENV INSTALL_DIRECTORY="/build/crosspy" -ENV PYTHON_VERSION="3.11.11" -ENV PYTHON_FTP_VERSION="3.11.11" -ENV PYTHON_EXE="python3.11" -ENV SOURCE_DIRECTORY="Python-$PYTHON_VERSION" -ENV PYTHON_ARCHIVE="Python-$PYTHON_VERSION.tar.xz" -ENV PREFIX="$INSTALL_DIRECTORY" - -# -# Python compilation prereqs -# - -RUN set -xe; \ - apt-get update; \ - apt-get install -y build-essential checkinstall g++ libreadline-dev libncurses-dev libssl-dev \ - libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev lzma-dev libffi-dev zlib1g-dev; \ - # cleanup - rm -rf /var/lib/apt/lists/* - -# -# Python cross-compilation -# - -COPY 0001-bpo-41916-allow-cross-compiled-python-to-have-pthrea.patch / -COPY 0001-Use-specified-host_cpu-when-cross-compiling-for-Linu.patch / - -RUN set -xe; \ - mkdir -p "$PREFIX"; \ - # Download - cd $WORKING_DIRECTORY; \ - wget -c https://www.python.org/ftp/python/$PYTHON_FTP_VERSION/$PYTHON_ARCHIVE; \ - rm -rf $SOURCE_DIRECTORY; \ - tar -xf $PYTHON_ARCHIVE; \ - cd $SOURCE_DIRECTORY; \ - # patch -pthread CXX issue - patch -p1 < /0001-bpo-41916-allow-cross-compiled-python-to-have-pthrea.patch; \ - # patch arm cpu hardcoding - patch -p1 < /0001-Use-specified-host_cpu-when-cross-compiling-for-Linu.patch; \ - # Build python for host - cd $WORKING_DIRECTORY;cd $SOURCE_DIRECTORY; \ - ./configure --enable-optimizations --with-ensurepip=install; \ - make -j; \ - make -j altinstall; \ - # cross-compile - cd $WORKING_DIRECTORY;cd $SOURCE_DIRECTORY; make distclean; \ - ./configure --host=$TARGET_HOST --build=$BUILD_HOST --prefix=$PREFIX \ - --with-build-python=$(which $PYTHON_EXE) \ - --disable-ipv6 \ - ac_cv_host=$AC_TARGET_HOST \ - ac_cv_buggy_getaddrinfo=no \ - ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no \ - ac_cv_have_long_long_format=yes \ - ac_cv_pthread_is_default=no ac_cv_pthread=yes ac_cv_cxx_thread=yes; \ - make -j; \ - # make install here is fine because we include --prefix in the configure statement - make install - - -# -# Minimal cross-compilation environment -# - -FROM wpilib/${ARCH}-cross-ubuntu-minimal:${VERSION}-${UBUNTU} AS crossenv - -RUN set -xe; \ - apt-get update; \ - apt-get install -y \ - binutils libreadline8 libncursesw6 libssl3 \ - libsqlite3-0 libgdbm6 libbz2-1.0 liblzma5 libffi8 zlib1g; \ - rm -rf /var/lib/apt/lists/* - -COPY --from=pycompile /usr/local /usr/local -COPY --from=pycompile /build/crosspy /build/crosspy - -ARG ARCH=invalid-arch -ARG TARGET_HOST=invalid-target-host -ARG EXTRA_CROSSENV_ARGS= - -RUN set -xe; \ - ldconfig; \ - python3.11 -m pip install 'crossenv~=1.6.1'; \ - python3.11 -m crossenv /build/crosspy/bin/python3.11 /build/venv --sysroot=$(${TARGET_HOST}-print-sysroot) --env UNIXCONFDIR=/build/venv/cross/etc ${EXTRA_CROSSENV_ARGS}; \ - /build/venv/bin/cross-pip install wheel; - -COPY pip-${ARCH}.conf /build/venv/cross/pip.conf -COPY os-release-${ARCH} /build/venv/cross/etc/os-release - -ENV RPYBUILD_PARALLEL=1 - diff --git a/cross-ubuntu-py/Dockerfile.py312 b/cross-ubuntu-py/Dockerfile.py312 deleted file mode 100644 index f6e5d5b..0000000 --- a/cross-ubuntu-py/Dockerfile.py312 +++ /dev/null @@ -1,109 +0,0 @@ - -ARG UBUNTU=invalid-ubuntu -ARG ARCH=invalid-arch -ARG VERSION=invalid-version - -FROM wpilib/${ARCH}-cross-ubuntu-minimal:${VERSION}-${UBUNTU} AS pycompile - -ARG TARGET_HOST=invalid-target-host -ARG AC_TARGET_HOST=invalid-ac-target-host - -ENV TARGET_HOST=${TARGET_HOST} -ENV AC_TARGET_HOST=${AC_TARGET_HOST} -ENV BUILD_HOST="x86_64" -ENV WORKING_DIRECTORY="/build" -ENV INSTALL_DIRECTORY="/build/crosspy" -ENV PYTHON_VERSION="3.12.8" -ENV PYTHON_FTP_VERSION="3.12.8" -ENV PYTHON_EXE="python3.12" -ENV SOURCE_DIRECTORY="Python-$PYTHON_VERSION" -ENV PYTHON_ARCHIVE="Python-$PYTHON_VERSION.tar.xz" -ENV PREFIX="$INSTALL_DIRECTORY" - -# -# Python compilation prereqs -# - -RUN set -xe; \ - apt-get update; \ - apt-get install -y build-essential checkinstall g++ libreadline-dev libncurses-dev libssl-dev \ - libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev lzma-dev libffi-dev zlib1g-dev; \ - # cleanup - rm -rf /var/lib/apt/lists/* - -# -# Python cross-compilation -# - -COPY 0001-Use-specified-host_cpu-when-cross-compiling-for-Linu.patch / - -RUN set -xe; \ - mkdir -p "$PREFIX"; \ - # Download - cd $WORKING_DIRECTORY; \ - wget -c https://www.python.org/ftp/python/$PYTHON_FTP_VERSION/$PYTHON_ARCHIVE; \ - rm -rf $SOURCE_DIRECTORY; \ - tar -xf $PYTHON_ARCHIVE; \ - cd $SOURCE_DIRECTORY; \ - # patch arm cpu hardcoding - patch -p1 < /0001-Use-specified-host_cpu-when-cross-compiling-for-Linu.patch; \ - # Build python for host - cd $WORKING_DIRECTORY;cd $SOURCE_DIRECTORY; \ - ./configure --enable-optimizations --with-ensurepip=install; \ - make -j; \ - make -j altinstall - -RUN set -xe; \ - # Remove build dependencies -- compilation uses host for some reason - apt-get remove -y libreadline-dev libncursesw5-dev libssl-dev \ - libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev liblzma-dev lzma-dev libffi-dev zlib1g-dev; \ - apt-get autoremove -y; - -RUN set -xe; \ - # cross-compile - cd $WORKING_DIRECTORY;cd $SOURCE_DIRECTORY; make distclean; \ - ./configure --host=$TARGET_HOST --build=$BUILD_HOST --prefix=$PREFIX \ - --with-build-python=$(which $PYTHON_EXE) \ - --disable-ipv6 \ - ac_cv_host=$AC_TARGET_HOST \ - ac_cv_buggy_getaddrinfo=no \ - ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no \ - ac_cv_have_long_long_format=yes \ - ac_cv_pthread_is_default=no ac_cv_pthread=yes ac_cv_cxx_thread=yes; \ - make -j; \ - # make install here is fine because we include --prefix in the configure statement - make install - - -# -# Minimal cross-compilation environment -# - -FROM wpilib/${ARCH}-cross-ubuntu-minimal:${VERSION}-${UBUNTU} AS crossenv - -RUN set -xe; \ - apt-get update; \ - apt-get install -y \ - binutils libreadline8 libncursesw6 libssl3 \ - libsqlite3-0 libgdbm6 libbz2-1.0 liblzma5 libffi8 zlib1g; \ - rm -rf /var/lib/apt/lists/* - -COPY --from=pycompile /usr/local /usr/local -COPY --from=pycompile /build/crosspy /build/crosspy - -ARG ARCH=invalid-arch -ARG TARGET_HOST=invalid-target-host -ARG MACHINE_ARG= -ARG EXTRA_CROSSENV_ARGS= - -RUN set -xe; \ - ldconfig; \ - python3.12 -m pip install 'crossenv~=1.6.1'; \ - python3.12 -m crossenv /build/crosspy/bin/python3.12 /build/venv ${MACHINE_ARG} --sysroot=$(${TARGET_HOST}-gcc -print-sysroot) --env UNIXCONFDIR=/build/venv/cross/etc ${EXTRA_CROSSENV_ARGS}; \ - /build/venv/bin/cross-pip install wheel; - -COPY pip-${ARCH}.conf /build/venv/cross/pip.conf -COPY os-release-${ARCH} /build/venv/cross/etc/os-release - -ENV RPYBUILD_PARALLEL=1 - diff --git a/cross-ubuntu-py/Dockerfile.raspbian-2027 b/cross-ubuntu-py/Dockerfile.raspbian-2027 deleted file mode 100644 index 075eacb..0000000 --- a/cross-ubuntu-py/Dockerfile.raspbian-2027 +++ /dev/null @@ -1,5 +0,0 @@ -ARG IMAGE=invalid-image - -FROM ${IMAGE} - -COPY pip-raspbian-2027.conf /build/venv/cross/pip.conf diff --git a/cross-ubuntu-py/os-release-raspbian b/cross-ubuntu-py/os-release-raspbian deleted file mode 100644 index 989a01d..0000000 --- a/cross-ubuntu-py/os-release-raspbian +++ /dev/null @@ -1,10 +0,0 @@ -PRETTY_NAME="Raspbian GNU/Linux 12 (bookworm)" -NAME="Raspbian GNU/Linux" -VERSION_ID="12" -VERSION="12 (bookworm)" -VERSION_CODENAME=bookworm -ID=raspbian -ID_LIKE=debian -HOME_URL="http://www.raspbian.org/" -SUPPORT_URL="http://www.raspbian.org/RaspbianForums" -BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs" diff --git a/cross-ubuntu-py/os-release-roborio b/cross-ubuntu-py/os-release-roborio deleted file mode 100644 index fcae265..0000000 --- a/cross-ubuntu-py/os-release-roborio +++ /dev/null @@ -1,5 +0,0 @@ -ID="nilrt-academic" -NAME="NI Linux Real-Time - Academic" -VERSION="8.15" -VERSION_ID="8.15" -PRETTY_NAME="NI Linux Real-Time - Academic 8.15" \ No newline at end of file diff --git a/cross-ubuntu-py/pip-raspbian-2027.conf b/cross-ubuntu-py/pip-raspbian-2027.conf deleted file mode 100644 index ac5bf1d..0000000 --- a/cross-ubuntu-py/pip-raspbian-2027.conf +++ /dev/null @@ -1,5 +0,0 @@ - -[global] -extra-index-url = - https://wpilib.jfrog.io/artifactory/api/pypi/wpilib-python-release-2027/simple - https://www.piwheels.org/simple \ No newline at end of file diff --git a/cross-ubuntu-py/pip-raspbian.conf b/cross-ubuntu-py/pip-raspbian.conf deleted file mode 100644 index db938f5..0000000 --- a/cross-ubuntu-py/pip-raspbian.conf +++ /dev/null @@ -1,5 +0,0 @@ - -[global] -extra-index-url = - https://wpilib.jfrog.io/artifactory/api/pypi/wpilib-python-release-2026/simple - https://www.piwheels.org/simple \ No newline at end of file diff --git a/cross-ubuntu-py/pip-roborio.conf b/cross-ubuntu-py/pip-roborio.conf deleted file mode 100644 index 2e5cc25..0000000 --- a/cross-ubuntu-py/pip-roborio.conf +++ /dev/null @@ -1,3 +0,0 @@ - -[global] -extra-index-url = https://wpilib.jfrog.io/artifactory/api/pypi/wpilib-python-release-2026/simple diff --git a/cross-ubuntu-py/py.mk b/cross-ubuntu-py/py.mk deleted file mode 100644 index cc43788..0000000 --- a/cross-ubuntu-py/py.mk +++ /dev/null @@ -1,244 +0,0 @@ - -UBUNTU?=22.04 -YEAR?=2026 -DOCKER_USER?=wpilib - -TYPE_RASPBIAN=raspbian -VERSION_RASPBIAN=bookworm -TARGET_HOST_RASPBIAN=armv6-bookworm-linux-gnueabihf -AC_TARGET_HOST_RASPBIAN=armv7l-bookworm-linux-gnueabihf - -TYPE_ROBORIO=roborio -VERSION_ROBORIO=2025 -TARGET_HOST_ROBORIO=arm-frc2025-linux-gnueabi -AC_TARGET_HOST_ROBORIO=armv7l-frc2025-linux-gnueabi - -TYPE_SYSTEMCORE=systemcore -VERSION_SYSTEMCORE=2027 -TARGET_HOST_SYSTEMCORE=aarch64-bookworm-linux-gnu -AC_TARGET_HOST_SYSTEMCORE=aarch64-bookworm-linux-gnu - - -.PHONY: build/cross-python -build/cross-python: \ - build/cross-raspbian-py311 \ - build/cross-raspbian-py312 \ - build/cross-roborio-py313 build/cross-systemcore-py313 build/cross-raspbian-py313 \ - build/cross-roborio-py314 build/cross-systemcore-py314 build/cross-raspbian-py314 - - -.PHONY: push/cross-python -push/cross-python: \ - push/cross-raspbian-py311 \ - push/cross-raspbian-py312 \ - push/cross-roborio-py313 push/cross-systemcore-py313 push/cross-raspbian-py313 \ - push/cross-roborio-py313 push/cross-systemcore-py314 push/cross-raspbian-py314 - - -# raspbian manylinux tags for crossenv -RPI_ML_VERSIONS := $(shell seq 36 -1 17) -RPI_MANYLINUX_TAGS := $(foreach v,$(RPI_ML_VERSIONS),--platform-tag=manylinux_2_$(v)_armv7l) - -# systemcore manylinux tags for crossenv -SC_ML_VERSIONS := $(shell seq 35 -1 17) -SC_MANYLINUX_TAGS := $(foreach v,$(SC_ML_VERSIONS),--platform-tag=manylinux_2_$(v)_aarch64) - - -# -# Python 3.11 -# - -.PHONY: build/cross-raspbian-py311 -build/cross-raspbian-py311: - cd cross-ubuntu-py && \ - docker build . \ - -t wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:$(YEAR)-$(VERSION_RASPBIAN)-$(UBUNTU)-py311 \ - --build-arg UBUNTU=$(UBUNTU) \ - --build-arg ARCH=$(TYPE_RASPBIAN) \ - --build-arg TARGET_HOST=$(TARGET_HOST_RASPBIAN) \ - --build-arg AC_TARGET_HOST=$(AC_TARGET_HOST_RASPBIAN) \ - --build-arg VERSION=$(VERSION_RASPBIAN) \ - --build-arg EXTRA_CROSSENV_ARGS="$(RPI_MANYLINUX_TAGS) --platform-tag=linux_armv7l" \ - -f Dockerfile.py311 - - cd cross-ubuntu-py && \ - docker build . \ - -t wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:2027-$(VERSION_RASPBIAN)-$(UBUNTU)-py311 \ - --build-arg IMAGE=wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:$(YEAR)-$(VERSION_RASPBIAN)-$(UBUNTU)-py311 \ - -f Dockerfile.raspbian-2027 - -.PHONY: push/cross-raspbian-py311 -push/cross-raspbian-py311: - docker push wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:$(YEAR)-$(VERSION_RASPBIAN)-$(UBUNTU)-py311 - - docker push wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:2027-$(VERSION_RASPBIAN)-$(UBUNTU)-py311 - - -# -# Python 3.12 -# - -.PHONY: build/cross-raspbian-py312 -build/cross-raspbian-py312: - cd cross-ubuntu-py && \ - docker build . \ - -t wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:$(YEAR)-$(VERSION_RASPBIAN)-$(UBUNTU)-py312 \ - --build-arg UBUNTU=$(UBUNTU) \ - --build-arg ARCH=$(TYPE_RASPBIAN) \ - --build-arg TARGET_HOST=$(TARGET_HOST_RASPBIAN) \ - --build-arg AC_TARGET_HOST=$(AC_TARGET_HOST_RASPBIAN) \ - --build-arg VERSION=$(VERSION_RASPBIAN) \ - --build-arg EXTRA_CROSSENV_ARGS="$(RPI_MANYLINUX_TAGS) --platform-tag=linux_armv7l" \ - -f Dockerfile.py312 - - cd cross-ubuntu-py && \ - docker build . \ - -t wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:2027-$(VERSION_RASPBIAN)-$(UBUNTU)-py312 \ - --build-arg IMAGE=wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:$(YEAR)-$(VERSION_RASPBIAN)-$(UBUNTU)-py312 \ - -f Dockerfile.raspbian-2027 - -.PHONY: push/cross-raspbian-py312 -push/cross-raspbian-py312: - docker push wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:$(YEAR)-$(VERSION_RASPBIAN)-$(UBUNTU)-py312 - - docker push wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:2027-$(VERSION_RASPBIAN)-$(UBUNTU)-py312 - - -# -# Python 3.13 -# - -.PHONY: build/cross-raspbian-py313 -build/cross-raspbian-py313: - cd cross-ubuntu-py && \ - docker build . \ - -t wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:$(YEAR)-$(VERSION_RASPBIAN)-$(UBUNTU)-py313 \ - --build-arg UBUNTU=$(UBUNTU) \ - --build-arg ARCH=$(TYPE_RASPBIAN) \ - --build-arg TARGET_HOST=$(TARGET_HOST_RASPBIAN) \ - --build-arg AC_TARGET_HOST=$(AC_TARGET_HOST_RASPBIAN) \ - --build-arg VERSION=$(VERSION_RASPBIAN) \ - --build-arg EXTRA_CROSS_CONFIGURE_ARGS="ac_cv_libatomic_needed=yes" \ - --build-arg EXTRA_CROSSENV_ARGS="$(RPI_MANYLINUX_TAGS) --platform-tag=linux_armv7l" \ - -f Dockerfile.py313 - - cd cross-ubuntu-py && \ - docker build . \ - -t wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:2027-$(VERSION_RASPBIAN)-$(UBUNTU)-py313 \ - --build-arg IMAGE=wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:$(YEAR)-$(VERSION_RASPBIAN)-$(UBUNTU)-py313 \ - -f Dockerfile.raspbian-2027 - -.PHONY: push/cross-raspbian-py313 -push/cross-raspbian-py313: - docker push wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:$(YEAR)-$(VERSION_RASPBIAN)-$(UBUNTU)-py313 - - docker push wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:2027-$(VERSION_RASPBIAN)-$(UBUNTU)-py313 - - -.PHONY: build/cross-roborio-py313 -build/cross-roborio-py313: - cd cross-ubuntu-py && \ - docker build . \ - -t wpilib/$(TYPE_ROBORIO)-cross-ubuntu:$(YEAR)-$(UBUNTU)-py313 \ - --build-arg UBUNTU=$(UBUNTU) \ - --build-arg ARCH=$(TYPE_ROBORIO) \ - --build-arg TARGET_HOST=$(TARGET_HOST_ROBORIO) \ - --build-arg AC_TARGET_HOST=$(AC_TARGET_HOST_ROBORIO) \ - --build-arg VERSION=$(VERSION_ROBORIO) \ - --build-arg MACHINE_ARG="--machine=roborio" \ - --build-arg EXTRA_CROSSENV_ARGS="--platform-tag=linux_roborio" \ - -f Dockerfile.py313 - -.PHONY: push/cross-roborio-py313 -push/cross-roborio-py313: - docker push wpilib/$(TYPE_ROBORIO)-cross-ubuntu:$(YEAR)-$(UBUNTU)-py313 - - - -.PHONY: build/cross-systemcore-py313 -build/cross-systemcore-py313: - cd cross-ubuntu-py && \ - docker build . \ - -t wpilib/$(TYPE_SYSTEMCORE)-cross-ubuntu:$(YEAR)-$(UBUNTU)-py313 \ - --build-arg UBUNTU=$(UBUNTU) \ - --build-arg ARCH=$(TYPE_SYSTEMCORE) \ - --build-arg TARGET_HOST=$(TARGET_HOST_SYSTEMCORE) \ - --build-arg AC_TARGET_HOST=$(AC_TARGET_HOST_SYSTEMCORE) \ - --build-arg VERSION=$(VERSION_SYSTEMCORE) \ - --build-arg MACHINE_ARG="--machine=systemcore" \ - --build-arg EXTRA_CROSSENV_ARGS="--platform-tag=linux_systemcore $(SC_MANYLINUX_TAGS) --platform-tag=linux_aarch64" \ - -f Dockerfile.py313 - -.PHONY: push/cross-systemcore-py313 -push/cross-systemcore-py313: - docker push wpilib/$(TYPE_SYSTEMCORE)-cross-ubuntu:$(YEAR)-$(UBUNTU)-py313 - - -# -# Python 3.14 -# - -.PHONY: build/cross-raspbian-py314 -build/cross-raspbian-py314: - cd cross-ubuntu-py && \ - docker build . \ - -t wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:$(YEAR)-$(VERSION_RASPBIAN)-$(UBUNTU)-py314 \ - --build-arg UBUNTU=$(UBUNTU) \ - --build-arg ARCH=$(TYPE_RASPBIAN) \ - --build-arg TARGET_HOST=$(TARGET_HOST_RASPBIAN) \ - --build-arg AC_TARGET_HOST=$(AC_TARGET_HOST_RASPBIAN) \ - --build-arg VERSION=$(VERSION_RASPBIAN) \ - --build-arg EXTRA_CROSS_CONFIGURE_ARGS="ac_cv_libatomic_needed=yes" \ - --build-arg EXTRA_CROSSENV_ARGS="$(RPI_MANYLINUX_TAGS) --platform-tag=linux_armv7l" \ - -f Dockerfile.py314 - - cd cross-ubuntu-py && \ - docker build . \ - -t wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:2027-$(VERSION_RASPBIAN)-$(UBUNTU)-py314 \ - --build-arg IMAGE=wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:$(YEAR)-$(VERSION_RASPBIAN)-$(UBUNTU)-py314 \ - -f Dockerfile.raspbian-2027 - -.PHONY: push/cross-raspbian-py314 -push/cross-raspbian-py314: - docker push wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:$(YEAR)-$(VERSION_RASPBIAN)-$(UBUNTU)-py314 - - docker push wpilib/$(TYPE_RASPBIAN)-cross-ubuntu:2027-$(VERSION_RASPBIAN)-$(UBUNTU)-py314 - - -.PHONY: build/cross-roborio-py314 -build/cross-roborio-py314: - cd cross-ubuntu-py && \ - docker build . \ - -t wpilib/$(TYPE_ROBORIO)-cross-ubuntu:$(YEAR)-$(UBUNTU)-py314 \ - --build-arg UBUNTU=$(UBUNTU) \ - --build-arg ARCH=$(TYPE_ROBORIO) \ - --build-arg TARGET_HOST=$(TARGET_HOST_ROBORIO) \ - --build-arg AC_TARGET_HOST=$(AC_TARGET_HOST_ROBORIO) \ - --build-arg VERSION=$(VERSION_ROBORIO) \ - --build-arg MACHINE_ARG="--machine=roborio" \ - --build-arg EXTRA_CROSSENV_ARGS="--platform-tag=linux_roborio" \ - -f Dockerfile.py314 - -.PHONY: push/cross-roborio-py314 -push/cross-roborio-py314: - docker push wpilib/$(TYPE_ROBORIO)-cross-ubuntu:$(YEAR)-$(UBUNTU)-py314 - - - -.PHONY: build/cross-systemcore-py314 -build/cross-systemcore-py314: - cd cross-ubuntu-py && \ - docker build . \ - -t wpilib/$(TYPE_SYSTEMCORE)-cross-ubuntu:$(YEAR)-$(UBUNTU)-py314 \ - --build-arg UBUNTU=$(UBUNTU) \ - --build-arg ARCH=$(TYPE_SYSTEMCORE) \ - --build-arg TARGET_HOST=$(TARGET_HOST_SYSTEMCORE) \ - --build-arg AC_TARGET_HOST=$(AC_TARGET_HOST_SYSTEMCORE) \ - --build-arg VERSION=$(VERSION_SYSTEMCORE) \ - --build-arg MACHINE_ARG="--machine=systemcore" \ - --build-arg EXTRA_CROSSENV_ARGS="--platform-tag=linux_systemcore $(SC_MANYLINUX_TAGS) --platform-tag=linux_aarch64" \ - -f Dockerfile.py314 - -.PHONY: push/cross-systemcore-py314 -push/cross-systemcore-py314: - docker push wpilib/$(TYPE_SYSTEMCORE)-cross-ubuntu:$(YEAR)-$(UBUNTU)-py314 \ No newline at end of file diff --git a/debian-base/Dockerfile.bookworm b/debian-base/Dockerfile.arm64.trixie similarity index 54% rename from debian-base/Dockerfile.bookworm rename to debian-base/Dockerfile.arm64.trixie index d7181df..7698f56 100644 --- a/debian-base/Dockerfile.bookworm +++ b/debian-base/Dockerfile.arm64.trixie @@ -1,13 +1,11 @@ -FROM debian:bookworm +FROM debian:trixie RUN apt-get update && apt-get install -y apt-transport-https \ ca-certificates \ gnupg \ - software-properties-common \ tzdata \ build-essential \ ca-certificates \ - clang-format-14 \ cmake \ curl \ fakeroot \ @@ -16,7 +14,6 @@ RUN apt-get update && apt-get install -y apt-transport-https \ gdb \ gfortran \ git \ - java-common \ libc6-dev \ libgl1-mesa-dev \ libglu1-mesa-dev \ @@ -31,20 +28,16 @@ RUN apt-get update && apt-get install -y apt-transport-https \ libxrandr-dev \ make \ mesa-common-dev \ + openjdk-25-jdk \ python3-dev \ python3-pip \ python3-setuptools \ sudo \ unzip \ wget \ - zip + zip \ + && rm -rf /var/lib/apt/lists/* -RUN curl https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null - -RUN echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list - -RUN apt update && apt install -y temurin-21-jdk && rm -rf /var/lib/apt/lists/* - -ENV JAVA_HOME=/usr/lib/jvm/temurin-21-jdk-arm64 +ENV JAVA_HOME=/usr/lib/jvm/java-25-openjdk-arm64 WORKDIR / diff --git a/ubuntu-base/Dockerfile.24.04 b/debian-base/Dockerfile.x64.trixie similarity index 52% rename from ubuntu-base/Dockerfile.24.04 rename to debian-base/Dockerfile.x64.trixie index 45f5fb5..20fd662 100644 --- a/ubuntu-base/Dockerfile.24.04 +++ b/debian-base/Dockerfile.x64.trixie @@ -1,17 +1,11 @@ -FROM ubuntu:24.04 +FROM debian:trixie RUN apt-get update && apt-get install -y apt-transport-https \ ca-certificates \ gnupg \ - software-properties-common \ - wget && \ - wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null && \ - echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ noble main' > /etc/apt/sources.list.d/kitware.list && \ - add-apt-repository ppa:git-core/ppa && \ - apt-get update && apt-get install -y tzdata && apt-get install -y \ + tzdata \ build-essential \ ca-certificates \ - clang-format-14 \ cmake \ curl \ fakeroot \ @@ -20,7 +14,6 @@ RUN apt-get update && apt-get install -y apt-transport-https \ gdb \ gfortran \ git \ - java-common \ libc6-dev \ libgl1-mesa-dev \ libglu1-mesa-dev \ @@ -35,7 +28,7 @@ RUN apt-get update && apt-get install -y apt-transport-https \ libxrandr-dev \ make \ mesa-common-dev \ - openjdk-17-jdk \ + openjdk-25-jdk \ python3-dev \ python3-pip \ python3-setuptools \ @@ -45,6 +38,6 @@ RUN apt-get update && apt-get install -y apt-transport-https \ zip \ && rm -rf /var/lib/apt/lists/* -ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 +ENV JAVA_HOME=/usr/lib/jvm/java-25-openjdk-amd64 WORKDIR / diff --git a/ubuntu-minimal-base/Dockerfile.22.04 b/debian-minimal-base/Dockerfile.trixie similarity index 86% rename from ubuntu-minimal-base/Dockerfile.22.04 rename to debian-minimal-base/Dockerfile.trixie index 80b478f..8d2024f 100644 --- a/ubuntu-minimal-base/Dockerfile.22.04 +++ b/debian-minimal-base/Dockerfile.trixie @@ -1,5 +1,4 @@ -ARG UBUNTU=22.04 -FROM ubuntu:${UBUNTU} +FROM debian:trixie RUN set -xe; \ apt-get update; \ diff --git a/raspbian-cross-ubuntu/Dockerfile.bookworm-2025 b/raspbian-cross-ubuntu/Dockerfile.bookworm-2025 deleted file mode 100644 index f560415..0000000 --- a/raspbian-cross-ubuntu/Dockerfile.bookworm-2025 +++ /dev/null @@ -1,9 +0,0 @@ -ARG UBUNTU=22.04 -ARG TYPE=base -FROM wpilib/ubuntu-${TYPE}:${UBUNTU} - - -# Install toolchain -RUN curl -SL https://github.com/wpilibsuite/opensdk/releases/download/v2025-1/armhf-raspi-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' - -WORKDIR / diff --git a/raspbian-cross-ubuntu/Dockerfile.bookworm-2027 b/raspbian-cross-ubuntu/Dockerfile.bookworm-2027 deleted file mode 100644 index b13594c..0000000 --- a/raspbian-cross-ubuntu/Dockerfile.bookworm-2027 +++ /dev/null @@ -1,13 +0,0 @@ -ARG UBUNTU=24.04 -ARG TYPE=base -FROM wpilib/ubuntu-${TYPE}:${UBUNTU} - - -# Install toolchain -RUN curl -SL https://github.com/wpilibsuite/opensdk/releases/download/v2025-2/armhf-raspi-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' - -RUN apt update && apt install -y openjdk-25-jdk && rm -rf /var/lib/apt/lists/* - -ENV JAVA_HOME=/usr/lib/jvm/java-25-openjdk-amd64 - -WORKDIR / diff --git a/roborio-cross-ubuntu/Dockerfile.2025 b/roborio-cross-ubuntu/Dockerfile.2025 deleted file mode 100644 index 9bedc94..0000000 --- a/roborio-cross-ubuntu/Dockerfile.2025 +++ /dev/null @@ -1,8 +0,0 @@ -ARG UBUNTU=22.04 -ARG TYPE=base -FROM wpilib/ubuntu-${TYPE}:${UBUNTU} - -# Install toolchain -RUN curl -SL https://github.com/wpilibsuite/opensdk/releases/download/v2025-1/cortexa9_vfpv3-roborio-academic-2025-x86_64-linux-gnu-Toolchain-12.1.0.tgz | sh -c 'mkdir -p /usr/local && cd /usr/local && tar xzf - --strip-components=2' - -WORKDIR / diff --git a/aarch64-cross-ubuntu/Dockerfile.bookworm-2027 b/systemcore-cross-debian/Dockerfile.trixie similarity index 59% rename from aarch64-cross-ubuntu/Dockerfile.bookworm-2027 rename to systemcore-cross-debian/Dockerfile.trixie index be51352..b9afd37 100644 --- a/aarch64-cross-ubuntu/Dockerfile.bookworm-2027 +++ b/systemcore-cross-debian/Dockerfile.trixie @@ -1,12 +1,10 @@ -ARG UBUNTU=24.04 +ARG VERSION=trixie ARG TYPE=base -FROM wpilib/ubuntu-${TYPE}:${UBUNTU} +FROM wpilib/debian-${TYPE}:${VERSION} # Install toolchain 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' -RUN apt update && apt install -y openjdk-25-jdk && rm -rf /var/lib/apt/lists/* - -ENV JAVA_HOME=/usr/lib/jvm/java-25-openjdk-amd64 +RUN apt update && apt install -y avahi-daemon && rm -rf /var/lib/apt/lists/* WORKDIR / diff --git a/systemcore-cross-ubuntu/Dockerfile.2027 b/systemcore-cross-ubuntu/Dockerfile.2027 deleted file mode 100644 index 4848585..0000000 --- a/systemcore-cross-ubuntu/Dockerfile.2027 +++ /dev/null @@ -1,12 +0,0 @@ -ARG UBUNTU=22.04 -ARG TYPE=base -FROM wpilib/ubuntu-${TYPE}:${UBUNTU} - -# Install toolchain -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' - -RUN apt update && apt install -y openjdk-25-jdk avahi-daemon && rm -rf /var/lib/apt/lists/* - -ENV JAVA_HOME=/usr/lib/jvm/java-25-openjdk-amd64 - -WORKDIR / diff --git a/ubuntu-base/Dockerfile.22.04 b/ubuntu-base/Dockerfile.22.04 deleted file mode 100644 index 7a0859b..0000000 --- a/ubuntu-base/Dockerfile.22.04 +++ /dev/null @@ -1,51 +0,0 @@ -FROM ubuntu:22.04 - -RUN apt-get update && apt-get install -y apt-transport-https \ - ca-certificates \ - gnupg \ - software-properties-common \ - wget && \ - wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null && \ - echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ jammy main' > /etc/apt/sources.list.d/kitware.list && \ - add-apt-repository ppa:git-core/ppa && \ - apt-get update && apt-get install -y tzdata && apt-get install -y \ - build-essential \ - ca-certificates \ - clang-format-14 \ - cmake \ - curl \ - fakeroot \ - g++ --no-install-recommends \ - gcc \ - gdb \ - gfortran \ - git \ - java-common \ - libc6-dev \ - libgl1-mesa-dev \ - libglu1-mesa-dev \ - libisl-dev \ - libopencv-dev \ - libopencv4.5-java \ - libvulkan-dev \ - libx11-dev \ - libxcursor-dev \ - libxi-dev \ - libxinerama-dev \ - libxrandr-dev \ - make \ - mesa-common-dev \ - openjdk-17-jdk \ - python-all-dev \ - python3-dev \ - python3-pip \ - python3-setuptools \ - sudo \ - unzip \ - wget \ - zip \ - && rm -rf /var/lib/apt/lists/* - -ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 - -WORKDIR / diff --git a/ubuntu-minimal-base/Dockerfile.24.04 b/ubuntu-minimal-base/Dockerfile.24.04 deleted file mode 100644 index 7bd66d3..0000000 --- a/ubuntu-minimal-base/Dockerfile.24.04 +++ /dev/null @@ -1,17 +0,0 @@ -ARG UBUNTU=24.04 -FROM ubuntu:${UBUNTU} - -RUN set -xe; \ - apt-get update; \ - apt-get install -y tzdata; \ - apt-get install -y \ - ca-certificates \ - curl \ - git \ - make \ - unzip \ - wget \ - zip; \ - rm -rf /var/lib/apt/lists/* - -WORKDIR /