commit: 05a3d368c5ddedeed94720dea23d694dfa9be070 Author: James Le Cuirot <chewi <AT> gentoo <DOT> org> AuthorDate: Tue Jun 17 22:47:43 2025 +0000 Commit: James Le Cuirot <chewi <AT> gentoo <DOT> org> CommitDate: Tue Jun 17 22:47:43 2025 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=05a3d368
net-misc/sunshine: Version bump to 2025.122.141614 and refresh 9999 Sorry this took so long, and thank you to the users who contributed fixes. This has always been a tricky package, but hopefully we won't have to go through this amount of change again. Unfortunately, Boost 1.87 is still required for now. I tried to port it to 1.88, but Sunshine uses parts of boost::process that just aren't there anymore. I'll send what I have so far upstream shortly. Bug: https://bugs.gentoo.org/955560 Bug: https://bugs.gentoo.org/956631 Closes: https://bugs.gentoo.org/947046 Closes: https://bugs.gentoo.org/951973 Closes: https://bugs.gentoo.org/956006 Closes: https://github.com/gentoo/gentoo/pull/42477 Signed-off-by: James Le Cuirot <chewi <AT> gentoo.org> net-misc/sunshine/Manifest | 12 ++ .../files/sunshine-2025.122.141614-cmake4.patch | 8 ++ .../files/sunshine-2025.122.141614-nvcodec.patch | 44 +++++++ .../sunshine/files/sunshine-ffmpeg-7.1.1.patch | 11 ++ .../files/sunshine-tray-notification-cb.patch | 11 ++ ...9999.ebuild => sunshine-2025.122.141614.ebuild} | 130 ++++++++++++--------- net-misc/sunshine/sunshine-9999.ebuild | 128 +++++++++++--------- 7 files changed, 232 insertions(+), 112 deletions(-) diff --git a/net-misc/sunshine/Manifest b/net-misc/sunshine/Manifest index 2efe3ef8929a..7366fb1b756a 100644 --- a/net-misc/sunshine/Manifest +++ b/net-misc/sunshine/Manifest @@ -1,10 +1,22 @@ +DIST LizardByte-build-deps-1ac1b57c6d96dceb646170d1c2f0a35703c4c50e.tar.gz 29094 BLAKE2B 8c79353150c764da40821463e0fd682a2f9c17154691c08801a13dd4c1f51ec292a214a4a931506e978ac36247aaa9aa827d15a6e39a253fb4b7dcd899b850ea SHA512 cd6869bbd562dbe4f5797fc28113bf0eb5eaa12f2622b99fc54d2ed04bc3bfc50c9f3fb54529fec03963439a6d745626dca77531b4d968f4554359e0dcf2e8b6 DIST LizardByte-build-deps-2aafe061cd52a944cb3b5f86d1f25e9ad2a19bec.tar.gz 24171 BLAKE2B bcc8f1829eae4ba85a9cbdaca7876a4a52c979f3b8ef0f0a56876fcb171025544bd1997455c2b8fff59564deca433366ae03f14cbb0929f78c87f991b269156f SHA512 892184ec0ff321b2b7e2000dc605d1162955cb04ff259f6032f124f1ff50a1fe485e2cf2c0b735788f8615c9aba87ca040205599cb4b91881daa462a53340bd7 DIST LizardByte-tray-4d8b798cafdd11285af9409c16b5f792968e0045.tar.gz 1068346 BLAKE2B 6da778c6dc1efb1147363de239a4170dad23288322285b847ed86837b316162bce861b848b8371ea8562efbfa0d36dc6921e8a36da0a05740e3f6aa1da29fae1 SHA512 9c6535a6a3ba4489b5af0821a8c42bbb706259c10d70237bd3d3b31283a7e8ad0e3c2326a34c229d899389156909c36252a931ea47eef8daeb8b7c54b26e92cb +DIST LizardByte-tray-d45306e686c90a18f5792a1541783d7bc8555bc6.tar.gz 1083704 BLAKE2B a7fd4e029a8fc531122312483e21373739eb3a5d11b9048259b7a57313bbb0bbfe695e5873b02be4cfb40c68b989e68338ccd2a6cce9f018f574ac0de779efef SHA512 b4e4ab0c6d239aaa41dbe09ad818b7bfc80578c5119bd324943fa5e850c004995d228a6241639b2f91ef6bc84417ac9cd4a4af87d6529a313bc37a0bf80544c4 DIST Simple-Web-Server-27b41f5ee154cca0fce4fe2955dd886d04e3a4ed.tar.bz2 63258 BLAKE2B e80a6cd92825038ca75b973281b676584f9e488b45b1f9c6ed526236c0a7188b97ae2bba9d7b5557893452dd1ba8778faff2ade840cc169d20b4cf0e51fc8394 SHA512 2eba1d8bd53bb3e29e51a72000918b44730f73b4df26824f25cb6a4860dd21f8aaa7f77124fb500ffe9601ebeca66d1c21a06cad239ed27481e9cae088afbd44 +DIST Simple-Web-Server-4abe3491582b56c0b18fc35278aad33b2db29cdc.tar.bz2 63446 BLAKE2B 0a07d4b3f198ad8c24e42a8a01df86c9386eab1bf28388851d5d7c09fbe28a28023a03c07202aef18b16ae2ff0398a61f0770595e13a11251611903dba293e5e SHA512 400eea353f7004ae5a7c59cb1f9f102bb3636cf1ab5ea24b07d8895c7b22d8a9b6a433740fbc295ca037b995492ab3b1620c13e1bc490b39c2cc3629ac5b2de2 DIST ffmpeg-6.1.1.tar.xz 10458600 BLAKE2B 77827ff92b47c773ed82e7b7793dbb135c370fe23501169cb1eab08ff5ede77cfd5b397e8fb1d38756812cc82277898fd5c74b7d8495842556570c0c5570daeb SHA512 fca3f8635f29182e3ae0fe843a8a53614e4b47e22c11508df3ff7cdbafbb4b5ee0d82d9b3332871f7c1032033b1cad2f67557d7c5f7f7d85e2adadca122965d5 +DIST ffmpeg-7.1.1.tar.xz 11019500 BLAKE2B 85d1850bfa39ec28d358b5454daa7c1cf8580af73a6f83e7c070ea94db40ad485adbaeb89e886e0b3908e0f1765bd9f2b40ddd838e33e0a76e5b286917535310 SHA512 42486e485c8fc6f3ec61598a1a7cb40360535762b3fcf28c10d7c6840bc55afe3334434912746e69eef862d3cedf45a02953bde73d38547d2d9a7a38a65e123a +DIST inputtino-8065aeb46e5e5980e700d9c1f1be3c4f7ec29630.tar.gz 80517 BLAKE2B 45931bb168aa685c1a7fbd2ec86f50c514aebe327d44e65b8834f064126a01df2ee5256954bf0f83fb6df9efaa700f2a13f1d7503c6f0a93e26472af64231b2d SHA512 c6c0d3f3b1bf1a932d8d61a2afb3f133439f173710236b9beee5dcd49c67ea4473d658ff7eb0cf86e949aa5c24aed7a7305a0f6ffed7c686cde8e616320c2a5f +DIST libdisplaydevice-2025.411.113543.tar.gz 121203 BLAKE2B f5cd0c14dd01b3e0af0c33bb94bbcc6fdb367b7582145fc0189f1ce7fd3e013060ef72c028861d56ded8e917c0f16aebdc90372abecff43941cd24d98118488b SHA512 f5cf62f022cd0ba5972ee30f76d1917fc760a12342c473df2c853630317367e7c2ad0c6e63a278c01c5642abf1504a6ed46a6bd0567a0e84f6220b34136b0807 DIST moonlight-common-c-cbd0ec1b25edfb8ee8645fffa49ff95b6e04c70e.tar.gz 148691 BLAKE2B 2650e48ef5d08b5e4a901e0b394364335503cd717ae75b4ecf5329395f39d3312a9bbfe08137d2b7697f7b1672749d148e100fbaa5c7f87d190ab8157f158639 SHA512 f1d7848138b85a88abf798774f12f6491e19ae5e7699715b0454bfccc184439fba0ebf7e05327fd649e320e5d1ad610c57fe71190f92cf2248c8f974f9d79aaf +DIST moonlight-common-c-d3d3e6cf015cd032ce02718246b52aabd1e12294.tar.gz 150660 BLAKE2B a752157fb50e7994f62b83421a56d46e168b542e2a34f99d4b3d2af8c44489a46f4caa4b2938410c48e8c3940348ed4ff02d2f118d66afc276f2c0008f28ab02 SHA512 00d8a80125065db623f1f4a2c1da8df599ec3e0bc90d044af04ce1ccc10af469e9e2f8bd7c397b7f01e118d039be72e5b5e28640d3eab8f0ff5061a9cbec1de9 DIST moonlight-enet-04e27590670a87a7cd40f5a05cda97467e4e25a3.tar.gz 86434 BLAKE2B 8a5535843e4c650b945882abac1542bf8c79dc420607b88433d239aa5a17380f02e77bb8f1fcbe45dcb8ef894e6c9b4d940f4d3b34b956ce42d86f6a8ca5227a SHA512 6d2e9447e546489365b1fb563ed52664a91981717a3a3a9faa9600ab62be5ac09bd24ee9dd505833d31981ce6222f5ef430268a9f92aa83fa288b5b8d681e2aa +DIST moonlight-enet-44c85e16279553d9c052e572bcbfcd745fb74abf.tar.gz 86750 BLAKE2B e378708d7bcc055a1f9f29f07fe974be18ea054b86c5d8c8f578d63ac20143440058498b5adcaedec1ed6914f0a941992c6762fb1798226eac89fbd714d822c7 SHA512 7be5a8080ef3bc897a88a31571d55faaba1ba92c3651ba8d487f46fece0f79832b08c9abc701757b50b4a899ee973ad346f4f0d9f6bc104f34303dd04c09b503 +DIST nanors-19f07b513e924e471cadd141943c1ec4adc8d0e0.tar.gz 194695 BLAKE2B 6b9294c602252aa4e78c87786fdf8586886f2ab798f7c9c190e51af8c15ec3e3da34e8f3ebfae104b3a190dcde830159224384653c858a031e5e36ddb5f9a3b0 SHA512 3b6999babc3db7981ffc7db4655cf15d66fcdb12c2b553f6db1b4e8705a16b689997b2038cfa634f979f55370a26f8ff1c36a0d8ace08e3e4192e7f369748c82 DIST nanors-e9e242e98e27037830490b2a752895ca68f75f8b.tar.gz 194694 BLAKE2B 1effd7c0884ffd38b63d61a7872337797529ef2012f9de0950088a5004cb32a2fb2c14bcab2ec6719968864e5e6b9a67e96afa39466e2071bf4a0cd752ae4b29 SHA512 548be25650619a6c31944cd7a745fd40d5bc5008f2d7f91e0207a10b923764cb88fd2ddcb71eaed7c4863ec89b34d61011b666e292da071ac3b4429e4d7dd027 DIST sunshine-0.23.1.tar.gz 24503568 BLAKE2B 0c589f38a7d638c49af6385def2676de04af422f85d37228988bd7c822ffc006dbac0a1695e01527ac7a1d5ee28103cff00d78a97d57f61247772a6e6cc1fe18 SHA512 7a9150baf4ecdad1035666993c60744390e227ebeaf467447c53675dc0aecc7031cd9c9b253fbbbbac072f5592c3690c6acfde41f38d441497a17157417f1e16 +DIST sunshine-2025.122.141614.tar.gz 24363526 BLAKE2B 129cc51263138d3114129ff5b23c23ea2623b443b10e1678ae31ec6cf25244b5607d797220d17207732bd738acd011418bee4e059ae69f69f9585f81b75bc2e1 SHA512 cdaa24bb38bf7bbbbf8736066290b36a47f1b34ca8864329b4e504a3df27b6d1cd272649643f69de8834b6aa30d11a3260cbb2a9cfa38c46ef9aad7b4dd3ca9e DIST sunshine-assets-0.23.1.tar.xz 1269348 BLAKE2B 36dd00fbf4bb1bfa213d53fd9dc78ed1fee9e12efcfb138dbd54932c3f19447d832da506175a982be7564408e06b0699b0b7cb4b9811ab81b47e30681c915bab SHA512 9fe9e0ee29864faa0f67dd4d501d116be1476f2c7ec688646b91eb87cb38e9e9d2baecb8335df29075fd3f60bf05b900c20dcb8406306d68a62c30ff55d1b7aa +DIST sunshine-assets-2025.122.141614.tar.xz 1333740 BLAKE2B 2593b1af1cf2405dd7bfbcbde09ca361af99db8cafc40e4d938257f96671b070940f8744df7a79a46820bfa56650f80101d5490d1e2008aa918be436de95184e SHA512 cc4dede6c258008585b7dd53df370a5a8f1b6fd9dc109404df766afee6c469c387f41d7f3fae8abffea8917ea93eed7faf95f8e688192ec5c339dbaa198a4191 DIST wlr-protocols-2b8d43325b7012cc3f9b55c08d26e50e42beac7d.tar.bz2 19708 BLAKE2B fe20f21ee8282d7afcdbb8f3863e50b217fb71e7814f404f288b0d09d30c9e30135769b12342d9e9126a8cb2ab35d6ced0c5562807d274b1d97224f5f3d02511 SHA512 7935b5089820304aa8cb0e1a8f4e0db6ccd5285973a3f3554ccc935dd88e379eb03c3b2dd199da97b6ff8dfbbbf124ca65fb1c12821a168d34bd7e26d8514edb +DIST wlr-protocols-ffb89ac790096f6e6272822c8d5df7d0cc6fcdfa.tar.bz2 19875 BLAKE2B 1150fc20a55bf034d622aef1729aebb72677da542fba96a2d732486b87404143406902b63bbcbb6ffc1ec7b4bd8b1916d791c3b8b954e9810ae81358a423a01e SHA512 6712a9b6fbbed588470a9b5e71653d168a63ad285e18eb1ba32c030704475d56a8de0a52b192a379ffa49e79879a5b4976f275ecbf6dd2a96822f7e03b04eeb1 diff --git a/net-misc/sunshine/files/sunshine-2025.122.141614-cmake4.patch b/net-misc/sunshine/files/sunshine-2025.122.141614-cmake4.patch new file mode 100644 index 000000000000..7f1a2e7c4a30 --- /dev/null +++ b/net-misc/sunshine/files/sunshine-2025.122.141614-cmake4.patch @@ -0,0 +1,8 @@ +--- a/tools/CMakeLists.txt ++++ b/tools/CMakeLists.txt +@@ -1,4 +1,4 @@ +-cmake_minimum_required(VERSION 3.0) ++cmake_minimum_required(VERSION 3.20) + + project(sunshine_tools) + diff --git a/net-misc/sunshine/files/sunshine-2025.122.141614-nvcodec.patch b/net-misc/sunshine/files/sunshine-2025.122.141614-nvcodec.patch new file mode 100644 index 000000000000..861e07bc5f47 --- /dev/null +++ b/net-misc/sunshine/files/sunshine-2025.122.141614-nvcodec.patch @@ -0,0 +1,44 @@ +From bc4e3f63d7c9d5790b1849d807d30bd9f2133040 Mon Sep 17 00:00:00 2001 +From: James Le Cuirot <[email protected]> +Date: Sun, 18 Feb 2024 10:25:25 +0000 +Subject: [PATCH] Broaden the accepted versions of nvenc + +--- a/src/nvenc/nvenc_base.cpp ++++ b/src/nvenc/nvenc_base.cpp +@@ -17,7 +17,7 @@ + // - NV_ENC_*_VER definitions where the value inside NVENCAPI_STRUCT_VERSION() was increased + // - Incompatible struct changes in nvEncodeAPI.h (fields removed, semantics changed, etc.) + // - Test both old and new drivers with all supported codecs +-#if NVENCAPI_VERSION != MAKE_NVENC_VER(12U, 0U) ++#if NVENCAPI_MAJOR_VERSION < 12 || NVENCAPI_MAJOR_VERSION > 13 + #error Check and update NVENC code for backwards compatibility! + #endif + +@@ -322,7 +322,11 @@ namespace nvenc { + auto &format_config = enc_config.encodeCodecConfig.hevcConfig; + set_h264_hevc_common_format_config(format_config); + if (buffer_is_10bit()) { ++#if NVENCAPI_MAJOR_VERSION > 12 || (NVENCAPI_MAJOR_VERSION == 12 && NVENCAPI_MINOR_VERSION >= 2) ++ format_config.inputBitDepth = format_config.outputBitDepth = NV_ENC_BIT_DEPTH_10; ++#else + format_config.pixelBitDepthMinus8 = 2; ++#endif + } + set_ref_frames(format_config.maxNumRefFramesInDPB, format_config.numRefL0, 5); + set_minqp_if_enabled(config.min_qp_hevc); +@@ -355,8 +359,12 @@ namespace nvenc { + } + format_config.enableBitstreamPadding = config.insert_filler_data; + if (buffer_is_10bit()) { ++#if NVENCAPI_MAJOR_VERSION > 12 || (NVENCAPI_MAJOR_VERSION == 12 && NVENCAPI_MINOR_VERSION >= 2) ++ format_config.inputBitDepth = format_config.outputBitDepth = NV_ENC_BIT_DEPTH_10; ++#else + format_config.inputPixelBitDepthMinus8 = 2; + format_config.pixelBitDepthMinus8 = 2; ++#endif + } + format_config.colorPrimaries = colorspace.primaries; + format_config.transferCharacteristics = colorspace.tranfer_function; +-- +2.49.0 + diff --git a/net-misc/sunshine/files/sunshine-ffmpeg-7.1.1.patch b/net-misc/sunshine/files/sunshine-ffmpeg-7.1.1.patch new file mode 100644 index 000000000000..8b973f8f5be2 --- /dev/null +++ b/net-misc/sunshine/files/sunshine-ffmpeg-7.1.1.patch @@ -0,0 +1,11 @@ +--- a/third-party/build-deps/patches/FFmpeg/cbs/03-size-specifier.patch ++++ b/third-party/build-deps/patches/FFmpeg/cbs/03-size-specifier.patch +@@ -27,7 +27,7 @@ + goto fail; + } + @@ -741,7 +741,7 @@ static int cbs_av1_split_fragment(CodedBitstreamContext *ctx, +- if (header.obu_has_size_field) { ++ if (obu_header.obu_has_size_field) { + if (get_bits_left(&gbc) < 8) { + av_log(ctx->log_ctx, AV_LOG_ERROR, "Invalid OBU: fragment " + - "too short (%"SIZE_SPECIFIER" bytes).\n", size); diff --git a/net-misc/sunshine/files/sunshine-tray-notification-cb.patch b/net-misc/sunshine/files/sunshine-tray-notification-cb.patch new file mode 100644 index 000000000000..248018490ff9 --- /dev/null +++ b/net-misc/sunshine/files/sunshine-tray-notification-cb.patch @@ -0,0 +1,11 @@ +--- a/third-party/tray/src/tray_linux.c ++++ b/third-party/tray/src/tray_linux.c +@@ -100,7 +100,7 @@ static gboolean tray_update_internal(gpointer user_data) { + currentNotification = notify_notification_new(tray->notification_title, tray->notification_text, notification_icon); + if (currentNotification != NULL && NOTIFY_IS_NOTIFICATION(currentNotification)) { + if (tray->notification_cb != NULL) { +- notify_notification_add_action(currentNotification, "default", "Default", tray->notification_cb, NULL, NULL); ++ notify_notification_add_action(currentNotification, "default", "Default", NOTIFY_ACTION_CALLBACK(tray->notification_cb), NULL, NULL); + } + notify_notification_show(currentNotification, NULL); + } diff --git a/net-misc/sunshine/sunshine-9999.ebuild b/net-misc/sunshine/sunshine-2025.122.141614.ebuild similarity index 73% copy from net-misc/sunshine/sunshine-9999.ebuild copy to net-misc/sunshine/sunshine-2025.122.141614.ebuild index 8f54fed602fa..51636fb427f7 100644 --- a/net-misc/sunshine/sunshine-9999.ebuild +++ b/net-misc/sunshine/sunshine-2025.122.141614.ebuild @@ -4,15 +4,16 @@ EAPI=8 # These don't necessarily have to align with the upstream release. -BUILD_DEPS_COMMIT="2aafe061cd52a944cb3b5f86d1f25e9ad2a19bec" -ENET_COMMIT="04e27590670a87a7cd40f5a05cda97467e4e25a3" -INPUTTINO_COMMIT="8a33706a146787a1ed3666ce52888634dd16cb86" -MOONLIGHT_COMMIT="cbd0ec1b25edfb8ee8645fffa49ff95b6e04c70e" -NANORS_COMMIT="e9e242e98e27037830490b2a752895ca68f75f8b" -TRAY_COMMIT="4d8b798cafdd11285af9409c16b5f792968e0045" -SWS_COMMIT="27b41f5ee154cca0fce4fe2955dd886d04e3a4ed" -WLRP_COMMIT="2b8d43325b7012cc3f9b55c08d26e50e42beac7d" -FFMPEG_VERSION="6.1.1" +BUILD_DEPS_COMMIT="1ac1b57c6d96dceb646170d1c2f0a35703c4c50e" +DISPLAYDEV_COMMIT="v2025.411.113543" +ENET_COMMIT="44c85e16279553d9c052e572bcbfcd745fb74abf" +INPUTTINO_COMMIT="8065aeb46e5e5980e700d9c1f1be3c4f7ec29630" +MOONLIGHT_COMMIT="d3d3e6cf015cd032ce02718246b52aabd1e12294" +NANORS_COMMIT="19f07b513e924e471cadd141943c1ec4adc8d0e0" +TRAY_COMMIT="d45306e686c90a18f5792a1541783d7bc8555bc6" +SWS_COMMIT="4abe3491582b56c0b18fc35278aad33b2db29cdc" +WLRP_COMMIT="ffb89ac790096f6e6272822c8d5df7d0cc6fcdfa" +FFMPEG_VERSION="7.1.1" # To make the assets tarball: # PV= @@ -27,6 +28,8 @@ else -> ${P}.tar.gz https://github.com/LizardByte/build-deps/archive/${BUILD_DEPS_COMMIT}.tar.gz -> LizardByte-build-deps-${BUILD_DEPS_COMMIT}.tar.gz + https://github.com/LizardByte/libdisplaydevice/archive/${DISPLAYDEV_COMMIT}.tar.gz + -> libdisplaydevice-${DISPLAYDEV_COMMIT#v}.tar.gz https://github.com/cgutman/enet/archive/${ENET_COMMIT}.tar.gz -> moonlight-enet-${ENET_COMMIT}.tar.gz https://github.com/games-on-whales/inputtino/archive/${INPUTTINO_COMMIT}.tar.gz @@ -126,7 +129,7 @@ REQUIRED_USE=" " CDEPEND=" - >=dev-libs/boost-1.86:=[nls] + =dev-libs/boost-1.87*:=[nls] dev-libs/libevdev dev-libs/openssl:= media-libs/opus @@ -140,7 +143,7 @@ CDEPEND=" sys-libs/libcap x11-libs/libdrm ) - svt-av1? ( <media-libs/svt-av1-3:= ) + svt-av1? ( media-libs/svt-av1:= ) trayicon? ( dev-libs/libayatana-appindicator x11-libs/libnotify @@ -166,20 +169,23 @@ RDEPEND=" DEPEND=" ${CDEPEND} media-libs/amf-headers - =media-libs/nv-codec-headers-12* + <media-libs/nv-codec-headers-14 wayland? ( dev-libs/wayland-protocols ) " BDEPEND=" net-libs/nodejs[npm] virtual/pkgconfig - cpu_flags_x86_mmx? ( || ( >=dev-lang/nasm-2.13 >=dev-lang/yasm-1.3 ) ) + cpu_flags_x86_mmx? ( >=dev-lang/nasm-2.13 ) cuda? ( dev-util/nvidia-cuda-toolkit ) wayland? ( dev-util/wayland-scanner ) " PATCHES=( - "${FILESDIR}"/${PN}-0.22.0-nvcodec.patch + "${FILESDIR}"/${PN}-2025.122.141614-nvcodec.patch + "${FILESDIR}"/${PN}-tray-notification-cb.patch + "${FILESDIR}"/${PN}-ffmpeg-7.1.1.patch + "${FILESDIR}"/${PN}-2025.122.141614-cmake4.patch ) # Make this mess a bit simpler. @@ -198,21 +204,19 @@ src_unpack() { if [[ ${PV} = 9999* ]]; then local EGIT_REPO_URI="https://github.com/LizardByte/build-deps.git" local EGIT_SUBMODULES=( '-*' ) - local EGIT_CHECKOUT_DIR=${WORKDIR}/build-deps + local EGIT_CHECKOUT_DIR=${S}/third-party/build-deps git-r3_src_unpack # Use upstream server like our ffmpeg package does, not GitHub. local EGIT_REPO_URI="https://git.ffmpeg.org/ffmpeg.git" local EGIT_SUBMODULES=( '-*' ) - local EGIT_CHECKOUT_DIR=${EGIT_CHECKOUT_DIR}/ffmpeg_sources/ffmpeg - local EGIT_COMMIT=$(git --git-dir=build-deps/.git rev-parse HEAD:ffmpeg_sources/ffmpeg) + local EGIT_CHECKOUT_DIR=${S}/third-party/build-deps/third-party/FFmpeg/FFmpeg + local EGIT_COMMIT=$(git --git-dir=build-deps/.git rev-parse HEAD:third-party/FFmpeg/FFmpeg) local EGIT_BRANCH=release/$(ver_cut 1-2 ${FFMPEG_VERSION}) git-r3_src_unpack local EGIT_REPO_URI="https://github.com/LizardByte/Sunshine.git" - local EGIT_SUBMODULES=( - third-party/{inputtino,moonlight-common-c{,/enet},nanors,tray,Simple-Web-Server,wlr-protocols} - ) + local EGIT_SUBMODULES=( third-party/{inputtino,libdisplaydevice,moonlight-common-c{,/enet},nanors,tray,Simple-Web-Server,wlr-protocols} ) unset EGIT_CHECKOUT_DIR EGIT_COMMIT EGIT_BRANCH git-r3_src_unpack @@ -221,37 +225,51 @@ src_unpack() { npm install || die else default - ln -snf build-deps-${BUILD_DEPS_COMMIT} build-deps || die - find moonlight-common-c-${MOONLIGHT_COMMIT} "${S}"/third-party build-deps/ffmpeg_sources \ - -mindepth 1 -type d -empty -delete || die - ln -snf ../enet-${ENET_COMMIT} moonlight-common-c-${MOONLIGHT_COMMIT}/enet || die - ln -snf ../../inputtino-${INPUTTINO_COMMIT} "${S}"/third-party/inputtino || die - ln -snf ../../moonlight-common-c-${MOONLIGHT_COMMIT} "${S}"/third-party/moonlight-common-c || die - ln -snf ../../nanors-${NANORS_COMMIT} "${S}"/third-party/nanors || die - ln -snf ../../tray-${TRAY_COMMIT} "${S}"/third-party/tray || die - ln -snf ../../Simple-Web-Server-${SWS_COMMIT} "${S}"/third-party/Simple-Web-Server || die - ln -snf ../../wlr-protocols-${WLRP_COMMIT} "${S}"/third-party/wlr-protocols || die - ln -snf ../../ffmpeg-${FFMPEG_VERSION} build-deps/ffmpeg_sources/ffmpeg || die + find moonlight-common-c-${MOONLIGHT_COMMIT} "${S}"/third-party \ + build-deps-${BUILD_DEPS_COMMIT}/third-party/FFmpeg -mindepth 1 -type d -empty -delete || die + mv enet-${ENET_COMMIT} moonlight-common-c-${MOONLIGHT_COMMIT}/enet || die + mv libdisplaydevice-${DISPLAYDEV_COMMIT#v} "${S}"/third-party/libdisplaydevice || die + mv inputtino-${INPUTTINO_COMMIT} "${S}"/third-party/inputtino || die + mv moonlight-common-c-${MOONLIGHT_COMMIT} "${S}"/third-party/moonlight-common-c || die + mv nanors-${NANORS_COMMIT} "${S}"/third-party/nanors || die + mv tray-${TRAY_COMMIT} "${S}"/third-party/tray || die + mv Simple-Web-Server-${SWS_COMMIT} "${S}"/third-party/Simple-Web-Server || die + mv wlr-protocols-${WLRP_COMMIT} "${S}"/third-party/wlr-protocols || die + mv build-deps-${BUILD_DEPS_COMMIT} "${S}"/third-party/build-deps || die + mv ffmpeg-${FFMPEG_VERSION} "${S}"/third-party/build-deps/third-party/FFmpeg/FFmpeg || die fi } src_prepare() { - # Apply general ffmpeg patches. - cd "${WORKDIR}"/build-deps/ffmpeg_sources/ffmpeg || die - eapply "${WORKDIR}"/build-deps/ffmpeg_patches/ffmpeg/*.patch + # Avoid CMake compatibility warning. + rm third-party/moonlight-common-c/CMakeLists.txt || die - # Copy ffmpeg sources because CBS build applies extra patches. - cp -a ./ "${WORKDIR}"/ffmpeg-build || die - - cd "${S}" || die - CMAKE_USE_DIR="${WORKDIR}/build-deps" cmake_src_prepare + CMAKE_USE_DIR="${S}"/third-party/build-deps cmake_src_prepare default_src_prepare() { :; } # Hack to avoid double patching! :( CMAKE_USE_DIR="${S}" cmake_src_prepare } src_configure() { + local mycmakeargs=( + -DBASH_EXECUTABLE="${BROOT}"/bin/true + -DBUILD_ALL_SUNSHINE=no + -DBUILD_ALL=no + -DBUILD_FFMPEG_ALL_PATCHES=yes + -DBUILD_FFMPEG_AMF=no + -DBUILD_FFMPEG_CBS=yes + -DBUILD_FFMPEG_MF=no + -DBUILD_FFMPEG_NV_CODEC_HEADERS=no + -DBUILD_FFMPEG_SVT_AV1=no + -DBUILD_FFMPEG_VAAPI=no + -DBUILD_FFMPEG_X264=no + -DBUILD_FFMPEG_X265=no + -DBUILD_SHARED_LIBS=no + -DCMAKE_INSTALL_PREFIX="${S}"/third-party/build-deps/dist + ) + CMAKE_USE_DIR="${S}"/third-party/build-deps cmake_src_configure + local myconf=( - --prefix="${S}"/third-party/ffmpeg + --prefix="${S}"/third-party/build-deps/FFmpeg --cc="$(tc-getCC)" --cxx="$(tc-getCXX)" --ar="$(tc-getAR)" @@ -321,25 +339,18 @@ src_configure() { esac fi - cd "${WORKDIR}"/ffmpeg-build || die + cd "${S}"/third-party/build-deps/generated-src/FFmpeg || die echo ./configure "${myconf[@]}" ./configure "${myconf[@]}" || die - local mycmakeargs=( - -DBUILD_SHARED_LIBS=no - -DCMAKE_INSTALL_PREFIX="${S}"/third-party/ffmpeg - ) - CMAKE_USE_DIR="${WORKDIR}/build-deps" cmake_src_configure - local mycmakeargs=( -DBUILD_SHARED_LIBS=no -DBOOST_USE_STATIC=no -DBUILD_DOCS=no -DBUILD_TESTS=no -DCCACHE_FOUND=no - -DCMAKE_DISABLE_FIND_PACKAGE_Git=yes -DFFMPEG_PLATFORM_LIBRARIES="$(usex svt-av1 SvtAv1Enc '');$(usex vaapi 'va;va-drm' '');$(usev x264);$(usev x265)" - -DFFMPEG_PREPARED_BINARIES="${S}"/third-party/ffmpeg + -DFFMPEG_PREPARED_BINARIES="${S}"/third-party/build-deps/dist -DSUNSHINE_ASSETS_DIR=share/${PN} -DSUNSHINE_ENABLE_CUDA=$(usex cuda) -DSUNSHINE_ENABLE_DRM=$(usex libdrm) @@ -347,20 +358,27 @@ src_configure() { -DSUNSHINE_ENABLE_WAYLAND=$(usex wayland) -DSUNSHINE_ENABLE_X11=$(usex X) -DSUNSHINE_ENABLE_TRAY=$(usex trayicon) - -DSUNSHINE_REQUIRE_TRAY=$(usex trayicon) -DSUNSHINE_SYSTEM_WAYLAND_PROTOCOLS=yes -DUDEV_RULES_INSTALL_DIR=$(get_udevdir)/rules.d ) - use systemd && mycmakeargs+=( -DSYSTEMD_USER_UNIT_INSTALL_DIR=$(systemd_get_userunitdir) ) - [[ ${PV} = 9999* ]] || mycmakeargs+=( -DNPM="${BROOT}"/bin/true ) + + if use systemd; then + mycmakeargs+=( -DSYSTEMD_USER_UNIT_INSTALL_DIR=$(systemd_get_userunitdir) ) + fi + + if [[ ${PV} != 9999* ]]; then + mycmakeargs+=( -DNPM="${BROOT}"/bin/true ) + local -x BUILD_VERSION=v${PV} BRANCH=master COMMIT= + fi + CMAKE_USE_DIR="${S}" cmake_src_configure } src_compile() { - emake -C "${WORKDIR}"/ffmpeg-build V=1 - emake -C "${WORKDIR}"/ffmpeg-build V=1 install - CMAKE_USE_DIR="${WORKDIR}/build-deps" cmake_src_compile - CMAKE_USE_DIR="${WORKDIR}/build-deps" cmake_build install + emake -C "${S}"/third-party/build-deps/generated-src/FFmpeg V=1 + emake -C "${S}"/third-party/build-deps/generated-src/FFmpeg V=1 install + CMAKE_USE_DIR="${S}"/third-party/build-deps cmake_src_compile cbs + CMAKE_USE_DIR="${S}"/third-party/build-deps cmake_build install cbs CMAKE_USE_DIR="${S}" npm_config_offline=1 cmake_src_compile } diff --git a/net-misc/sunshine/sunshine-9999.ebuild b/net-misc/sunshine/sunshine-9999.ebuild index 8f54fed602fa..218e7ffcefdd 100644 --- a/net-misc/sunshine/sunshine-9999.ebuild +++ b/net-misc/sunshine/sunshine-9999.ebuild @@ -4,15 +4,16 @@ EAPI=8 # These don't necessarily have to align with the upstream release. -BUILD_DEPS_COMMIT="2aafe061cd52a944cb3b5f86d1f25e9ad2a19bec" -ENET_COMMIT="04e27590670a87a7cd40f5a05cda97467e4e25a3" -INPUTTINO_COMMIT="8a33706a146787a1ed3666ce52888634dd16cb86" -MOONLIGHT_COMMIT="cbd0ec1b25edfb8ee8645fffa49ff95b6e04c70e" -NANORS_COMMIT="e9e242e98e27037830490b2a752895ca68f75f8b" -TRAY_COMMIT="4d8b798cafdd11285af9409c16b5f792968e0045" -SWS_COMMIT="27b41f5ee154cca0fce4fe2955dd886d04e3a4ed" -WLRP_COMMIT="2b8d43325b7012cc3f9b55c08d26e50e42beac7d" -FFMPEG_VERSION="6.1.1" +BUILD_DEPS_COMMIT="1ac1b57c6d96dceb646170d1c2f0a35703c4c50e" +DISPLAYDEV_COMMIT="v2025.411.113543" +ENET_COMMIT="44c85e16279553d9c052e572bcbfcd745fb74abf" +INPUTTINO_COMMIT="8065aeb46e5e5980e700d9c1f1be3c4f7ec29630" +MOONLIGHT_COMMIT="d3d3e6cf015cd032ce02718246b52aabd1e12294" +NANORS_COMMIT="19f07b513e924e471cadd141943c1ec4adc8d0e0" +TRAY_COMMIT="d45306e686c90a18f5792a1541783d7bc8555bc6" +SWS_COMMIT="4abe3491582b56c0b18fc35278aad33b2db29cdc" +WLRP_COMMIT="ffb89ac790096f6e6272822c8d5df7d0cc6fcdfa" +FFMPEG_VERSION="7.1.1" # To make the assets tarball: # PV= @@ -27,6 +28,8 @@ else -> ${P}.tar.gz https://github.com/LizardByte/build-deps/archive/${BUILD_DEPS_COMMIT}.tar.gz -> LizardByte-build-deps-${BUILD_DEPS_COMMIT}.tar.gz + https://github.com/LizardByte/libdisplaydevice/archive/${DISPLAYDEV_COMMIT}.tar.gz + -> libdisplaydevice-${DISPLAYDEV_COMMIT#v}.tar.gz https://github.com/cgutman/enet/archive/${ENET_COMMIT}.tar.gz -> moonlight-enet-${ENET_COMMIT}.tar.gz https://github.com/games-on-whales/inputtino/archive/${INPUTTINO_COMMIT}.tar.gz @@ -126,7 +129,7 @@ REQUIRED_USE=" " CDEPEND=" - >=dev-libs/boost-1.86:=[nls] + =dev-libs/boost-1.87*:=[nls] dev-libs/libevdev dev-libs/openssl:= media-libs/opus @@ -140,7 +143,7 @@ CDEPEND=" sys-libs/libcap x11-libs/libdrm ) - svt-av1? ( <media-libs/svt-av1-3:= ) + svt-av1? ( media-libs/svt-av1:= ) trayicon? ( dev-libs/libayatana-appindicator x11-libs/libnotify @@ -166,20 +169,21 @@ RDEPEND=" DEPEND=" ${CDEPEND} media-libs/amf-headers - =media-libs/nv-codec-headers-12* + <media-libs/nv-codec-headers-14 wayland? ( dev-libs/wayland-protocols ) " BDEPEND=" net-libs/nodejs[npm] virtual/pkgconfig - cpu_flags_x86_mmx? ( || ( >=dev-lang/nasm-2.13 >=dev-lang/yasm-1.3 ) ) + cpu_flags_x86_mmx? ( >=dev-lang/nasm-2.13 ) cuda? ( dev-util/nvidia-cuda-toolkit ) wayland? ( dev-util/wayland-scanner ) " PATCHES=( - "${FILESDIR}"/${PN}-0.22.0-nvcodec.patch + "${FILESDIR}"/${PN}-2025.122.141614-nvcodec.patch + "${FILESDIR}"/${PN}-tray-notification-cb.patch ) # Make this mess a bit simpler. @@ -198,21 +202,19 @@ src_unpack() { if [[ ${PV} = 9999* ]]; then local EGIT_REPO_URI="https://github.com/LizardByte/build-deps.git" local EGIT_SUBMODULES=( '-*' ) - local EGIT_CHECKOUT_DIR=${WORKDIR}/build-deps + local EGIT_CHECKOUT_DIR=${S}/third-party/build-deps git-r3_src_unpack # Use upstream server like our ffmpeg package does, not GitHub. local EGIT_REPO_URI="https://git.ffmpeg.org/ffmpeg.git" local EGIT_SUBMODULES=( '-*' ) - local EGIT_CHECKOUT_DIR=${EGIT_CHECKOUT_DIR}/ffmpeg_sources/ffmpeg - local EGIT_COMMIT=$(git --git-dir=build-deps/.git rev-parse HEAD:ffmpeg_sources/ffmpeg) + local EGIT_CHECKOUT_DIR=${S}/third-party/build-deps/third-party/FFmpeg/FFmpeg + local EGIT_COMMIT=$(git --git-dir=build-deps/.git rev-parse HEAD:third-party/FFmpeg/FFmpeg) local EGIT_BRANCH=release/$(ver_cut 1-2 ${FFMPEG_VERSION}) git-r3_src_unpack local EGIT_REPO_URI="https://github.com/LizardByte/Sunshine.git" - local EGIT_SUBMODULES=( - third-party/{inputtino,moonlight-common-c{,/enet},nanors,tray,Simple-Web-Server,wlr-protocols} - ) + local EGIT_SUBMODULES=( third-party/{inputtino,libdisplaydevice,moonlight-common-c{,/enet},nanors,tray,Simple-Web-Server,wlr-protocols} ) unset EGIT_CHECKOUT_DIR EGIT_COMMIT EGIT_BRANCH git-r3_src_unpack @@ -221,37 +223,51 @@ src_unpack() { npm install || die else default - ln -snf build-deps-${BUILD_DEPS_COMMIT} build-deps || die - find moonlight-common-c-${MOONLIGHT_COMMIT} "${S}"/third-party build-deps/ffmpeg_sources \ - -mindepth 1 -type d -empty -delete || die - ln -snf ../enet-${ENET_COMMIT} moonlight-common-c-${MOONLIGHT_COMMIT}/enet || die - ln -snf ../../inputtino-${INPUTTINO_COMMIT} "${S}"/third-party/inputtino || die - ln -snf ../../moonlight-common-c-${MOONLIGHT_COMMIT} "${S}"/third-party/moonlight-common-c || die - ln -snf ../../nanors-${NANORS_COMMIT} "${S}"/third-party/nanors || die - ln -snf ../../tray-${TRAY_COMMIT} "${S}"/third-party/tray || die - ln -snf ../../Simple-Web-Server-${SWS_COMMIT} "${S}"/third-party/Simple-Web-Server || die - ln -snf ../../wlr-protocols-${WLRP_COMMIT} "${S}"/third-party/wlr-protocols || die - ln -snf ../../ffmpeg-${FFMPEG_VERSION} build-deps/ffmpeg_sources/ffmpeg || die + find moonlight-common-c-${MOONLIGHT_COMMIT} "${S}"/third-party \ + build-deps-${BUILD_DEPS_COMMIT}/third-party/FFmpeg -mindepth 1 -type d -empty -delete || die + mv enet-${ENET_COMMIT} moonlight-common-c-${MOONLIGHT_COMMIT}/enet || die + mv libdisplaydevice-${DISPLAYDEV_COMMIT#v} "${S}"/third-party/libdisplaydevice || die + mv inputtino-${INPUTTINO_COMMIT} "${S}"/third-party/inputtino || die + mv moonlight-common-c-${MOONLIGHT_COMMIT} "${S}"/third-party/moonlight-common-c || die + mv nanors-${NANORS_COMMIT} "${S}"/third-party/nanors || die + mv tray-${TRAY_COMMIT} "${S}"/third-party/tray || die + mv Simple-Web-Server-${SWS_COMMIT} "${S}"/third-party/Simple-Web-Server || die + mv wlr-protocols-${WLRP_COMMIT} "${S}"/third-party/wlr-protocols || die + mv build-deps-${BUILD_DEPS_COMMIT} "${S}"/third-party/build-deps || die + mv ffmpeg-${FFMPEG_VERSION} "${S}"/third-party/build-deps/third-party/FFmpeg/FFmpeg || die fi } src_prepare() { - # Apply general ffmpeg patches. - cd "${WORKDIR}"/build-deps/ffmpeg_sources/ffmpeg || die - eapply "${WORKDIR}"/build-deps/ffmpeg_patches/ffmpeg/*.patch + # Avoid CMake compatibility warning. + rm third-party/moonlight-common-c/CMakeLists.txt || die - # Copy ffmpeg sources because CBS build applies extra patches. - cp -a ./ "${WORKDIR}"/ffmpeg-build || die - - cd "${S}" || die - CMAKE_USE_DIR="${WORKDIR}/build-deps" cmake_src_prepare + CMAKE_USE_DIR="${S}"/third-party/build-deps cmake_src_prepare default_src_prepare() { :; } # Hack to avoid double patching! :( CMAKE_USE_DIR="${S}" cmake_src_prepare } src_configure() { + local mycmakeargs=( + -DBASH_EXECUTABLE="${BROOT}"/bin/true + -DBUILD_ALL_SUNSHINE=no + -DBUILD_ALL=no + -DBUILD_FFMPEG_ALL_PATCHES=yes + -DBUILD_FFMPEG_AMF=no + -DBUILD_FFMPEG_CBS=yes + -DBUILD_FFMPEG_MF=no + -DBUILD_FFMPEG_NV_CODEC_HEADERS=no + -DBUILD_FFMPEG_SVT_AV1=no + -DBUILD_FFMPEG_VAAPI=no + -DBUILD_FFMPEG_X264=no + -DBUILD_FFMPEG_X265=no + -DBUILD_SHARED_LIBS=no + -DCMAKE_INSTALL_PREFIX="${S}"/third-party/build-deps/dist + ) + CMAKE_USE_DIR="${S}"/third-party/build-deps cmake_src_configure + local myconf=( - --prefix="${S}"/third-party/ffmpeg + --prefix="${S}"/third-party/build-deps/FFmpeg --cc="$(tc-getCC)" --cxx="$(tc-getCXX)" --ar="$(tc-getAR)" @@ -321,25 +337,18 @@ src_configure() { esac fi - cd "${WORKDIR}"/ffmpeg-build || die + cd "${S}"/third-party/build-deps/generated-src/FFmpeg || die echo ./configure "${myconf[@]}" ./configure "${myconf[@]}" || die - local mycmakeargs=( - -DBUILD_SHARED_LIBS=no - -DCMAKE_INSTALL_PREFIX="${S}"/third-party/ffmpeg - ) - CMAKE_USE_DIR="${WORKDIR}/build-deps" cmake_src_configure - local mycmakeargs=( -DBUILD_SHARED_LIBS=no -DBOOST_USE_STATIC=no -DBUILD_DOCS=no -DBUILD_TESTS=no -DCCACHE_FOUND=no - -DCMAKE_DISABLE_FIND_PACKAGE_Git=yes -DFFMPEG_PLATFORM_LIBRARIES="$(usex svt-av1 SvtAv1Enc '');$(usex vaapi 'va;va-drm' '');$(usev x264);$(usev x265)" - -DFFMPEG_PREPARED_BINARIES="${S}"/third-party/ffmpeg + -DFFMPEG_PREPARED_BINARIES="${S}"/third-party/build-deps/dist -DSUNSHINE_ASSETS_DIR=share/${PN} -DSUNSHINE_ENABLE_CUDA=$(usex cuda) -DSUNSHINE_ENABLE_DRM=$(usex libdrm) @@ -347,20 +356,27 @@ src_configure() { -DSUNSHINE_ENABLE_WAYLAND=$(usex wayland) -DSUNSHINE_ENABLE_X11=$(usex X) -DSUNSHINE_ENABLE_TRAY=$(usex trayicon) - -DSUNSHINE_REQUIRE_TRAY=$(usex trayicon) -DSUNSHINE_SYSTEM_WAYLAND_PROTOCOLS=yes -DUDEV_RULES_INSTALL_DIR=$(get_udevdir)/rules.d ) - use systemd && mycmakeargs+=( -DSYSTEMD_USER_UNIT_INSTALL_DIR=$(systemd_get_userunitdir) ) - [[ ${PV} = 9999* ]] || mycmakeargs+=( -DNPM="${BROOT}"/bin/true ) + + if use systemd; then + mycmakeargs+=( -DSYSTEMD_USER_UNIT_INSTALL_DIR=$(systemd_get_userunitdir) ) + fi + + if [[ ${PV} != 9999* ]]; then + mycmakeargs+=( -DNPM="${BROOT}"/bin/true ) + local -x BUILD_VERSION=v${PV} BRANCH=master COMMIT= + fi + CMAKE_USE_DIR="${S}" cmake_src_configure } src_compile() { - emake -C "${WORKDIR}"/ffmpeg-build V=1 - emake -C "${WORKDIR}"/ffmpeg-build V=1 install - CMAKE_USE_DIR="${WORKDIR}/build-deps" cmake_src_compile - CMAKE_USE_DIR="${WORKDIR}/build-deps" cmake_build install + emake -C "${S}"/third-party/build-deps/generated-src/FFmpeg V=1 + emake -C "${S}"/third-party/build-deps/generated-src/FFmpeg V=1 install + CMAKE_USE_DIR="${S}"/third-party/build-deps cmake_src_compile cbs + CMAKE_USE_DIR="${S}"/third-party/build-deps cmake_build install cbs CMAKE_USE_DIR="${S}" npm_config_offline=1 cmake_src_compile }
