Here's an update to miniupnpc-2.3.2.

Various ports using UPNP_GetValidIGD are affected by an API change
in 2.2.8; arguments were added to return the WAN address, and return
values changed. The majority of the patches to cope with this are
from upstream commits, I wrote the drawpile one myself because they
removed that code in 2022.

Anyone want to do further checks?

Index: net/miniupnp/miniupnpc/Makefile
===================================================================
RCS file: /cvs/ports/net/miniupnp/miniupnpc/Makefile,v
diff -u -p -r1.14 Makefile
--- net/miniupnp/miniupnpc/Makefile     29 Feb 2024 14:01:26 -0000      1.14
+++ net/miniupnp/miniupnpc/Makefile     11 Mar 2025 10:25:22 -0000
@@ -1,17 +1,17 @@
 COMMENT=       UPnP IGD client lightweight library
 
-DISTNAME=      miniupnpc-2.2.6
+DISTNAME=      miniupnpc-2.3.2
 
-SHARED_LIBS += miniupnpc 3.1
+SHARED_LIBS += miniupnpc 4.0 # MINIUPNPC_API_VERSION 20
 
 WANTLIB += c
 
-MAKE_FLAGS=    APIVERSION=${LIBminiupnpc_VERSION}
-FAKE_FLAGS=    PREFIX=${TRUEPREFIX}
+MODULES=       devel/cmake
+CONFIGURE_ARGS=        -DUPNPC_BUILD_STATIC=false
 
-USE_GMAKE=     Yes
-
-CONFIGURE_STYLE=       simple
-CONFIGURE_SCRIPT=      updateminiupnpcstrings.sh
+post-install:
+       cd ${PREFIX}/bin; \
+               mv external-ip.sh external-ip; \
+               for i in *-shared; do mv $$i $${i%-shared}; done
 
 .include <bsd.port.mk>
Index: net/miniupnp/miniupnpc/distinfo
===================================================================
RCS file: /cvs/ports/net/miniupnp/miniupnpc/distinfo,v
diff -u -p -r1.6 distinfo
--- net/miniupnp/miniupnpc/distinfo     29 Feb 2024 14:01:26 -0000      1.6
+++ net/miniupnp/miniupnpc/distinfo     11 Mar 2025 10:25:22 -0000
@@ -1,2 +1,2 @@
-SHA256 (miniupnpc-2.2.6.tar.gz) = N/zZGVNQjD5i1pZLuP+8XUfz4TSB+lTmIU/MaHBMZvE=
-SIZE (miniupnpc-2.2.6.tar.gz) = 103949
+SHA256 (miniupnpc-2.3.2.tar.gz) = mF3hbS5UScO6DTZjoMdssr/4JHKg63owYQfZP0RYb/4=
+SIZE (miniupnpc-2.3.2.tar.gz) = 140137
Index: net/miniupnp/miniupnpc/patches/patch-Makefile
===================================================================
RCS file: /cvs/ports/net/miniupnp/miniupnpc/patches/patch-Makefile,v
diff -u -p -r1.8 patch-Makefile
--- net/miniupnp/miniupnpc/patches/patch-Makefile       29 Feb 2024 14:01:26 
-0000      1.8
+++ net/miniupnp/miniupnpc/patches/patch-Makefile       11 Mar 2025 10:25:22 
-0000
@@ -1,7 +1,7 @@
 Index: Makefile
 --- Makefile.orig
 +++ Makefile
-@@ -157,7 +157,7 @@ endif
+@@ -158,7 +158,7 @@ endif
  INSTALLDIRINC = $(INSTALLPREFIX)/include/miniupnpc
  INSTALLDIRLIB = $(INSTALLPREFIX)/$(LIBDIR)
  INSTALLDIRBIN = $(INSTALLPREFIX)/bin
@@ -10,7 +10,7 @@ Index: Makefile
  PKGCONFIGDIR = $(INSTALLDIRLIB)/pkgconfig
  
  FILESTOINSTALL = $(LIBRARY) $(EXECUTABLES)
-@@ -251,7 +251,6 @@ install:   updateversion $(FILESTOINSTALL)
+@@ -257,7 +257,6 @@ install:   updateversion $(FILESTOINSTALL)
        $(INSTALL) -m 644 $(LIBRARY) $(DESTDIR)$(INSTALLDIRLIB)
  ifeq (, $(findstring amiga, $(OS)))
        $(INSTALL) -m 644 $(SHAREDLIBRARY) $(DESTDIR)$(INSTALLDIRLIB)/$(SONAME)
Index: net/miniupnp/miniupnpc/pkg/PLIST
===================================================================
RCS file: /cvs/ports/net/miniupnp/miniupnpc/pkg/PLIST,v
diff -u -p -r1.3 PLIST
--- net/miniupnp/miniupnpc/pkg/PLIST    29 Feb 2024 14:01:26 -0000      1.3
+++ net/miniupnp/miniupnpc/pkg/PLIST    11 Mar 2025 10:25:22 -0000
@@ -13,7 +13,11 @@ include/miniupnpc/upnpcommands.h
 include/miniupnpc/upnpdev.h
 include/miniupnpc/upnperrors.h
 include/miniupnpc/upnpreplyparse.h
-@static-lib lib/libminiupnpc.a
+lib/cmake/
+lib/cmake/miniupnpc/
+lib/cmake/miniupnpc/libminiupnpc-shared${MODCMAKE_BUILD_SUFFIX}
+lib/cmake/miniupnpc/libminiupnpc-shared.cmake
+lib/cmake/miniupnpc/miniupnpc-config.cmake
 @lib lib/libminiupnpc.so.${LIBminiupnpc_VERSION}
 lib/pkgconfig/miniupnpc.pc
 @man man/man3/miniupnpc.3
Index: emulators/flycast/patches/patch-core_network_miniupnp_cpp
===================================================================
RCS file: emulators/flycast/patches/patch-core_network_miniupnp_cpp
diff -N emulators/flycast/patches/patch-core_network_miniupnp_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ emulators/flycast/patches/patch-core_network_miniupnp_cpp   11 Mar 2025 
10:25:22 -0000
@@ -0,0 +1,20 @@
+From 71982eda7a038e24942921e558845103b6c12326 Mon Sep 17 00:00:00 2001
+From: scribam <scri...@users.noreply.github.com>
+Date: Mon, 24 Jun 2024 18:53:49 +0200
+Subject: [PATCH] miniupnp: add support for api version 18
+
+Index: core/network/miniupnp.cpp
+--- core/network/miniupnp.cpp.orig
++++ core/network/miniupnp.cpp
+@@ -43,7 +43,11 @@ bool MiniUPnP::Init()
+               WARN_LOG(NETWORK, "UPnP discover failed: error %d", error);
+               return false;
+       }
++#if MINIUPNPC_API_VERSION >= 18
++      error = UPNP_GetValidIGD(devlist, &urls, &data, lanAddress, 
sizeof(lanAddress), nullptr, 0);
++#else
+       error = UPNP_GetValidIGD(devlist, &urls, &data, lanAddress, 
sizeof(lanAddress));
++#endif
+       freeUPNPDevlist(devlist);
+       if (error != 1)
+       {
Index: games/godot4/patches/patch-modules_upnp_upnp_cpp
===================================================================
RCS file: /cvs/ports/games/godot4/patches/patch-modules_upnp_upnp_cpp,v
diff -u -p -r1.1.1.1 patch-modules_upnp_upnp_cpp
--- games/godot4/patches/patch-modules_upnp_upnp_cpp    26 Nov 2023 18:09:33 
-0000      1.1.1.1
+++ games/godot4/patches/patch-modules_upnp_upnp_cpp    11 Mar 2025 10:25:22 
-0000
@@ -1,4 +1,11 @@
-fix include path for miniupnpc
+hunk 1, fix include path for miniupnpc
+
+hunk 2,
+
+From 4c72d599f0a171a96e47004239f42756115b723f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= <rversche...@gmail.com>
+Date: Wed, 18 Sep 2024 11:50:54 +0200
+Subject: [PATCH] miniupnpc: Update to 2.2.8 (new major 18)
 
 Index: modules/upnp/upnp.cpp
 --- modules/upnp/upnp.cpp.orig
@@ -14,3 +21,15 @@ Index: modules/upnp/upnp.cpp
  
  #include <stdlib.h>
  
+@@ -131,7 +131,11 @@ void UPNP::parse_igd(Ref<UPNPDevice> dev, UPNPDev *dev
+       GetUPNPUrls(&urls, &data, dev->get_description_url().utf8().get_data(), 
0);
+ 
+       char addr[16];
++#if MINIUPNPC_API_VERSION >= 18
++      int i = UPNP_GetValidIGD(devlist, &urls, &data, (char *)&addr, 16, 
nullptr, 0);
++#else
+       int i = UPNP_GetValidIGD(devlist, &urls, &data, (char *)&addr, 16);
++#endif
+ 
+       if (i != 1) {
+               FreeUPNPUrls(&urls);
Index: games/openclonk/patches/patch-src_network_C4Network2UPnPLinux_cpp
===================================================================
RCS file: games/openclonk/patches/patch-src_network_C4Network2UPnPLinux_cpp
diff -N games/openclonk/patches/patch-src_network_C4Network2UPnPLinux_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ games/openclonk/patches/patch-src_network_C4Network2UPnPLinux_cpp   11 Mar 
2025 10:25:22 -0000
@@ -0,0 +1,21 @@
+From 5737af90d8054c27147e5cdcb1c57b75746518a8 Mon Sep 17 00:00:00 2001
+From: Lukas Werling <lu...@lwrl.de>
+Date: Sat, 11 Jan 2025 23:55:07 +0100
+Subject: [PATCH] Fix build with miniupnpc 2.2.8
+
+Index: src/network/C4Network2UPnPLinux.cpp
+--- src/network/C4Network2UPnPLinux.cpp.orig
++++ src/network/C4Network2UPnPLinux.cpp
+@@ -77,7 +77,12 @@ void C4Network2UPnPP::Init()
+       if ((devlist = upnpDiscover(2000, nullptr, nullptr, 
UPNP_LOCAL_PORT_ANY, 0, 2, &error)))
+ #endif
+       {
++#if MINIUPNPC_API_VERSION >= 18
++              char wanaddr[64];
++              if ((status = UPNP_GetValidIGD(devlist, &upnp_urls, &igd_data, 
lanaddr, sizeof(lanaddr), wanaddr, sizeof(wanaddr))))
++#else
+               if ((status = UPNP_GetValidIGD(devlist, &upnp_urls, &igd_data, 
lanaddr, sizeof(lanaddr))))
++#endif
+               {
+                       ThreadLogS("UPnP: Found IGD %s (status %d)", 
upnp_urls.controlURL, status);
+                       initialized = true;
Index: graphics/drawpile/patches/patch-src_libshared_util_upnp_cpp
===================================================================
RCS file: graphics/drawpile/patches/patch-src_libshared_util_upnp_cpp
diff -N graphics/drawpile/patches/patch-src_libshared_util_upnp_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ graphics/drawpile/patches/patch-src_libshared_util_upnp_cpp 11 Mar 2025 
10:25:22 -0000
@@ -0,0 +1,17 @@
+Index: src/libshared/util/upnp.cpp
+--- src/libshared/util/upnp.cpp.orig
++++ src/libshared/util/upnp.cpp
+@@ -95,9 +95,12 @@ void UPnPClient::doDiscover()
+               qWarning("UPnP: Error (%d) discovering devices!", error);
+       }
+ 
+-
+       char lanaddr[64];
++#if MINIUPNPC_API_VERSION >= 18
++      UPNP_GetValidIGD(d->devices, &d->urls, &d->data, lanaddr, 
sizeof(lanaddr), nullptr, 0);
++#else
+       UPNP_GetValidIGD(d->devices, &d->urls, &d->data, lanaddr, 
sizeof(lanaddr));
++#endif
+ }
+ 
+ void UPnPClient::doActivateForward(int port)
Index: net/transmission/patches/patch-libtransmission_port-forwarding-upnp_cc
===================================================================
RCS file: net/transmission/patches/patch-libtransmission_port-forwarding-upnp_cc
diff -N net/transmission/patches/patch-libtransmission_port-forwarding-upnp_cc
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ net/transmission/patches/patch-libtransmission_port-forwarding-upnp_cc      
11 Mar 2025 10:25:22 -0000
@@ -0,0 +1,24 @@
+From febfe49ca3ecab1a7142ecb34012c1f0b2bcdee8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?C=C5=93ur?= <co...@gmx.fr>
+Date: Sat, 15 Jun 2024 07:24:06 +0800
+Subject: [PATCH] bump miniupnpc to 2.2.8 (#6907)
+
+Index: libtransmission/port-forwarding-upnp.cc
+--- libtransmission/port-forwarding-upnp.cc.orig
++++ libtransmission/port-forwarding-upnp.cc
+@@ -275,8 +275,13 @@ tr_port_forwarding_state tr_upnpPulse(tr_upnp* handle,
+ 
+         FreeUPNPUrls(&handle->urls);
+         auto lanaddr = std::array<char, TR_ADDRSTRLEN>{};
+-        if (UPNP_GetValidIGD(devlist, &handle->urls, &handle->data, 
std::data(lanaddr), std::size(lanaddr) - 1) ==
+-            UPNP_IGD_VALID_CONNECTED)
++        if (
++#if (MINIUPNPC_API_VERSION >= 18)
++            UPNP_GetValidIGD(devlist, &handle->urls, &handle->data, 
std::data(lanaddr), std::size(lanaddr) - 1, nullptr, 0)
++#else
++            UPNP_GetValidIGD(devlist, &handle->urls, &handle->data, 
std::data(lanaddr), std::size(lanaddr) - 1)
++#endif
++            == UPNP_IGD_VALID_CONNECTED)
+         {
+             tr_logAddInfo(fmt::format(_("Found Internet Gateway Device 
'{url}'"), fmt::arg("url", handle->urls.controlURL)));
+             tr_logAddInfo(fmt::format(_("Local Address is '{address}'"), 
fmt::arg("address", lanaddr.data())));

Reply via email to