From 72ec8408068673fc6cbab06bd1e7c11f60757e0a Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Tue, 19 Sep 2023 23:43:43 +0000 Subject: [PATCH] Rework the build scripts and dockerfiles with generic embedded targets --- Dockerfile.aarch64.bookworm | 22 ++++++++++++ Dockerfile.aarch64.bullseye | 25 +++++++++++++ Dockerfile.amd64.buster | 1 + Dockerfile.armhf.bookworm | 22 ++++++++++++ Dockerfile.armhf.bullseye | 25 +++++++++++++ Dockerfile.l4t.bionic | 1 + Dockerfile.riscv64.sid | 22 ++++++++++++ Dockerfile.rpi.bookworm | 27 ++++++++++++++ Dockerfile.rpi.buster | 3 +- Dockerfile.rpi64.bookworm | 28 +++++++++++++++ ...le.rpi.buster64 => Dockerfile.rpi64.buster | 3 +- FFmpeg | 2 +- appveyor.yml | 8 ++--- build-aarch64-bookworm.sh | 4 +++ build-aarch64-bullseye.sh | 4 +++ build-amd64-buster.sh | 4 +++ build-amd64.sh | 24 ------------- build-armhf-bookworm.sh | 4 +++ build-armhf-bullseye.sh | 4 +++ build-l4t.sh => build-common.sh | 3 -- build-l4t-bionic.sh | 4 +++ build-riscv64-sid.sh | 4 +++ build-rpi-bookworm.sh | 4 +++ build-rpi-buster.sh | 4 +++ build-rpi.sh | 24 ------------- build-rpi64-bookworm.sh | 4 +++ build-rpi64-buster.sh | 4 +++ build-rpi64.sh | 24 ------------- debian/control | 2 +- do-release.sh | 35 +++++++++++++++---- push-images.sh | 18 ++++++++-- scripts/build-deps.sh | 5 ++- scripts/build-package.sh | 18 ++++++++-- scripts/install-base-deps.sh | 16 +++++++-- 34 files changed, 304 insertions(+), 98 deletions(-) create mode 100644 Dockerfile.aarch64.bookworm create mode 100644 Dockerfile.aarch64.bullseye create mode 100644 Dockerfile.armhf.bookworm create mode 100644 Dockerfile.armhf.bullseye create mode 100644 Dockerfile.riscv64.sid create mode 100644 Dockerfile.rpi.bookworm create mode 100644 Dockerfile.rpi64.bookworm rename Dockerfile.rpi.buster64 => Dockerfile.rpi64.buster (87%) create mode 100755 build-aarch64-bookworm.sh create mode 100755 build-aarch64-bullseye.sh create mode 100755 build-amd64-buster.sh delete mode 100755 build-amd64.sh create mode 100755 build-armhf-bookworm.sh create mode 100755 build-armhf-bullseye.sh rename build-l4t.sh => build-common.sh (92%) create mode 100755 build-l4t-bionic.sh create mode 100755 build-riscv64-sid.sh create mode 100755 build-rpi-bookworm.sh create mode 100755 build-rpi-buster.sh delete mode 100755 build-rpi.sh create mode 100755 build-rpi64-bookworm.sh create mode 100755 build-rpi64-buster.sh delete mode 100755 build-rpi64.sh diff --git a/Dockerfile.aarch64.bookworm b/Dockerfile.aarch64.bookworm new file mode 100644 index 0000000..b0d8acc --- /dev/null +++ b/Dockerfile.aarch64.bookworm @@ -0,0 +1,22 @@ +FROM arm64v8/debian:bookworm + +ENV TARGET=embedded +ENV DISTRO=bookworm + +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.bullseye b/Dockerfile.aarch64.bullseye new file mode 100644 index 0000000..1f091bb --- /dev/null +++ b/Dockerfile.aarch64.bullseye @@ -0,0 +1,25 @@ +FROM arm64v8/debian:bullseye + +ENV TARGET=embedded +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/* + +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.amd64.buster b/Dockerfile.amd64.buster index 00007a6..c47b365 100644 --- a/Dockerfile.amd64.buster +++ b/Dockerfile.amd64.buster @@ -1,6 +1,7 @@ FROM amd64/debian:buster ENV TARGET=desktop +ENV DISTRO=buster COPY scripts/install-base-deps.sh /opt/scripts/ RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ diff --git a/Dockerfile.armhf.bookworm b/Dockerfile.armhf.bookworm new file mode 100644 index 0000000..cffd4af --- /dev/null +++ b/Dockerfile.armhf.bookworm @@ -0,0 +1,22 @@ +FROM arm32v7/debian:bookworm + +ENV TARGET=embedded +ENV DISTRO=bookworm + +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 new file mode 100644 index 0000000..3bb4b9c --- /dev/null +++ b/Dockerfile.armhf.bullseye @@ -0,0 +1,25 @@ +FROM arm32v7/debian:bullseye + +ENV TARGET=embedded +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/* + +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.l4t.bionic b/Dockerfile.l4t.bionic index 07a1953..8d6d9ed 100644 --- a/Dockerfile.l4t.bionic +++ b/Dockerfile.l4t.bionic @@ -1,6 +1,7 @@ FROM nvcr.io/nvidia/l4t-base:r32.3.1 ENV TARGET=l4t +ENV DISTRO=bionic COPY scripts/install-base-deps.sh /opt/scripts/ RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ diff --git a/Dockerfile.riscv64.sid b/Dockerfile.riscv64.sid new file mode 100644 index 0000000..672716d --- /dev/null +++ b/Dockerfile.riscv64.sid @@ -0,0 +1,22 @@ +FROM riscv64/debian:sid + +ENV TARGET=embedded +ENV DISTRO=sid + +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.rpi.bookworm b/Dockerfile.rpi.bookworm new file mode 100644 index 0000000..d6d63c2 --- /dev/null +++ b/Dockerfile.rpi.bookworm @@ -0,0 +1,27 @@ +FROM arm32v7/debian:bookworm + +ENV TARGET=rpi +ENV DISTRO=bookworm + +COPY scripts/install-base-deps.sh /opt/scripts/ +RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ + apt-get install -y --no-install-recommends gnupg && \ + echo "deb http://archive.raspberrypi.org/debian/ $DISTRO main" >> /etc/apt/sources.list && \ + apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 82B129927FA3303E && \ + apt-get update && \ + apt-get install -y --no-install-recommends libraspberrypi-dev linux-libc-dev && \ + apt-get clean -y && \ + rm -rf /var/lib/apt/lists/* + +COPY dav1d /opt/dav1d +COPY FFmpeg-rpi /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.rpi.buster b/Dockerfile.rpi.buster index aad88d4..857172f 100644 --- a/Dockerfile.rpi.buster +++ b/Dockerfile.rpi.buster @@ -1,11 +1,12 @@ FROM arm32v7/debian:buster ENV TARGET=rpi +ENV DISTRO=buster COPY scripts/install-base-deps.sh /opt/scripts/ RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ apt-get install -y --no-install-recommends gnupg && \ - echo "deb http://archive.raspberrypi.org/debian/ buster main" >> /etc/apt/sources.list && \ + echo "deb http://archive.raspberrypi.org/debian/ $DISTRO main" >> /etc/apt/sources.list && \ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 82B129927FA3303E && \ apt-get update && \ apt-get install -y --no-install-recommends libraspberrypi-dev linux-libc-dev && \ diff --git a/Dockerfile.rpi64.bookworm b/Dockerfile.rpi64.bookworm new file mode 100644 index 0000000..7310794 --- /dev/null +++ b/Dockerfile.rpi64.bookworm @@ -0,0 +1,28 @@ +FROM arm64v8/debian:bookworm + +ENV TARGET=rpi64 +ENV DISTRO=bookworm + +COPY scripts/install-base-deps.sh /opt/scripts/ +RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ + apt-get install -y --no-install-recommends gnupg && \ + echo "deb http://archive.raspberrypi.org/debian/ $DISTRO main" >> /etc/apt/sources.list && \ + apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 82B129927FA3303E && \ + apt-get update && \ + apt-get install -y --no-install-recommends linux-libc-dev && \ + apt-get clean -y && \ + rm -rf /var/lib/apt/lists/* + +COPY rpi-userland /opt/rpi-userland +COPY dav1d /opt/dav1d +COPY FFmpeg-rpi /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.rpi.buster64 b/Dockerfile.rpi64.buster similarity index 87% rename from Dockerfile.rpi.buster64 rename to Dockerfile.rpi64.buster index a878c40..297c29d 100644 --- a/Dockerfile.rpi.buster64 +++ b/Dockerfile.rpi64.buster @@ -1,11 +1,12 @@ FROM arm64v8/debian:buster ENV TARGET=rpi64 +ENV DISTRO=buster COPY scripts/install-base-deps.sh /opt/scripts/ RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ apt-get install -y --no-install-recommends gnupg && \ - echo "deb http://archive.raspberrypi.org/debian/ buster main" >> /etc/apt/sources.list && \ + echo "deb http://archive.raspberrypi.org/debian/ $DISTRO main" >> /etc/apt/sources.list && \ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 82B129927FA3303E && \ apt-get update && \ apt-get install -y --no-install-recommends linux-libc-dev && \ diff --git a/FFmpeg b/FFmpeg index 3392f30..7000b53 160000 --- a/FFmpeg +++ b/FFmpeg @@ -1 +1 @@ -Subproject commit 3392f308128ffca4f9795d4331ca9418481fcf8e +Subproject commit 7000b5396c723d6d962b08278c36b50984ab13a4 diff --git a/appveyor.yml b/appveyor.yml index ce2819f..0da821a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -5,13 +5,13 @@ clone_depth: 1 environment: matrix: - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 - BUILD_SCRIPT: ./build-amd64.sh + BUILD_SCRIPT: ./build-amd64-buster.sh - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 - BUILD_SCRIPT: ./build-rpi.sh + BUILD_SCRIPT: ./build-rpi-buster.sh - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 - BUILD_SCRIPT: ./build-rpi64.sh + BUILD_SCRIPT: ./build-rpi64-buster.sh - APPVEYOR_BUILD_WORKER_IMAGE: Ubuntu2004 - BUILD_SCRIPT: ./build-l4t.sh + BUILD_SCRIPT: ./build-l4t-bionic.sh install: - sh: 'sudo apt update || true' diff --git a/build-aarch64-bookworm.sh b/build-aarch64-bookworm.sh new file mode 100755 index 0000000..a9d5f8f --- /dev/null +++ b/build-aarch64-bookworm.sh @@ -0,0 +1,4 @@ +TARGET_NAME="aarch64-bookworm" +DOCKERFILE="Dockerfile.aarch64.bookworm" + +source ./build-common.sh diff --git a/build-aarch64-bullseye.sh b/build-aarch64-bullseye.sh new file mode 100755 index 0000000..9d19aab --- /dev/null +++ b/build-aarch64-bullseye.sh @@ -0,0 +1,4 @@ +TARGET_NAME="aarch64-bullseye" +DOCKERFILE="Dockerfile.aarch64.bullseye" + +source ./build-common.sh diff --git a/build-amd64-buster.sh b/build-amd64-buster.sh new file mode 100755 index 0000000..b46c80e --- /dev/null +++ b/build-amd64-buster.sh @@ -0,0 +1,4 @@ +TARGET_NAME="amd64-buster" +DOCKERFILE="Dockerfile.amd64.buster" + +source ./build-common.sh diff --git a/build-amd64.sh b/build-amd64.sh deleted file mode 100755 index 5ade8c0..0000000 --- a/build-amd64.sh +++ /dev/null @@ -1,24 +0,0 @@ -TARGET_NAME="amd64-buster" -DOCKERFILE="Dockerfile.amd64.buster" - -TAG_UNIQUE_ID=`git ls-tree HEAD | sha256sum | cut -c-16` -TAG_NAME="${TARGET_NAME}_${TAG_UNIQUE_ID}" -OUT_DIR="out_$TARGET_NAME" - -docker pull cgutman/moonlight-packaging:$TAG_NAME -PULL_EXIT_CODE=$? - -rm -rf $OUT_DIR - -set -e -mkdir $OUT_DIR - -if [ $PULL_EXIT_CODE -eq 0 ]; then - echo Using pre-built Docker image - cgutman/moonlight-packaging:$TAG_NAME -else - echo Pre-built image not available - building cgutman/moonlight-packaging:$TAG_NAME - docker build --pull -f $DOCKERFILE -t cgutman/moonlight-packaging:$TAG_NAME . - echo Built Docker image - cgutman/moonlight-packaging:$TAG_NAME -fi - -docker run --rm --mount type=bind,source="$(pwd)"/$OUT_DIR,target=/out --mount type=bind,source="$(pwd)"/debian,target=/opt/debian -e COMMIT="$1" cgutman/moonlight-packaging:$TAG_NAME diff --git a/build-armhf-bookworm.sh b/build-armhf-bookworm.sh new file mode 100755 index 0000000..b24b8f4 --- /dev/null +++ b/build-armhf-bookworm.sh @@ -0,0 +1,4 @@ +TARGET_NAME="armhf-bookworm" +DOCKERFILE="Dockerfile.armhf.bookworm" + +source ./build-common.sh diff --git a/build-armhf-bullseye.sh b/build-armhf-bullseye.sh new file mode 100755 index 0000000..2925213 --- /dev/null +++ b/build-armhf-bullseye.sh @@ -0,0 +1,4 @@ +TARGET_NAME="armhf-bullseye" +DOCKERFILE="Dockerfile.armhf.bullseye" + +source ./build-common.sh diff --git a/build-l4t.sh b/build-common.sh similarity index 92% rename from build-l4t.sh rename to build-common.sh index 5dbdedc..fae698d 100755 --- a/build-l4t.sh +++ b/build-common.sh @@ -1,6 +1,3 @@ -TARGET_NAME="l4t-bionic" -DOCKERFILE="Dockerfile.l4t.bionic" - TAG_UNIQUE_ID=`git ls-tree HEAD | sha256sum | cut -c-16` TAG_NAME="${TARGET_NAME}_${TAG_UNIQUE_ID}" OUT_DIR="out_$TARGET_NAME" diff --git a/build-l4t-bionic.sh b/build-l4t-bionic.sh new file mode 100755 index 0000000..5dad14a --- /dev/null +++ b/build-l4t-bionic.sh @@ -0,0 +1,4 @@ +TARGET_NAME="l4t-bionic" +DOCKERFILE="Dockerfile.l4t.bionic" + +source ./build-common.sh diff --git a/build-riscv64-sid.sh b/build-riscv64-sid.sh new file mode 100755 index 0000000..f61822a --- /dev/null +++ b/build-riscv64-sid.sh @@ -0,0 +1,4 @@ +TARGET_NAME="riscv64-sid" +DOCKERFILE="Dockerfile.riscv64.sid" + +source ./build-common.sh diff --git a/build-rpi-bookworm.sh b/build-rpi-bookworm.sh new file mode 100755 index 0000000..cc985e3 --- /dev/null +++ b/build-rpi-bookworm.sh @@ -0,0 +1,4 @@ +TARGET_NAME="rpi-bookworm" +DOCKERFILE="Dockerfile.rpi.bookworm" + +source ./build-common.sh diff --git a/build-rpi-buster.sh b/build-rpi-buster.sh new file mode 100755 index 0000000..f6a996d --- /dev/null +++ b/build-rpi-buster.sh @@ -0,0 +1,4 @@ +TARGET_NAME="rpi-buster" +DOCKERFILE="Dockerfile.rpi.buster" + +source ./build-common.sh diff --git a/build-rpi.sh b/build-rpi.sh deleted file mode 100755 index 1ccac10..0000000 --- a/build-rpi.sh +++ /dev/null @@ -1,24 +0,0 @@ -TARGET_NAME="rpi-buster" -DOCKERFILE="Dockerfile.rpi.buster" - -TAG_UNIQUE_ID=`git ls-tree HEAD | sha256sum | cut -c-16` -TAG_NAME="${TARGET_NAME}_${TAG_UNIQUE_ID}" -OUT_DIR="out_$TARGET_NAME" - -docker pull cgutman/moonlight-packaging:$TAG_NAME -PULL_EXIT_CODE=$? - -rm -rf $OUT_DIR - -set -e -mkdir $OUT_DIR - -if [ $PULL_EXIT_CODE -eq 0 ]; then - echo Using pre-built Docker image - cgutman/moonlight-packaging:$TAG_NAME -else - echo Pre-built image not available - building cgutman/moonlight-packaging:$TAG_NAME - docker build --pull -f $DOCKERFILE -t cgutman/moonlight-packaging:$TAG_NAME . - echo Built Docker image - cgutman/moonlight-packaging:$TAG_NAME -fi - -docker run --rm --mount type=bind,source="$(pwd)"/$OUT_DIR,target=/out --mount type=bind,source="$(pwd)"/debian,target=/opt/debian -e COMMIT="$1" cgutman/moonlight-packaging:$TAG_NAME diff --git a/build-rpi64-bookworm.sh b/build-rpi64-bookworm.sh new file mode 100755 index 0000000..6e6d406 --- /dev/null +++ b/build-rpi64-bookworm.sh @@ -0,0 +1,4 @@ +TARGET_NAME="rpi64-bookworm" +DOCKERFILE="Dockerfile.rpi64.bookworm" + +source ./build-common.sh diff --git a/build-rpi64-buster.sh b/build-rpi64-buster.sh new file mode 100755 index 0000000..0af9085 --- /dev/null +++ b/build-rpi64-buster.sh @@ -0,0 +1,4 @@ +TARGET_NAME="rpi64-buster" +DOCKERFILE="Dockerfile.rpi64.buster" + +source ./build-common.sh diff --git a/build-rpi64.sh b/build-rpi64.sh deleted file mode 100755 index 7d0992d..0000000 --- a/build-rpi64.sh +++ /dev/null @@ -1,24 +0,0 @@ -TARGET_NAME="rpi-buster64" -DOCKERFILE="Dockerfile.rpi.buster64" - -TAG_UNIQUE_ID=`git ls-tree HEAD | sha256sum | cut -c-16` -TAG_NAME="${TARGET_NAME}_${TAG_UNIQUE_ID}" -OUT_DIR="out_$TARGET_NAME" - -docker pull cgutman/moonlight-packaging:$TAG_NAME -PULL_EXIT_CODE=$? - -rm -rf $OUT_DIR - -set -e -mkdir $OUT_DIR - -if [ $PULL_EXIT_CODE -eq 0 ]; then - echo Using pre-built Docker image - cgutman/moonlight-packaging:$TAG_NAME -else - echo Pre-built image not available - building cgutman/moonlight-packaging:$TAG_NAME - docker build --pull -f $DOCKERFILE -t cgutman/moonlight-packaging:$TAG_NAME . - echo Built Docker image - cgutman/moonlight-packaging:$TAG_NAME -fi - -docker run --rm --mount type=bind,source="$(pwd)"/$OUT_DIR,target=/out --mount type=bind,source="$(pwd)"/debian,target=/opt/debian -e COMMIT="$1" cgutman/moonlight-packaging:$TAG_NAME diff --git a/debian/control b/debian/control index 5d68cf8..154c85e 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Maintainer: Cameron Gutman Section: misc Priority: optional Standards-Version: 4.3.0 -Build-Depends: debhelper (>= 10), libssl-dev, qtbase5-dev, qtquickcontrols2-5-dev, qtdeclarative5-dev, libqt5svg5-dev, libxkbcommon-dev, libopus-dev, libgbm-dev, libdrm-dev, libfreetype6-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, libxrandr-dev, libxss-dev, libxt-dev, libxv-dev, libxxf86vm-dev, EXTRA_BUILD_DEPS +Build-Depends: debhelper (>= 10), libssl-dev, qtbase5-dev, qtquickcontrols2-5-dev, qtdeclarative5-dev, libqt5svg5-dev, libxkbcommon-dev, libopus-dev, libgbm-dev, libdrm-dev, libasound2-dev, libdbus-1-dev, libegl1-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, libxrandr-dev, libxss-dev, libxt-dev, libxv-dev, libxxf86vm-dev, EXTRA_BUILD_DEPS Package: moonlight-qt Architecture: any diff --git a/do-release.sh b/do-release.sh index 05950a2..424686f 100755 --- a/do-release.sh +++ b/do-release.sh @@ -12,21 +12,42 @@ set -e ./push-images.sh # Build the packages -./build-l4t.sh $1 & -./build-rpi.sh $1 & -./build-rpi64.sh $1 & +./build-l4t-bionic.sh $1 & +./build-rpi-buster.sh $1 & +./build-rpi64-buster.sh $1 & +./build-armhf-bullseye.sh $1 & +./build-aarch64-bullseye.sh $1 & +#./build-rpi-bookworm.sh $1 & +#./build-rpi64-bookworm.sh $1 & +./build-armhf-bookworm.sh $1 & +./build-aarch64-bookworm.sh $1 & +./build-riscv64-sid.sh $1 & wait # Push the moonlight-qt packages to Cloudsmith repos cloudsmith push deb moonlight-game-streaming/moonlight-l4t/ubuntu/bionic out_l4t-bionic/moonlight-qt_*.deb cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/buster out_rpi-buster/moonlight-qt_*.deb cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/bullseye out_rpi-buster/moonlight-qt_*.deb -cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/buster out_rpi-buster64/moonlight-qt_*.deb -cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/bullseye out_rpi-buster64/moonlight-qt_*.deb +#cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/bookworm out_rpi-bookworm/moonlight-qt_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/buster out_rpi64-buster/moonlight-qt_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/bullseye out_rpi64-buster/moonlight-qt_*.deb +#cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/bookworm out_rpi64-bookworm/moonlight-qt_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/debian/bullseye out_armhf-bullseye/moonlight-qt_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/debian/bookworm out_armhf-bookworm/moonlight-qt_*.deb +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 # 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 cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/buster out_rpi-buster/moonlight-qt-dbgsym_*.deb cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/bullseye out_rpi-buster/moonlight-qt-dbgsym_*.deb -cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/buster out_rpi-buster64/moonlight-qt-dbgsym_*.deb -cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/bullseye out_rpi-buster64/moonlight-qt-dbgsym_*.deb +#cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/bookworm out_rpi-bookworm/moonlight-qt-dbgsym_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/buster out_rpi64-buster/moonlight-qt-dbgsym_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/bullseye out_rpi64-buster/moonlight-qt-dbgsym_*.deb +#cloudsmith push deb moonlight-game-streaming/moonlight-qt/raspbian/bookworm out_rpi64-bookworm/moonlight-qt-dbgsym_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/debian/bullseye out_armhf-bullseye/moonlight-qt-dbgsym_*.deb +cloudsmith push deb moonlight-game-streaming/moonlight-qt/debian/bookworm out_armhf-bookworm/moonlight-qt-dbgsym_*.deb +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 diff --git a/push-images.sh b/push-images.sh index d5c8fb0..c59df58 100755 --- a/push-images.sh +++ b/push-images.sh @@ -3,12 +3,26 @@ set -e TAG_UNIQUE_ID=`git ls-tree HEAD | sha256sum | cut -c-16` docker build --pull -f Dockerfile.rpi.buster -t cgutman/moonlight-packaging:rpi-buster_$TAG_UNIQUE_ID . & -docker build --pull -f Dockerfile.rpi.buster64 -t cgutman/moonlight-packaging:rpi-buster64_$TAG_UNIQUE_ID . & +docker build --pull -f Dockerfile.rpi64.buster -t cgutman/moonlight-packaging:rpi64-buster_$TAG_UNIQUE_ID . & +#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.amd64.buster -t cgutman/moonlight-packaging:amd64-buster_$TAG_UNIQUE_ID . & docker build --pull -f Dockerfile.l4t.bionic -t cgutman/moonlight-packaging:l4t-bionic_$TAG_UNIQUE_ID . & +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 . & +docker build --pull -f Dockerfile.armhf.bullseye -t cgutman/moonlight-packaging:armhf-bullseye_$TAG_UNIQUE_ID . & +docker build --pull -f Dockerfile.armhf.bookworm -t cgutman/moonlight-packaging:armhf-bookworm_$TAG_UNIQUE_ID . & +docker build --pull -f Dockerfile.riscv64.sid -t cgutman/moonlight-packaging:riscv64-sid_$TAG_UNIQUE_ID . & wait docker push cgutman/moonlight-packaging:rpi-buster_$TAG_UNIQUE_ID -docker push cgutman/moonlight-packaging:rpi-buster64_$TAG_UNIQUE_ID +docker push cgutman/moonlight-packaging:rpi64-buster_$TAG_UNIQUE_ID +#docker push cgutman/moonlight-packaging:rpi-bookworm_$TAG_UNIQUE_ID +#docker push cgutman/moonlight-packaging:rpi64-bookworm_$TAG_UNIQUE_ID docker push cgutman/moonlight-packaging:amd64-buster_$TAG_UNIQUE_ID docker push cgutman/moonlight-packaging:l4t-bionic_$TAG_UNIQUE_ID +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:riscv64-sid_$TAG_UNIQUE_ID diff --git a/scripts/build-deps.sh b/scripts/build-deps.sh index bccaeac..d5555cc 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 --enable-avcodec --enable-decoder=h264 --enable-decoder=hevc --enable-decoder=av1 --enable-libdrm --enable-decoder=h264_v4l2m2m --enable-decoder=hevc_v4l2m2m --extra-cflags=-I/usr/include/libdrm" +BASE_FFMPEG_ARGS="--enable-pic --enable-static --disable-shared --disable-all --disable-vulkan --enable-avcodec --enable-decoder=h264 --enable-decoder=hevc --enable-decoder=av1 --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 @@ -33,6 +33,9 @@ elif [ "$TARGET" == "desktop" ]; then # Enable VAAPI, VDPAU, and NVDEC decoders EXTRA_FFMPEG_ARGS="--enable-nvdec --enable-hwaccel=h264_nvdec --enable-hwaccel=hevc_nvdec --enable-hwaccel=av1_nvdec --enable-hwaccel=h264_vaapi --enable-hwaccel=hevc_vaapi --enable-hwaccel=av1_vaapi --enable-hwaccel=h264_vdpau --enable-hwaccel=hevc_vdpau --enable-hwaccel=av1_vdpau" +elif [ "$TARGET" == "embedded" ]; then + # Enable stateless V4L2 support + EXTRA_FFMPEG_ARGS="--enable-v4l2-request --enable-hwaccel=h264_v4l2request --enable-hwaccel=hevc_v4l2request" else echo "Unrecognized target: $TARGET" exit 1 diff --git a/scripts/build-package.sh b/scripts/build-package.sh index ac55723..8b36071 100755 --- a/scripts/build-package.sh +++ b/scripts/build-package.sh @@ -18,18 +18,30 @@ if [ "$TARGET" == "rpi" ]; then EXTRA_DEPS="libraspberrypi0 | rbp-userland-osmc" EXTRA_CONFIG="CONFIG+=glslow" elif [ "$TARGET" == "rpi64" ]; then - EXTRA_BUILD_DEPS="" - EXTRA_DEPS="" EXTRA_CONFIG="CONFIG+=glslow" elif [ "$TARGET" == "l4t" ]; then - EXTRA_BUILD_DEPS="" + EXTRA_DEPS="" elif [ "$TARGET" == "desktop" ]; then EXTRA_BUILD_DEPS="libwayland-dev, wayland-protocols, libva-dev, libvdpau-dev" +elif [ "$TARGET" == "embedded" ]; then + EXTRA_CONFIG="CONFIG+=glslow" else echo "Unrecognized target: $TARGET" exit 1 fi +# Determine extra distro-specific dependencies +if [ "$DISTRO" != "buster" ] && [ $DISTRO != "bionic" ]; then + EXTRA_BUILD_DEPS="$EXTRA_BUILD_DEPS, libfreetype-dev" +else + EXTRA_BUILD_DEPS="$EXTRA_BUILD_DEPS, libfreetype6-dev" +fi +if [ "$DISTRO" != "bionic" ]; then + EXTRA_BUILD_DEPS="$EXTRA_BUILD_DEPS, libgl-dev" +else + EXTRA_BUILD_DEPS="$EXTRA_BUILD_DEPS, libgl1-mesa-dev" +fi + # Create a build directory mkdir /opt/build diff --git a/scripts/install-base-deps.sh b/scripts/install-base-deps.sh index 0518fb4..a22dd9b 100755 --- a/scripts/install-base-deps.sh +++ b/scripts/install-base-deps.sh @@ -1,6 +1,18 @@ set -e export DEBIAN_FRONTEND=noninteractive + apt-get update -apt-get install -y curl g++ make ninja-build python3-pip devscripts fakeroot debhelper git nasm libgbm-dev libdrm-dev libfreetype6-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 curl g++ make ninja-build meson 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 -pip3 install meson==0.61.5 # Last version compatible with Python 3.6 on Bionic + +if [ "$DISTRO" != "buster" ] && [ "$DISTRO" != "bionic" ]; then + apt-get install -y libfreetype-dev +else + apt-get install -y libfreetype6-dev +fi + +if [ "$DISTRO" != "bionic" ]; then + apt-get install -y libgl-dev +else + apt-get install -y libgl1-mesa-dev +fi