From d5528cd4217319515d6f2ca6a5b0676daa52f2c4 Mon Sep 17 00:00:00 2001 From: James Le Cuirot Date: Sun, 4 Jun 2023 18:09:04 +0100 Subject: net-misc/moonlight: New package Signed-off-by: James Le Cuirot --- net-misc/moonlight/Manifest | 1 + .../files/moonlight-4.3.1-automagic.patch | 136 +++++++++++++++++++++ .../moonlight/files/moonlight-9999-automagic.patch | 136 +++++++++++++++++++++ net-misc/moonlight/metadata.xml | 19 +++ net-misc/moonlight/moonlight-4.3.1.ebuild | 83 +++++++++++++ net-misc/moonlight/moonlight-9999.ebuild | 84 +++++++++++++ 6 files changed, 459 insertions(+) create mode 100644 net-misc/moonlight/Manifest create mode 100644 net-misc/moonlight/files/moonlight-4.3.1-automagic.patch create mode 100644 net-misc/moonlight/files/moonlight-9999-automagic.patch create mode 100644 net-misc/moonlight/metadata.xml create mode 100644 net-misc/moonlight/moonlight-4.3.1.ebuild create mode 100644 net-misc/moonlight/moonlight-9999.ebuild (limited to 'net-misc') diff --git a/net-misc/moonlight/Manifest b/net-misc/moonlight/Manifest new file mode 100644 index 000000000000..acf0147bd96b --- /dev/null +++ b/net-misc/moonlight/Manifest @@ -0,0 +1 @@ +DIST MoonlightSrc-4.3.1.tar.gz 71454450 BLAKE2B cd6d8d95c3d53dbf73850cd30f86bdb9837806a642472454d70f6abee20ae91bc79c0671c4da0a74fb5f43086841a8318718c4f2f4e4768b395fb4b38d1dde9e SHA512 f5f7b23929aadb87716470522a315cba40d8155be6b76297eab4107e0fef71b48f9f4c9a4cc2b58bd48579db052a8ca8ecda9b49c78c3d229863a30886cf1847 diff --git a/net-misc/moonlight/files/moonlight-4.3.1-automagic.patch b/net-misc/moonlight/files/moonlight-4.3.1-automagic.patch new file mode 100644 index 000000000000..10a6914f4dea --- /dev/null +++ b/net-misc/moonlight/files/moonlight-4.3.1-automagic.patch @@ -0,0 +1,136 @@ +From ff49dcfa47f673bcd27314b03ba68f99f7619c39 Mon Sep 17 00:00:00 2001 +From: James Le Cuirot +Date: Sat, 3 Jun 2023 17:51:00 +0100 +Subject: [PATCH] Allow forced disabling of features instead of relying on + pkg-config + +So-called "automagic" behaviour is considered unhelpful by +distributions. A user may unintentionally build Moonlight with VDPAU +support simply because they had that library installed, only for the +whole application to break when they uninstall the library later. This +could happen on any distribution, but it should especially be avoided on +source-based distributions, where the user would not expect the package +manager to encounter such issues. + +This commit is best viewed without whitespace changes. +--- + app/app.pro | 92 +++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 57 insertions(+), 35 deletions(-) + +diff --git a/app/app.pro b/app/app.pro +index dc21b854..45ee1f89 100644 +--- a/app/app.pro ++++ b/app/app.pro +@@ -65,52 +65,74 @@ unix:!macx { + CONFIG += link_pkgconfig + PKGCONFIG += openssl sdl2 SDL2_ttf opus + +- packagesExist(libavcodec) { +- PKGCONFIG += libavcodec libavutil +- CONFIG += ffmpeg +- +- packagesExist(libva) { +- packagesExist(libva-x11) { +- CONFIG += libva-x11 ++ !disable-ffmpeg { ++ packagesExist(libavcodec) { ++ PKGCONFIG += libavcodec libavutil ++ CONFIG += ffmpeg ++ ++ !disable-libva { ++ packagesExist(libva) { ++ !disable-x11 { ++ packagesExist(libva-x11) { ++ CONFIG += libva-x11 ++ } ++ } ++ !disable-wayland { ++ packagesExist(libva-wayland) { ++ CONFIG += libva-wayland ++ } ++ } ++ !disable-libdrm { ++ packagesExist(libva-drm) { ++ CONFIG += libva-drm ++ } ++ } ++ CONFIG += libva ++ } + } +- packagesExist(libva-wayland) { +- CONFIG += libva-wayland ++ ++ !disable-libvdpau { ++ packagesExist(vdpau) { ++ CONFIG += libvdpau ++ } + } +- packagesExist(libva-drm) { +- CONFIG += libva-drm ++ ++ !disable-mmal { ++ packagesExist(mmal) { ++ PKGCONFIG += mmal ++ CONFIG += mmal ++ } + } +- CONFIG += libva +- } + +- packagesExist(vdpau) { +- CONFIG += libvdpau +- } ++ !disable-libdrm { ++ packagesExist(libdrm) { ++ PKGCONFIG += libdrm ++ CONFIG += libdrm ++ } ++ } + +- packagesExist(mmal) { +- PKGCONFIG += mmal +- CONFIG += mmal ++ !disable-cuda { ++ packagesExist(ffnvcodec) { ++ PKGCONFIG += ffnvcodec ++ CONFIG += cuda ++ } ++ } + } + +- packagesExist(libdrm) { +- PKGCONFIG += libdrm +- CONFIG += libdrm ++ !disable-wayland { ++ packagesExist(wayland-client) { ++ DEFINES += HAS_WAYLAND ++ PKGCONFIG += wayland-client ++ } + } + +- packagesExist(ffnvcodec) { +- PKGCONFIG += ffnvcodec +- CONFIG += cuda ++ !disable-x11 { ++ packagesExist(x11) { ++ DEFINES += HAS_X11 ++ PKGCONFIG += x11 ++ } + } + } +- +- packagesExist(wayland-client) { +- DEFINES += HAS_WAYLAND +- PKGCONFIG += wayland-client +- } +- +- packagesExist(x11) { +- DEFINES += HAS_X11 +- PKGCONFIG += x11 +- } + } + win32 { + LIBS += -llibssl -llibcrypto -lSDL2 -lSDL2_ttf -lavcodec -lavutil -lopus -ldxgi -ld3d11 +-- +2.40.1 + diff --git a/net-misc/moonlight/files/moonlight-9999-automagic.patch b/net-misc/moonlight/files/moonlight-9999-automagic.patch new file mode 100644 index 000000000000..1a2b56ceea7a --- /dev/null +++ b/net-misc/moonlight/files/moonlight-9999-automagic.patch @@ -0,0 +1,136 @@ +From 3bd5c3728b5469e88dcba794e371e9b028c47df8 Mon Sep 17 00:00:00 2001 +From: James Le Cuirot +Date: Sat, 3 Jun 2023 17:51:00 +0100 +Subject: [PATCH] Allow forced disabling of features instead of relying on + pkg-config + +So-called "automagic" behaviour is considered unhelpful by +distributions. A user may unintentionally build Moonlight with VDPAU +support simply because they had that library installed, only for the +whole application to break when they uninstall the library later. This +could happen on any distribution, but it should especially be avoided on +source-based distributions, where the user would not expect the package +manager to encounter such issues. + +This commit is best viewed without whitespace changes. +--- + app/app.pro | 92 +++++++++++++++++++++++++++++++++-------------------- + 1 file changed, 57 insertions(+), 35 deletions(-) + +diff --git a/app/app.pro b/app/app.pro +index 82d941e7..85f38dd4 100644 +--- a/app/app.pro ++++ b/app/app.pro +@@ -65,52 +65,74 @@ unix:!macx { + CONFIG += link_pkgconfig + PKGCONFIG += openssl sdl2 SDL2_ttf opus + +- packagesExist(libavcodec) { +- PKGCONFIG += libavcodec libavutil +- CONFIG += ffmpeg +- +- packagesExist(libva) { +- packagesExist(libva-x11) { +- CONFIG += libva-x11 ++ !disable-ffmpeg { ++ packagesExist(libavcodec) { ++ PKGCONFIG += libavcodec libavutil ++ CONFIG += ffmpeg ++ ++ !disable-libva { ++ packagesExist(libva) { ++ !disable-x11 { ++ packagesExist(libva-x11) { ++ CONFIG += libva-x11 ++ } ++ } ++ !disable-wayland { ++ packagesExist(libva-wayland) { ++ CONFIG += libva-wayland ++ } ++ } ++ !disable-libdrm { ++ packagesExist(libva-drm) { ++ CONFIG += libva-drm ++ } ++ } ++ CONFIG += libva ++ } + } +- packagesExist(libva-wayland) { +- CONFIG += libva-wayland ++ ++ !disable-libvdpau { ++ packagesExist(vdpau) { ++ CONFIG += libvdpau ++ } + } +- packagesExist(libva-drm) { +- CONFIG += libva-drm ++ ++ !disable-mmal { ++ packagesExist(mmal) { ++ PKGCONFIG += mmal ++ CONFIG += mmal ++ } + } +- CONFIG += libva +- } + +- packagesExist(vdpau) { +- CONFIG += libvdpau +- } ++ !disable-libdrm { ++ packagesExist(libdrm) { ++ PKGCONFIG += libdrm ++ CONFIG += libdrm ++ } ++ } + +- packagesExist(mmal) { +- PKGCONFIG += mmal +- CONFIG += mmal ++ !disable-cuda { ++ packagesExist(ffnvcodec) { ++ PKGCONFIG += ffnvcodec ++ CONFIG += cuda ++ } ++ } + } + +- packagesExist(libdrm) { +- PKGCONFIG += libdrm +- CONFIG += libdrm ++ !disable-wayland { ++ packagesExist(wayland-client) { ++ CONFIG += wayland ++ PKGCONFIG += wayland-client ++ } + } + +- packagesExist(ffnvcodec) { +- PKGCONFIG += ffnvcodec +- CONFIG += cuda ++ !disable-x11 { ++ packagesExist(x11) { ++ DEFINES += HAS_X11 ++ PKGCONFIG += x11 ++ } + } + } +- +- packagesExist(wayland-client) { +- CONFIG += wayland +- PKGCONFIG += wayland-client +- } +- +- packagesExist(x11) { +- DEFINES += HAS_X11 +- PKGCONFIG += x11 +- } + } + win32 { + LIBS += -llibssl -llibcrypto -lSDL2 -lSDL2_ttf -lavcodec -lavutil -lopus -ldxgi -ld3d11 +-- +2.40.1 + diff --git a/net-misc/moonlight/metadata.xml b/net-misc/moonlight/metadata.xml new file mode 100644 index 000000000000..7b6d9ea7ef4f --- /dev/null +++ b/net-misc/moonlight/metadata.xml @@ -0,0 +1,19 @@ + + + + + chewi@gentoo.org + James Le Cuirot + + + moonlight-stream/moonlight-qt + + + Enable accelerated video rendering on NVIDIA hardware + Optimize UI for fullscreen non-desktop usage + Prefer direct KMS/DRM rendering over EGL/GLES rendering for better performance on some weaker GPUs + Enable video rendering via x11-libs/libdrm + Enable accelerated video rendering on the Raspberry Pi + Enable sound output via media-libs/libsoundio instead of media-libs/libsdl2 + + diff --git a/net-misc/moonlight/moonlight-4.3.1.ebuild b/net-misc/moonlight/moonlight-4.3.1.ebuild new file mode 100644 index 000000000000..382261a3d519 --- /dev/null +++ b/net-misc/moonlight/moonlight-4.3.1.ebuild @@ -0,0 +1,83 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +if [[ ${PV} = 9999* ]]; then + EGIT_REPO_URI="https://github.com/moonlight-stream/moonlight-qt.git" + EGIT_SUBMODULES=( '*' -libs -soundio ) + inherit git-r3 +else + SRC_URI="https://github.com/moonlight-stream/moonlight-qt/releases/download/v${PV}/MoonlightSrc-${PV}.tar.gz" + KEYWORDS="~amd64 ~arm64" + S="${WORKDIR}" +fi + +inherit qmake-utils xdg + +DESCRIPTION="NVIDIA GameStream (and Sunshine) client" +HOMEPAGE="https://github.com/moonlight-stream/moonlight-qt" +LICENSE="GPL-3" +SLOT="0" +IUSE="cuda +libdrm embedded mmal soundio +vaapi vdpau wayland X" + +RDEPEND=" + dev-libs/openssl:= + dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtnetwork:5 + dev-qt/qtquickcontrols2:5 + dev-qt/qtsvg:5 + dev-qt/qtwidgets:5 + media-libs/libglvnd + media-libs/libpulse + media-libs/libsdl2[haptic,kms,joystick,sound,video] + media-libs/opus + media-libs/sdl2-ttf + media-video/ffmpeg:=[cuda?,libdrm?,mmal?] + libdrm? ( x11-libs/libdrm ) + soundio? ( media-libs/libsoundio:= ) + vaapi? ( media-libs/libva:=[wayland?,X?] ) + vdpau? ( x11-libs/libvdpau ) + wayland? ( dev-libs/wayland ) + X? ( x11-libs/libX11 ) +" + +DEPEND=" + ${RDEPEND} +" + +BDEPEND=" + dev-qt/qtcore + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}/${P}-automagic.patch" +) + +src_prepare() { + default + + # Force system libsoundio over bundled version. + rm -r soundio/ || die +} + +src_configure() { + eqmake5 PREFIX="${EPREFIX}/usr" CONFIG+=" \ + $(usex cuda "" disable-cuda) \ + $(usex libdrm "" disable-libdrm) \ + $(usex mmal "" disable-mmal) \ + $(usex vaapi "" disable-libva) \ + $(usex vdpau "" disable-libvdpau) \ + $(usex wayland "" disable-wayland) \ + $(usex X "" disable-x11) \ + $(usev embedded) \ + $(usev soundio) \ + " +} + +src_install() { + emake install INSTALL_ROOT="${D}" + einstalldocs +} diff --git a/net-misc/moonlight/moonlight-9999.ebuild b/net-misc/moonlight/moonlight-9999.ebuild new file mode 100644 index 000000000000..906827ed9d2a --- /dev/null +++ b/net-misc/moonlight/moonlight-9999.ebuild @@ -0,0 +1,84 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +if [[ ${PV} = 9999* ]]; then + EGIT_REPO_URI="https://github.com/moonlight-stream/moonlight-qt.git" + EGIT_SUBMODULES=( '*' -libs -soundio ) + inherit git-r3 +else + SRC_URI="https://github.com/moonlight-stream/moonlight-qt/releases/download/v${PV}/MoonlightSrc-${PV}.tar.gz" + KEYWORDS="~amd64 ~arm64" + S="${WORKDIR}" +fi + +inherit qmake-utils xdg + +DESCRIPTION="NVIDIA GameStream (and Sunshine) client" +HOMEPAGE="https://github.com/moonlight-stream/moonlight-qt" +LICENSE="GPL-3" +SLOT="0" +IUSE="cuda +libdrm embedded glslow mmal soundio +vaapi vdpau wayland X" + +RDEPEND=" + dev-libs/openssl:= + dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtnetwork:5 + dev-qt/qtquickcontrols2:5 + dev-qt/qtsvg:5 + dev-qt/qtwidgets:5 + media-libs/libglvnd + media-libs/libpulse + media-libs/libsdl2[haptic,kms,joystick,sound,video] + media-libs/opus + media-libs/sdl2-ttf + media-video/ffmpeg:=[cuda?,libdrm?,mmal?] + libdrm? ( x11-libs/libdrm ) + soundio? ( media-libs/libsoundio:= ) + vaapi? ( media-libs/libva:=[wayland?,X?] ) + vdpau? ( x11-libs/libvdpau ) + wayland? ( dev-libs/wayland ) + X? ( x11-libs/libX11 ) +" + +DEPEND=" + ${RDEPEND} +" + +BDEPEND=" + dev-qt/qtcore + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}/${P}-automagic.patch" +) + +src_prepare() { + default + + # Force system libsoundio over bundled version. + rm -r soundio/ || die +} + +src_configure() { + eqmake5 PREFIX="${EPREFIX}/usr" CONFIG+=" \ + $(usex cuda "" disable-cuda) \ + $(usex libdrm "" disable-libdrm) \ + $(usex mmal "" disable-mmal) \ + $(usex vaapi "" disable-libva) \ + $(usex vdpau "" disable-libvdpau) \ + $(usex wayland "" disable-wayland) \ + $(usex X "" disable-x11) \ + $(usev embedded) \ + $(usev glslow) \ + $(usev soundio) \ + " +} + +src_install() { + emake install INSTALL_ROOT="${D}" + einstalldocs +} -- cgit v1.2.3-65-gdbad