From 2532b76429a8dfab564b55ecefb180475efaab0f Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Wed, 16 Oct 2024 02:14:02 +0000 Subject: [PATCH] Add Jammy and Noble builds of the generic embedded package --- Dockerfile.aarch64.bullseye | 3 --- Dockerfile.aarch64.jammy | 22 ++++++++++++++++++++++ Dockerfile.aarch64.noble | 22 ++++++++++++++++++++++ Dockerfile.armhf.bullseye | 3 --- Dockerfile.armhf.jammy | 22 ++++++++++++++++++++++ Dockerfile.armhf.noble | 22 ++++++++++++++++++++++ build-aarch64-jammy.sh | 4 ++++ build-aarch64-noble.sh | 4 ++++ build-armhf-jammy.sh | 4 ++++ build-armhf-noble.sh | 4 ++++ do-release.sh | 13 +++++++++++++ push-images.sh | 9 +++++++++ scripts/build-deps.sh | 6 +++--- scripts/install-base-deps.sh | 11 ++++++++++- 14 files changed, 139 insertions(+), 10 deletions(-) create mode 100644 Dockerfile.aarch64.jammy create mode 100644 Dockerfile.aarch64.noble create mode 100644 Dockerfile.armhf.jammy create mode 100644 Dockerfile.armhf.noble create mode 100755 build-aarch64-jammy.sh create mode 100755 build-aarch64-noble.sh create mode 100755 build-armhf-jammy.sh create mode 100755 build-armhf-noble.sh diff --git a/Dockerfile.aarch64.bullseye b/Dockerfile.aarch64.bullseye index 1f091bb..f26e38f 100644 --- a/Dockerfile.aarch64.bullseye +++ b/Dockerfile.aarch64.bullseye @@ -5,9 +5,6 @@ ENV DISTRO=bullseye COPY scripts/install-base-deps.sh /opt/scripts/ RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ - echo "deb http://deb.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list && \ - apt-get update && \ - apt-get install -y --no-install-recommends linux-libc-dev/bullseye-backports && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* diff --git a/Dockerfile.aarch64.jammy b/Dockerfile.aarch64.jammy new file mode 100644 index 0000000..d63224e --- /dev/null +++ b/Dockerfile.aarch64.jammy @@ -0,0 +1,22 @@ +FROM arm64v8/ubuntu:jammy + +ENV TARGET=embedded +ENV DISTRO=jammy + +COPY scripts/install-base-deps.sh /opt/scripts/ +RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ + apt-get clean -y && \ + rm -rf /var/lib/apt/lists/* + +COPY dav1d /opt/dav1d +COPY FFmpeg /opt/FFmpeg +COPY SDL2 /opt/SDL2 +COPY SDL_ttf /opt/SDL_ttf + +COPY scripts/build-deps.sh /opt/scripts/ +RUN /bin/bash -c /opt/scripts/build-deps.sh + +COPY scripts/build-package.sh /opt/scripts/ + +VOLUME "/out" +ENTRYPOINT [ "/bin/bash", "-c", "/opt/scripts/build-package.sh" ] diff --git a/Dockerfile.aarch64.noble b/Dockerfile.aarch64.noble new file mode 100644 index 0000000..196ca40 --- /dev/null +++ b/Dockerfile.aarch64.noble @@ -0,0 +1,22 @@ +FROM arm64v8/ubuntu:noble + +ENV TARGET=embedded +ENV DISTRO=noble + +COPY scripts/install-base-deps.sh /opt/scripts/ +RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ + apt-get clean -y && \ + rm -rf /var/lib/apt/lists/* + +COPY dav1d /opt/dav1d +COPY FFmpeg /opt/FFmpeg +COPY SDL2 /opt/SDL2 +COPY SDL_ttf /opt/SDL_ttf + +COPY scripts/build-deps.sh /opt/scripts/ +RUN /bin/bash -c /opt/scripts/build-deps.sh + +COPY scripts/build-package.sh /opt/scripts/ + +VOLUME "/out" +ENTRYPOINT [ "/bin/bash", "-c", "/opt/scripts/build-package.sh" ] diff --git a/Dockerfile.armhf.bullseye b/Dockerfile.armhf.bullseye index 3bb4b9c..1a7fb90 100644 --- a/Dockerfile.armhf.bullseye +++ b/Dockerfile.armhf.bullseye @@ -5,9 +5,6 @@ ENV DISTRO=bullseye COPY scripts/install-base-deps.sh /opt/scripts/ RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ - echo "deb http://deb.debian.org/debian bullseye-backports main" >> /etc/apt/sources.list && \ - apt-get update && \ - apt-get install -y --no-install-recommends linux-libc-dev/bullseye-backports && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* diff --git a/Dockerfile.armhf.jammy b/Dockerfile.armhf.jammy new file mode 100644 index 0000000..580c5f6 --- /dev/null +++ b/Dockerfile.armhf.jammy @@ -0,0 +1,22 @@ +FROM arm32v7/ubuntu:jammy + +ENV TARGET=embedded +ENV DISTRO=jammy + +COPY scripts/install-base-deps.sh /opt/scripts/ +RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ + apt-get clean -y && \ + rm -rf /var/lib/apt/lists/* + +COPY dav1d /opt/dav1d +COPY FFmpeg /opt/FFmpeg +COPY SDL2 /opt/SDL2 +COPY SDL_ttf /opt/SDL_ttf + +COPY scripts/build-deps.sh /opt/scripts/ +RUN /bin/bash -c /opt/scripts/build-deps.sh + +COPY scripts/build-package.sh /opt/scripts/ + +VOLUME "/out" +ENTRYPOINT [ "/bin/bash", "-c", "/opt/scripts/build-package.sh" ] diff --git a/Dockerfile.armhf.noble b/Dockerfile.armhf.noble new file mode 100644 index 0000000..9cf0642 --- /dev/null +++ b/Dockerfile.armhf.noble @@ -0,0 +1,22 @@ +FROM arm32v7/ubuntu:noble + +ENV TARGET=embedded +ENV DISTRO=noble + +COPY scripts/install-base-deps.sh /opt/scripts/ +RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ + apt-get clean -y && \ + rm -rf /var/lib/apt/lists/* + +COPY dav1d /opt/dav1d +COPY FFmpeg /opt/FFmpeg +COPY SDL2 /opt/SDL2 +COPY SDL_ttf /opt/SDL_ttf + +COPY scripts/build-deps.sh /opt/scripts/ +RUN /bin/bash -c /opt/scripts/build-deps.sh + +COPY scripts/build-package.sh /opt/scripts/ + +VOLUME "/out" +ENTRYPOINT [ "/bin/bash", "-c", "/opt/scripts/build-package.sh" ] diff --git a/build-aarch64-jammy.sh b/build-aarch64-jammy.sh new file mode 100755 index 0000000..898ce5f --- /dev/null +++ b/build-aarch64-jammy.sh @@ -0,0 +1,4 @@ +TARGET_NAME="aarch64-jammy" +DOCKERFILE="Dockerfile.aarch64.jammy" + +. ./build-common.sh diff --git a/build-aarch64-noble.sh b/build-aarch64-noble.sh new file mode 100755 index 0000000..11495fb --- /dev/null +++ b/build-aarch64-noble.sh @@ -0,0 +1,4 @@ +TARGET_NAME="aarch64-noble" +DOCKERFILE="Dockerfile.aarch64.noble" + +. ./build-common.sh diff --git a/build-armhf-jammy.sh b/build-armhf-jammy.sh new file mode 100755 index 0000000..2913505 --- /dev/null +++ b/build-armhf-jammy.sh @@ -0,0 +1,4 @@ +TARGET_NAME="armhf-jammy" +DOCKERFILE="Dockerfile.armhf.jammy" + +. ./build-common.sh diff --git a/build-armhf-noble.sh b/build-armhf-noble.sh new file mode 100755 index 0000000..5c7f713 --- /dev/null +++ b/build-armhf-noble.sh @@ -0,0 +1,4 @@ +TARGET_NAME="armhf-noble" +DOCKERFILE="Dockerfile.armhf.noble" + +. ./build-common.sh diff --git a/do-release.sh b/do-release.sh index 051f3f1..c3b6e18 100755 --- a/do-release.sh +++ b/do-release.sh @@ -16,8 +16,13 @@ set -e ./build-l4t-noble.sh $1 & ./build-rpi-buster.sh $1 & ./build-rpi64-buster.sh $1 & +./build-aarch64-jammy.sh $1 & +wait +./build-armhf-jammy.sh $1 & ./build-armhf-bullseye.sh $1 & ./build-aarch64-bullseye.sh $1 & +./build-armhf-noble.sh $1 & +./build-aarch64-noble.sh $1 & wait ./build-rpi-bookworm.sh $1 & ./build-rpi64-bookworm.sh $1 & @@ -42,6 +47,10 @@ cloudsmith push deb moonlight-game-streaming/moonlight-qt/debian/bookworm out_ar cloudsmith push deb moonlight-game-streaming/moonlight-qt/debian/bullseye out_aarch64-bullseye/moonlight-qt_*.deb cloudsmith push deb moonlight-game-streaming/moonlight-qt/debian/bookworm out_aarch64-bookworm/moonlight-qt_*.deb cloudsmith push deb moonlight-game-streaming/moonlight-qt/debian/sid out_riscv64-sid/moonlight-qt_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/ubuntu/jammy out_armhf-jammy/moonlight-qt_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/ubuntu/noble out_armhf-noble/moonlight-qt_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/ubuntu/jammy out_aarch64-jammy/moonlight-qt_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/ubuntu/noble out_aarch64-noble/moonlight-qt_*.deb # Push the moonlight-qt-dbgsym packages to Cloudsmith repos cloudsmith push deb moonlight-game-streaming/moonlight-l4t/ubuntu/bionic out_l4t-bionic/moonlight-qt-dbgsym_*.ddeb @@ -58,3 +67,7 @@ cloudsmith push deb moonlight-game-streaming/moonlight-qt/debian/bookworm out_ar cloudsmith push deb moonlight-game-streaming/moonlight-qt/debian/bullseye out_aarch64-bullseye/moonlight-qt-dbgsym_*.deb cloudsmith push deb moonlight-game-streaming/moonlight-qt/debian/bookworm out_aarch64-bookworm/moonlight-qt-dbgsym_*.deb cloudsmith push deb moonlight-game-streaming/moonlight-qt/debian/sid out_riscv64-sid/moonlight-qt-dbgsym_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/ubuntu/jammy out_armhf-jammy/moonlight-qt-dbgsym_*.ddeb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/ubuntu/noble out_armhf-noble/moonlight-qt-dbgsym_*.ddeb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/ubuntu/jammy out_aarch64-jammy/moonlight-qt-dbgsym_*.ddeb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/ubuntu/noble out_aarch64-noble/moonlight-qt-dbgsym_*.ddeb diff --git a/push-images.sh b/push-images.sh index 712f334..557b375 100755 --- a/push-images.sh +++ b/push-images.sh @@ -15,7 +15,12 @@ docker build --pull -f Dockerfile.rpi64.buster -t cgutman/moonlight-packaging:rp docker build --pull -f Dockerfile.rpi.bookworm -t cgutman/moonlight-packaging:rpi-bookworm_$TAG_UNIQUE_ID . & docker build --pull -f Dockerfile.rpi64.bookworm -t cgutman/moonlight-packaging:rpi64-bookworm_$TAG_UNIQUE_ID . & docker build --pull -f Dockerfile.l4t.bionic -t cgutman/moonlight-packaging:l4t-bionic_$TAG_UNIQUE_ID . & +wait docker build --pull -f Dockerfile.l4t.noble -t cgutman/moonlight-packaging:l4t-noble_$TAG_UNIQUE_ID . & +docker build --pull -f Dockerfile.aarch64.jammy -t cgutman/moonlight-packaging:aarch64-jammy_$TAG_UNIQUE_ID . & +docker build --pull -f Dockerfile.aarch64.noble -t cgutman/moonlight-packaging:aarch64-noble_$TAG_UNIQUE_ID . & +docker build --pull -f Dockerfile.armhf.jammy -t cgutman/moonlight-packaging:armhf-jammy_$TAG_UNIQUE_ID . & +docker build --pull -f Dockerfile.armhf.noble -t cgutman/moonlight-packaging:armhf-noble_$TAG_UNIQUE_ID . & wait docker build --pull -f Dockerfile.aarch64.bullseye -t cgutman/moonlight-packaging:aarch64-bullseye_$TAG_UNIQUE_ID . & docker build --pull -f Dockerfile.aarch64.bookworm -t cgutman/moonlight-packaging:aarch64-bookworm_$TAG_UNIQUE_ID . & @@ -36,4 +41,8 @@ docker push cgutman/moonlight-packaging:armhf-bullseye_$TAG_UNIQUE_ID docker push cgutman/moonlight-packaging:armhf-bookworm_$TAG_UNIQUE_ID docker push cgutman/moonlight-packaging:aarch64-bullseye_$TAG_UNIQUE_ID docker push cgutman/moonlight-packaging:aarch64-bookworm_$TAG_UNIQUE_ID +docker push cgutman/moonlight-packaging:armhf-jammy_$TAG_UNIQUE_ID +docker push cgutman/moonlight-packaging:armhf-noble_$TAG_UNIQUE_ID +docker push cgutman/moonlight-packaging:aarch64-jammy_$TAG_UNIQUE_ID +docker push cgutman/moonlight-packaging:aarch64-noble_$TAG_UNIQUE_ID docker push cgutman/moonlight-packaging:riscv64-sid_$TAG_UNIQUE_ID diff --git a/scripts/build-deps.sh b/scripts/build-deps.sh index 9c212c6..ebdb02c 100755 --- a/scripts/build-deps.sh +++ b/scripts/build-deps.sh @@ -1,6 +1,6 @@ set -e -BASE_FFMPEG_ARGS="--enable-pic --enable-static --disable-shared --disable-all --disable-vulkan --enable-avcodec --enable-swscale --enable-decoder=h264 --enable-decoder=hevc --enable-decoder=av1 --enable-libdav1d --enable-decoder=libdav1d --enable-libdrm --enable-decoder=h264_v4l2m2m --enable-decoder=hevc_v4l2m2m --extra-cflags=-I/usr/include/libdrm" +BASE_FFMPEG_ARGS="--fatal-warnings --enable-pic --enable-static --disable-shared --disable-all --disable-vulkan --enable-avcodec --enable-swscale --enable-decoder=h264 --enable-decoder=hevc --enable-decoder=av1 --enable-libdav1d --enable-decoder=libdav1d --enable-libdrm --enable-decoder=h264_v4l2m2m --enable-decoder=hevc_v4l2m2m --extra-cflags=-I/usr/include/libdrm" echo "Building dependencies for $TARGET" if [ "$TARGET" == "rpi" ] || [ "$TARGET" == "rpi64" ]; then @@ -18,8 +18,8 @@ if [ "$TARGET" == "rpi" ] || [ "$TARGET" == "rpi64" ]; then sed -i 's|-lmmal_vc_client|-lmmal_vc_client -lbcm_host -lvcos -lvcsm -lvchostif -lvchiq_arm|g' /opt/FFmpeg/configure fi - # Enable VL42 stateless decoders - EXTRA_FFMPEG_ARGS="--enable-sand --enable-libudev --enable-v4l2-request --enable-hwaccel=h264_v4l2request --enable-hwaccel=hevc_v4l2request" + # Enable HEVC VL42 stateless decoder (H.264 is stateful on Pi 4 and absent on Pi 5) + EXTRA_FFMPEG_ARGS="--enable-sand --enable-libudev --enable-v4l2-request --enable-hwaccel=hevc_v4l2request" if [ "$DISTRO" == "buster" ]; then # Copy libraspberrypi-dev pkgconfig files into the default location diff --git a/scripts/install-base-deps.sh b/scripts/install-base-deps.sh index 43b89f5..a6df0a1 100755 --- a/scripts/install-base-deps.sh +++ b/scripts/install-base-deps.sh @@ -1,9 +1,10 @@ + set -e export DEBIAN_FRONTEND=noninteractive apt-get update apt-get install -y curl g++ make ninja-build devscripts fakeroot debhelper git nasm libgbm-dev libdrm-dev libasound2-dev libdbus-1-dev libegl1-mesa-dev libgl1-mesa-dev libgles2-mesa-dev libglu1-mesa-dev libibus-1.0-dev libpulse-dev libudev-dev libx11-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxkbcommon-dev libxrandr-dev libxss-dev libxt-dev libxv-dev libxxf86vm-dev cmake -apt-get install -y --no-install-recommends libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libopus-dev +apt-get install -y --no-install-recommends libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libopus-dev gnupg if [ "$DISTRO" != "buster" ] && [ "$DISTRO" != "bionic" ]; then apt-get install -y libfreetype-dev libpipewire-0.3-dev @@ -21,3 +22,11 @@ fi if [ "$DISTRO" != "buster" ] && [ "$DISTRO" != "bullseye" ] && [ "$DISTRO" != "bionic" ]; then apt-get install -y wayland-protocols libwayland-dev libdecor-0-dev fi + +if [ "$TARGET" == "embedded" ] && [ "$DISTRO" != "sid" ]; then + # Grab latest kernel headers from Bookworm to pick up the latest V4L2 defs + apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 6ED0E7B82643E131 + echo "deb http://deb.debian.org/debian bookworm-backports main" >> /etc/apt/sources.list + apt-get update + apt-get install -y --no-install-recommends linux-libc-dev/bookworm-backports +fi