diff --git a/.gitmodules b/.gitmodules index 2389af1..404228a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -7,3 +7,6 @@ [submodule "SDL2"] path = SDL2 url = https://github.com/spurious/SDL-mirror.git +[submodule "SDL_ttf"] + path = SDL_ttf + url = https://github.com/bminor/SDL_ttf.git diff --git a/Dockerfile.amd64.buster b/Dockerfile.amd64.buster index d2dcfcc..5aa8b45 100644 --- a/Dockerfile.amd64.buster +++ b/Dockerfile.amd64.buster @@ -1,16 +1,15 @@ FROM amd64/debian:buster -RUN set -ex && \ - export DEBIAN_FRONTEND=noninteractive && \ - apt-get update && \ - apt-get install -y g++ make devscripts fakeroot debhelper git nasm libgbm-dev libdrm-dev libsdl2-ttf-dev && \ - apt-get install -y --no-install-recommends libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libgl1-mesa-dev libegl1-mesa-dev libxkbcommon-dev wayland-protocols libopus-dev libva-dev libvdpau-dev && \ +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 libwayland-dev wayland-protocols libva-dev libvdpau-dev && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* COPY FFmpeg /opt/FFmpeg COPY nv-codec-headers /opt/nv-codec-headers 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 diff --git a/Dockerfile.l4t.bionic b/Dockerfile.l4t.bionic index 7873d80..c68bd6c 100644 --- a/Dockerfile.l4t.bionic +++ b/Dockerfile.l4t.bionic @@ -1,18 +1,17 @@ FROM nvcr.io/nvidia/l4t-base:r32.3.1 -RUN set -ex && \ - export DEBIAN_FRONTEND=noninteractive && \ +COPY scripts/install-base-deps.sh /opt/scripts/ +RUN /bin/bash -c /opt/scripts/install-base-deps.sh && \ echo "deb https://dl.bintray.com/cgutman/moonlight-l4t bionic main" >> /etc/apt/sources.list && \ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61 && \ apt-get update && \ apt-get install -y libnvmpi1.0.0 && \ - apt-get install -y g++ make devscripts fakeroot debhelper git nasm libgbm-dev libdrm-dev libsdl2-ttf-dev && \ - apt-get install -y --no-install-recommends libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libgl1-mesa-dev libegl1-mesa-dev libxkbcommon-dev libopus-dev && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* COPY FFmpeg /opt/FFmpeg COPY SDL2 /opt/SDL2 +COPY SDL_ttf /opt/SDL_ttf COPY scripts/build-deps.sh /opt/scripts/ COPY scripts/build-package.sh /opt/scripts/ diff --git a/Dockerfile.rpi.buster b/Dockerfile.rpi.buster index 327f55a..59029d8 100644 --- a/Dockerfile.rpi.buster +++ b/Dockerfile.rpi.buster @@ -1,19 +1,18 @@ FROM arm32v7/debian:buster -RUN set -ex && \ - export DEBIAN_FRONTEND=noninteractive && \ - apt-get update && \ +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 && \ apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 82B129927FA3303E && \ apt-get update && \ - apt-get install -y g++ make devscripts fakeroot debhelper git nasm libgbm-dev libdrm-dev libsdl2-ttf-dev && \ - apt-get install -y --no-install-recommends libraspberrypi-dev libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libgl1-mesa-dev libegl1-mesa-dev libxkbcommon-dev libopus-dev && \ + apt-get install -y --no-install-recommends libraspberrypi-dev && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* 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 diff --git a/SDL_ttf b/SDL_ttf new file mode 160000 index 0000000..687150b --- /dev/null +++ b/SDL_ttf @@ -0,0 +1 @@ +Subproject commit 687150bb1a457fff6822a49cdc23c61cb5d2d8db diff --git a/debian/control b/debian/control index 50733b7..22e748d 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, libgl1-mesa-dev, libegl1-mesa-dev, libxkbcommon-dev, libopus-dev, libsdl2-ttf-dev, wayland-protocols [amd64], libva-dev [amd64], libvdpau-dev [amd64], libraspberrypi-dev [armhf] | rbp-userland-dev-osmc [armhf] +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, libwayland-dev [amd64], wayland-protocols [amd64], libva-dev [amd64], libvdpau-dev [amd64], libraspberrypi-dev [armhf] | rbp-userland-dev-osmc [armhf], libnvmpi1.0.0 [arm64] Package: moonlight Architecture: any diff --git a/scripts/build-deps.sh b/scripts/build-deps.sh index a1ab737..33832d5 100755 --- a/scripts/build-deps.sh +++ b/scripts/build-deps.sh @@ -26,15 +26,26 @@ else exit 1 fi -# Remove the existing SDL2 library (but not SDL_ttf) -find /usr/include/SDL2 -type f -not -name 'SDL_ttf.h' -delete -rm -fv /usr/lib/*-linux-*/libSDL2-* -rm -fv /usr/lib/*-linux-*/libSDL2.* -rm -fv /usr/lib/*-linux-*/pkgconfig/sdl2.pc - +# Build and install our SDL2 build +# Since we'll be linking statically, we need to use Libs.private instead of Libs, but +# there's no way to tell QMake to use the Libs.private section, so we have to replace +# Libs with Libs.private ourselves prior to installation. cd /opt/SDL2 ./configure --enable-static --disable-shared --enable-video-kmsdrm make -j$(nproc) +sed -i '/^Libs:/d' sdl2.pc +sed -i 's/Libs.private:/Libs:/g' sdl2.pc +cat sdl2.pc +make install + +# Build and install SDL_ttf +# For similar reasons to SDL2 above, we have to patch the pkgconfig file in order to +# link with a static library. +cd /opt/SDL_ttf +./configure --enable-static --disable-shared +make -j$(nproc) +sed -i 's/-lSDL2_ttf/-lSDL2_ttf -lfreetype/g' SDL2_ttf.pc +cat SDL2_ttf.pc make install cd /opt/FFmpeg diff --git a/scripts/install-base-deps.sh b/scripts/install-base-deps.sh new file mode 100755 index 0000000..01e0877 --- /dev/null +++ b/scripts/install-base-deps.sh @@ -0,0 +1,5 @@ +set -e +export DEBIAN_FRONTEND=noninteractive +apt-get update +apt-get install -y g++ make 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 +apt-get install -y --no-install-recommends libssl-dev qtbase5-dev qtquickcontrols2-5-dev qtdeclarative5-dev libqt5svg5-dev libopus-dev