Date: Sat, 07 Feb 2026 18:25:41 +0000 From: Vladimir Druzenko <vvd@FreeBSD.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org Cc: Armin Zhu <lisp_25689@163.com> Subject: git: 397c794f5012 - main - games/moonlight-embedded: Update 2.7.0 => 2.7.1 Message-ID: <698783a5.31c70.5313aed5@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by vvd: URL: https://cgit.FreeBSD.org/ports/commit/?id=397c794f501271cf9b811e8cda8b5f25af814838 commit 397c794f501271cf9b811e8cda8b5f25af814838 Author: Armin Zhu <lisp_25689@163.com> AuthorDate: 2026-02-07 17:39:33 +0000 Commit: Vladimir Druzenko <vvd@FreeBSD.org> CommitDate: 2026-02-07 18:25:20 +0000 games/moonlight-embedded: Update 2.7.0 => 2.7.1 Changelog: - Increased packet size when streaming remotely over IPv6. - Improved reliability on high latency connections. - Improved gamepad input batching. - Fixed build on 32-bit platforms using 64-bit time. - Fixed several compiler warnings. - Updated included gamepad mappings. https://github.com/moonlight-stream/moonlight-embedded/releases/tag/v2.7.1 - Fix warnings from portlint, portclippy and portfmt. - Moonlight embedded has remove x11 platform, so remove some patches. PR: 292992 --- games/moonlight-embedded/Makefile | 40 ++++----- games/moonlight-embedded/distinfo | 6 +- .../files/patch-libgamestream_CMakeLists.txt | 4 +- .../files/patch-libgamestream_client.c | 18 ----- .../files/patch-src_input_evdev.c | 94 ---------------------- games/moonlight-embedded/files/patch-src_main.c | 84 ------------------- ...tch-third__party_moonlight-common-c_enet_host.c | 55 +++++++++++++ 7 files changed, 82 insertions(+), 219 deletions(-) diff --git a/games/moonlight-embedded/Makefile b/games/moonlight-embedded/Makefile index 912806319c9e..8183c2345f3d 100644 --- a/games/moonlight-embedded/Makefile +++ b/games/moonlight-embedded/Makefile @@ -1,6 +1,5 @@ PORTNAME= moonlight-embedded -DISTVERSION= 2.7.0 -PORTREVISION= 4 +DISTVERSION= 2.7.1 CATEGORIES= games MASTER_SITES= https://github.com/moonlight-stream/moonlight-embedded/releases/download/v${DISTVERSION}/ @@ -27,37 +26,42 @@ USE_LDCONFIG= yes USE_PERL5= build USE_SDL= sdl2 -NO_WRKSUBDIR= yes CFLAGS+= -DHAS_SOCKLEN_T=1 -I${LOCALBASE}/include/libepoll-shim/ LDFLAGS+= -lepoll-shim + CONFLICTS_INSTALL= moonlight-embedded-devel +NO_WRKSUBDIR= yes + PLIST_FILES= bin/moonlight \ "@sample etc/moonlight.conf.sample" \ share/man/man1/moonlight.1.gz \ share/moonlight/gamecontrollerdb.txt OPTIONS_DEFAULT= OSS X11 +OPTIONS_GROUP= DISPLAY OTHERS +OPTIONS_GROUP_DISPLAY= X11 +OPTIONS_GROUP_OTHERS= CEC +OPTIONS_SINGLE= SOUND +OPTIONS_SINGLE_SOUND= OSS PULSE + +CEC_DESC= Enable HDMI-CEC(TV controller) feature by using libcec.so OSS_DESC= Open Sound System support for embedded(not SDL) platform PULSE_DESC= PulseAudio sound server support for embedded(not SDL) platform -CEC_DESC= Enable HDMI-CEC(TV controller) feature by using libcec.so X11_DESC= Enable x11 and x11_vaapi platform using xorg -OPTIONS_SINGLE= SOUND -OPTIONS_SINGLE_SOUND= OSS PULSE -OPTIONS_GROUP= DISPLAY OTHERS -OPTIONS_GROUP_OTHERS= CEC -OPTIONS_GROUP_DISPLAY= X11 -OSS_CMAKE_ON= -DENABLE_PULSE:BOOL=false -PULSE_CMAKE_BOOL= ENABLE_PULSE -PULSE_LIB_DEPENDS= libpulse.so:audio/pulseaudio -CEC_CMAKE_BOOL= ENABLE_CEC + CEC_LIB_DEPENDS= libcec.so:multimedia/libcec \ libp8-platform.so:devel/p8-platform -X11_USES= xorg gl -X11_USE= xorg=x11 gl=egl,glesv2 -X11_CMAKE_BOOL= ENABLE_X11 -X11_LIB_DEPENDS= libvdpau.so:multimedia/libvdpau \ - libva.so:multimedia/libva +CEC_CMAKE_BOOL= ENABLE_CEC +OSS_CMAKE_ON= -DENABLE_PULSE:BOOL=false +PULSE_LIB_DEPENDS= libpulse.so:audio/pulseaudio +PULSE_CMAKE_BOOL= ENABLE_PULSE +X11_LIB_DEPENDS= libva.so:multimedia/libva \ + libvdpau.so:multimedia/libvdpau +X11_USES= gl xorg +X11_USE= GL=egl,glesv2 \ + XORG=x11 +X11_CMAKE_BOOL= ENABLE_X11 post-extract: @${REINPLACE_CMD} -e 's|/etc/moonlight/|${PREFIX}/etc/moonlight/|g' \ diff --git a/games/moonlight-embedded/distinfo b/games/moonlight-embedded/distinfo index 368b842ee506..f20ac5b44483 100644 --- a/games/moonlight-embedded/distinfo +++ b/games/moonlight-embedded/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1708491885 -SHA256 (moonlight-embedded-2.7.0.tar.xz) = 6527718e678dafd6e1e1876bbc6949538b38986d54ebda0b7fdc3b3f4af4f2dd -SIZE (moonlight-embedded-2.7.0.tar.xz) = 335984 +TIMESTAMP = 1766564406 +SHA256 (moonlight-embedded-2.7.1.tar.xz) = bacbccd15ac01708f35da553eb1bcdccbc887545a6cf2bfcea3e87031dc7276c +SIZE (moonlight-embedded-2.7.1.tar.xz) = 342576 diff --git a/games/moonlight-embedded/files/patch-libgamestream_CMakeLists.txt b/games/moonlight-embedded/files/patch-libgamestream_CMakeLists.txt index 609280935a23..fda9869d752e 100644 --- a/games/moonlight-embedded/files/patch-libgamestream_CMakeLists.txt +++ b/games/moonlight-embedded/files/patch-libgamestream_CMakeLists.txt @@ -1,10 +1,10 @@ ---- libgamestream/CMakeLists.txt.orig 2024-02-20 04:01:31 UTC +--- libgamestream/CMakeLists.txt.orig 2025-11-30 22:38:13 UTC +++ libgamestream/CMakeLists.txt @@ -3,7 +3,7 @@ find_package(CURL REQUIRED) find_package(LibUUID REQUIRED) find_package(Threads REQUIRED) find_package(CURL REQUIRED) --find_package(OpenSSL 1.0.2 REQUIRED) +-find_package(OpenSSL 1.1.0 REQUIRED) +find_package(OpenSSL REQUIRED) find_package(EXPAT REQUIRED) diff --git a/games/moonlight-embedded/files/patch-libgamestream_client.c b/games/moonlight-embedded/files/patch-libgamestream_client.c deleted file mode 100644 index 175d9029755d..000000000000 --- a/games/moonlight-embedded/files/patch-libgamestream_client.c +++ /dev/null @@ -1,18 +0,0 @@ ---- libgamestream/client.c.orig 2024-02-20 04:01:31 UTC -+++ libgamestream/client.c -@@ -539,7 +539,15 @@ int gs_pair(PSERVER_DATA server, char* pin) { - RAND_bytes(client_secret_data, sizeof(client_secret_data)); - - const ASN1_BIT_STRING *asnSignature; -+#ifdef __FreeBSD__ -+ #if OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER) - X509_get0_signature(&asnSignature, NULL, cert); -+ #else -+ asnSignature = cert->signature; -+ #endif -+#else -+ X509_get0_signature(&asnSignature, NULL, cert); -+#endif - - challenge_response = malloc(16 + asnSignature->length + sizeof(client_secret_data)); - char challenge_response_hash[32]; diff --git a/games/moonlight-embedded/files/patch-src_input_evdev.c b/games/moonlight-embedded/files/patch-src_input_evdev.c deleted file mode 100644 index c7f9be90ab9a..000000000000 --- a/games/moonlight-embedded/files/patch-src_input_evdev.c +++ /dev/null @@ -1,94 +0,0 @@ ---- src/input/evdev.c.orig 2024-02-20 04:01:31 UTC -+++ src/input/evdev.c -@@ -45,6 +45,8 @@ - #endif - #include <math.h> - -+static bool isUseKbdmux = false; -+ - #if __BYTE_ORDER == __LITTLE_ENDIAN - #define int16_to_le(val) val - #else -@@ -758,7 +760,7 @@ static int evdev_handle(int fd) { - struct input_event ev; - while ((rc = libevdev_next_event(devices[i].dev, LIBEVDEV_READ_FLAG_NORMAL, &ev)) >= 0) { - if (rc == LIBEVDEV_READ_STATUS_SYNC) -- fprintf(stderr, "Error: cannot keep up\n"); -+ fprintf(stderr, "Error:%s(%d) cannot keep up\n", libevdev_get_name(devices[i].dev), i); - else if (rc == LIBEVDEV_READ_STATUS_SUCCESS) { - if (!handler(&ev, &devices[i])) - return LOOP_RETURN; -@@ -775,6 +777,39 @@ static int evdev_handle(int fd) { - return LOOP_OK; - } - -+void is_use_kbdmux() { -+ const char* tryFirstInput = "/dev/input/event0"; -+ const char* trySecondInput = "/dev/input/event1"; -+ -+ int fdFirst = open(tryFirstInput, O_RDWR|O_NONBLOCK); -+ int fdSecond = open(trySecondInput, O_RDWR|O_NONBLOCK); -+ if (fdFirst <= 0 && fdSecond <= 0) { -+ //Suppose use kbdmux because of default behavior -+ isUseKbdmux = true; -+ return; -+ } -+ -+ struct libevdev *evdevFirst = libevdev_new(); -+ libevdev_set_fd(evdevFirst, fdFirst); -+ const char* nameFirst = libevdev_get_name(evdevFirst); -+ struct libevdev *evdevSecond = libevdev_new(); -+ libevdev_set_fd(evdevSecond, fdSecond); -+ const char* nameSecond = libevdev_get_name(evdevSecond); -+ -+ libevdev_free(evdevFirst); -+ libevdev_free(evdevSecond); -+ close(fdFirst); -+ close(fdSecond); -+ -+ if (strcmp(nameFirst, "System keyboard multiplexer") == 0 || -+ strcmp(nameSecond, "System keyboard multiplexer") == 0) { -+ isUseKbdmux = true; -+ return; -+ } -+ -+ return; -+} -+ - void evdev_create(const char* device, struct mapping* mappings, bool verbose, int rotate) { - int fd = open(device, O_RDWR|O_NONBLOCK); - if (fd <= 0) { -@@ -851,6 +886,33 @@ void evdev_create(const char* device, struct mapping* - libevdev_has_event_code(evdev, EV_ABS, ABS_WHEEL) || - libevdev_has_event_code(evdev, EV_ABS, ABS_GAS) || - libevdev_has_event_code(evdev, EV_ABS, ABS_BRAKE)); -+ bool is_acpibutton = -+ strcmp(name, "Sleep Button") == 0 || -+ strcmp(name, "Power Button") == 0; -+ // Just use System keyboard multiplexer for FreeBSD,see kbdcontrol(1) and kbdmux(4) -+ // Trying to grab kbdmux0 and keyboard it's self at the same time results in -+ // the keyboard becoming unresponsive on FreeBSD. -+ bool is_likekeyboard = -+ is_keyboard && isUseKbdmux && strcmp(name, "System keyboard multiplexer") != 0; -+/* -+ (is_keyboard && guid[0] <= 3) || -+ strcmp(name, "AT keyboard") == 0; -+*/ -+ -+ // In some cases,acpibutton can be mistaken for a keyboard and freeze the keyboard when tring grab. -+ if (is_acpibutton) { -+ if (verbose) -+ printf("Skip acpibutton: %s\n", name); -+ libevdev_free(evdev); -+ close(fd); -+ return; -+ } -+ // In some cases,Do not grab likekeyboard for avoiding keyboard unresponsive -+ if (is_likekeyboard) { -+ if (verbose) -+ printf("Do NOT grab like-keyboard: %s,version: %d,bustype: %d\n", name, guid[6], guid[0]); -+ is_keyboard = false; -+ } - - if (is_accelerometer) { - if (verbose) diff --git a/games/moonlight-embedded/files/patch-src_main.c b/games/moonlight-embedded/files/patch-src_main.c deleted file mode 100644 index 478f6ba2ccfa..000000000000 --- a/games/moonlight-embedded/files/patch-src_main.c +++ /dev/null @@ -1,84 +0,0 @@ ---- src/main.c.orig 2024-02-20 04:01:31 UTC -+++ src/main.c -@@ -42,6 +42,7 @@ - #include <client.h> - #include <discover.h> - -+#include <time.h> - #include <stdio.h> - #include <stdlib.h> - #include <stdbool.h> -@@ -52,7 +53,8 @@ - #include <netinet/in.h> - #include <netdb.h> - #include <arpa/inet.h> --#include <openssl/rand.h> -+ -+extern void is_use_kbdmux(); - - static void applist(PSERVER_DATA server) { - PAPP_LIST list = NULL; -@@ -202,7 +204,6 @@ static void help() { - printf("\t-bitrate <bitrate>\tSpecify the bitrate in Kbps\n"); - printf("\t-packetsize <size>\tSpecify the maximum packetsize in bytes\n"); - printf("\t-codec <codec>\t\tSelect used codec: auto/h264/h265/av1 (default auto)\n"); -- printf("\t-hdr\t\tEnable HDR streaming (experimental, requires host and device support)\n"); - printf("\t-remote <yes/no/auto>\t\t\tEnable optimizations for WAN streaming (default auto)\n"); - printf("\t-app <app>\t\tName of app to stream\n"); - printf("\t-nosops\t\t\tDon't allow GFE to modify game settings\n"); -@@ -322,19 +323,19 @@ int main(int argc, char* argv[]) { - config.stream.supportedVideoFormats = VIDEO_FORMAT_H264; - if (config.codec == CODEC_HEVC || (config.codec == CODEC_UNSPECIFIED && platform_prefers_codec(system, CODEC_HEVC))) { - config.stream.supportedVideoFormats |= VIDEO_FORMAT_H265; -- if (config.hdr) -- config.stream.supportedVideoFormats |= VIDEO_FORMAT_H265_MAIN10; -+ //if (config.hdr) -+ // config.stream.supportedVideoFormats |= VIDEO_FORMAT_H265_MAIN10; - } - if (config.codec == CODEC_AV1 || (config.codec == CODEC_UNSPECIFIED && platform_prefers_codec(system, CODEC_AV1))) { - config.stream.supportedVideoFormats |= VIDEO_FORMAT_AV1_MAIN8; -- if (config.hdr) -- config.stream.supportedVideoFormats |= VIDEO_FORMAT_AV1_MAIN10; -+ //if (config.hdr) -+ // config.stream.supportedVideoFormats |= VIDEO_FORMAT_AV1_MAIN10; - } - -- if (config.hdr && !(config.stream.supportedVideoFormats & VIDEO_FORMAT_MASK_10BIT)) { -- fprintf(stderr, "HDR streaming requires HEVC or AV1 codec\n"); -- exit(-1); -- } -+ //if (config.hdr && !(config.stream.supportedVideoFormats & VIDEO_FORMAT_MASK_10BIT)) { -+ // fprintf(stderr, "HDR streaming requires HEVC or AV1 codec\n"); -+ // exit(-1); -+ //} - - #ifdef HAVE_SDL - if (system == SDL) -@@ -362,6 +363,9 @@ int main(int argc, char* argv[]) { - mappings = map; - } - -+ // test is use kbdmux driver -+ if (config.inputsCount <= 0) -+ is_use_kbdmux(); - for (int i=0;i<config.inputsCount;i++) { - if (config.debug_level > 0) - printf("Adding input device %s...\n", config.inputs[i]); -@@ -398,7 +402,8 @@ int main(int argc, char* argv[]) { - if (config.pin > 0 && config.pin <= 9999) { - sprintf(pin, "%04d", config.pin); - } else { -- sprintf(pin, "%d%d%d%d", (unsigned)random() % 10, (unsigned)random() % 10, (unsigned)random() % 10, (unsigned)random() % 10); -+ srand((unsigned)time(NULL)); -+ sprintf(pin, "%04d", (unsigned)rand() % 9999 + 1); - } - printf("Please enter the following PIN on the target PC: %s\n", pin); - fflush(stdout); -@@ -406,6 +411,7 @@ int main(int argc, char* argv[]) { - fprintf(stderr, "Failed to pair to server: %s\n", gs_error); - } else { - printf("Succesfully paired\n"); -+ printf("Note: Use Ctrl+Alt+Shift+Q to quit streaming.\n"); - } - } else if (strcmp("unpair", config.action) == 0) { - if (gs_unpair(&server) != GS_OK) { diff --git a/games/moonlight-embedded/files/patch-third__party_moonlight-common-c_enet_host.c b/games/moonlight-embedded/files/patch-third__party_moonlight-common-c_enet_host.c new file mode 100644 index 000000000000..663bc897bd0d --- /dev/null +++ b/games/moonlight-embedded/files/patch-third__party_moonlight-common-c_enet_host.c @@ -0,0 +1,55 @@ +--- third_party/moonlight-common-c/enet/host.c.orig 2025-11-10 02:29:40 UTC ++++ third_party/moonlight-common-c/enet/host.c +@@ -3,6 +3,7 @@ + @brief ENet host management functions + */ + #define ENET_BUILDING_LIB 1 ++#include <netinet/in.h> + #include <string.h> + #include "enet/enet.h" + +@@ -50,7 +51,17 @@ enet_host_create (int addressFamily, const ENetAddress + memset (host -> peers, 0, peerCount * sizeof (ENetPeer)); + + host -> socket = enet_socket_create (addressFamily, ENET_SOCKET_TYPE_DATAGRAM); ++ #if defined(IP_SENDSRCADDR) ++ // if want use IP_SENDSRCADDR with udp socket, FreeBSD need INADDR_ANY addr and local port. ++ ENetAddress localAddress = * address; ++ if (address != NULL && addressFamily == AF_INET) { ++ struct sockaddr_in *addr = (struct sockaddr_in *) & localAddress.address; ++ addr -> sin_addr.s_addr = htonl(INADDR_ANY); ++ } ++ if (host -> socket == ENET_SOCKET_NULL || (address != NULL && enet_socket_bind (host -> socket, & localAddress) < 0)) ++ #else + if (host -> socket == ENET_SOCKET_NULL || (address != NULL && enet_socket_bind (host -> socket, address) < 0)) ++ #endif + { + if (host -> socket != ENET_SOCKET_NULL) + enet_socket_destroy (host -> socket); +@@ -65,8 +76,24 @@ enet_host_create (int addressFamily, const ENetAddress + enet_socket_set_option (host -> socket, ENET_SOCKOPT_RCVBUF, ENET_HOST_RECEIVE_BUFFER_SIZE); + enet_socket_set_option (host -> socket, ENET_SOCKOPT_SNDBUF, ENET_HOST_SEND_BUFFER_SIZE); + +- if (address != NULL && enet_socket_get_address (host -> socket, & host -> address) < 0) +- host -> address = * address; ++ if (address != NULL) ++ { ++ #if defined(IP_SENDSRCADDR) ++ // if no connect to host->socket,INADDR_ANY socket is bind to 0.0.0.0,so use address directly ++ if (addressFamily == AF_INET) { ++ enet_socket_get_address (host -> socket, & localAddress); ++ ((struct sockaddr_in *) & address -> address) -> sin_port = ((struct sockaddr_in *) & localAddress.address) -> sin_port; ++ host -> address = * address; ++ } ++ else ++ #endif ++ { ++ if (enet_socket_get_address (host -> socket, & host -> address) < 0) ++ { ++ host -> address = * address; ++ } ++ } ++ } + + if (! channelLimit || channelLimit > ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT) + channelLimit = ENET_PROTOCOL_MAXIMUM_CHANNEL_COUNT;home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?698783a5.31c70.5313aed5>
