I added some more gcc-14 fixes, and used part of an upstream PR (9367)
diff -Nru monero-0.18.3.1+~0+20200826/debian/changelog
monero-0.18.3.1+~0+20200826/debian/changelog
--- monero-0.18.3.1+~0+20200826/debian/changelog 2023-10-08
22:09:43.000000000 +0200
+++ monero-0.18.3.1+~0+20200826/debian/changelog 2024-07-26
18:48:19.000000000 +0200
@@ -1,3 +1,12 @@
+monero (0.18.3.1+~0+20200826-1.1) unstable; urgency=medium
+
+ * Non-maintainer upload
+ * Fix FTBFS with miniupnpc-2.2.8-2 (Closes: #1076690)
+ - use upstream proposed PR 9367
+ * Add some c++-14 related fixes
+
+ -- Gianfranco Costamagna <locutusofb...@debian.org> Fri, 26 Jul 2024
18:48:19 +0200
+
monero (0.18.3.1+~0+20200826-1) unstable; urgency=medium
* Team upload
diff -Nru monero-0.18.3.1+~0+20200826/debian/patches/9367.patch
monero-0.18.3.1+~0+20200826/debian/patches/9367.patch
--- monero-0.18.3.1+~0+20200826/debian/patches/9367.patch 1970-01-01
01:00:00.000000000 +0100
+++ monero-0.18.3.1+~0+20200826/debian/patches/9367.patch 2024-07-26
18:48:19.000000000 +0200
@@ -0,0 +1,157 @@
+From 5074a543a49f7e23fb39b6462fd4c4c9741c3693 Mon Sep 17 00:00:00 2001
+From: 0xFFFC0000 <0xfffc0...@proton.me>
+Date: Wed, 12 Jun 2024 21:29:23 +0000
+Subject: [PATCH 1/3] cmake: remove extera cmake/FindMiniupnpc.cmake and only
+ rely on external/miniupnpc.
+
+---
+ cmake/FindMiniupnpc.cmake | 59 ---------------------------------------
+ external/CMakeLists.txt | 2 --
+ 2 files changed, 61 deletions(-)
+ delete mode 100644 cmake/FindMiniupnpc.cmake
+
+Index: monero-0.18.3.1+~0+20200826/external/CMakeLists.txt
+===================================================================
+--- monero-0.18.3.1+~0+20200826.orig/external/CMakeLists.txt
++++ monero-0.18.3.1+~0+20200826/external/CMakeLists.txt
+@@ -36,7 +36,11 @@
+ # others.
+
+ find_package(Miniupnpc REQUIRED)
++if(NOT MSVC)
++ add_compile_options(-D_GNU_SOURCE)
++endif()
+
++set(UPNPC_BUILD_TESTS FALSE CACHE BOOL "Disable miniupnp internal tests."
FORCE)
+ set(UPNP_STATIC false PARENT_SCOPE)
+ #set(UPNP_INCLUDE ${MINIUPNP_INCLUDE_DIR} PARENT_SCOPE)
+ set(UPNP_LIBRARIES ${MINIUPNP_LIBRARY} PARENT_SCOPE)
+Index: monero-0.18.3.1+~0+20200826/CMakeLists.txt
+===================================================================
+--- monero-0.18.3.1+~0+20200826.orig/CMakeLists.txt
++++ monero-0.18.3.1+~0+20200826/CMakeLists.txt
+@@ -645,7 +645,7 @@
+ endfunction()
+
+ function (monero_add_library_with_deps)
+- cmake_parse_arguments(MONERO_ADD_LIBRARY "" "NAME" "DEPENDS;SOURCES"
${ARGN})
++ cmake_parse_arguments(MONERO_ADD_LIBRARY "" "NAME"
"DEPENDS;LINKS;PRIVATE_LINKS;INCLUDES;PRIVATE_INCLUDES;SOURCES" ${ARGN})
+ source_group("${MONERO_ADD_LIBRARY_NAME}" FILES
${MONERO_ADD_LIBRARY_SOURCES})
+
+ # Define a ("virtual") object library and an actual library that links those
+@@ -660,6 +660,22 @@
+ if (MONERO_ADD_LIBRARY_DEPENDS)
+ add_dependencies(${objlib} ${MONERO_ADD_LIBRARY_DEPENDS})
+ endif()
++ if (MONERO_ADD_LIBRARY_LINKS)
++ target_link_libraries(${objlib} PUBLIC ${MONERO_ADD_LIBRARY_LINKS})
++ target_link_libraries(${MONERO_ADD_LIBRARY_NAME} PUBLIC
${MONERO_ADD_LIBRARY_LINKS})
++ endif()
++ if (MONERO_ADD_LIBRARY_PRIVATE_LINKS)
++ target_link_libraries(${objlib} PRIVATE
${MONERO_ADD_LIBRARY_PRIVATE_LINKS})
++ target_link_libraries(${MONERO_ADD_LIBRARY_NAME} PRIVATE
${MONERO_ADD_LIBRARY_PRIVATE_LINKS})
++ endif()
++ if (MONERO_ADD_LIBRARY_INCLUDES)
++ target_include_directories(${objlib} PUBLIC
${MONERO_ADD_LIBRARY_INCLUDES})
++ target_include_directories(${MONERO_ADD_LIBRARY_NAME} PUBLIC
${MONERO_ADD_LIBRARY_INCLUDES})
++ endif()
++ if (MONERO_ADD_LIBRARY_PRIVATE_INCLUDES)
++ target_include_directories(${objlib} PRIVATE
${MONERO_ADD_LIBRARY_PRIVATE_INCLUDES})
++ target_include_directories(${MONERO_ADD_LIBRARY_NAME} PRIVATE
${MONERO_ADD_LIBRARY_PRIVATE_INCLUDES})
++ endif()
+ set_property(TARGET "${MONERO_ADD_LIBRARY_NAME}" PROPERTY FOLDER "libs")
+ target_compile_definitions(${objlib}
+ PRIVATE
$<TARGET_PROPERTY:${MONERO_ADD_LIBRARY_NAME},INTERFACE_COMPILE_DEFINITIONS>)
+Index: monero-0.18.3.1+~0+20200826/src/p2p/net_node.inl
+===================================================================
+--- monero-0.18.3.1+~0+20200826.orig/src/p2p/net_node.inl
++++ monero-0.18.3.1+~0+20200826/src/p2p/net_node.inl
+@@ -2989,7 +2989,8 @@
+ UPNPUrls urls;
+ IGDdatas igdData;
+ char lanAddress[64];
+- result = UPNP_GetValidIGD(deviceList, &urls, &igdData, lanAddress, sizeof
lanAddress);
++ char wanaddr[64]; /* up address of the IGD on the WAN */
++ result = UPNP_GetValidIGD(deviceList, &urls, &igdData, lanAddress, sizeof
lanAddress, wanaddr, sizeof wanaddr);
+ freeUPNPDevlist(deviceList);
+ if (result > 0) {
+ if (result == 1) {
+@@ -3057,7 +3058,8 @@
+ UPNPUrls urls;
+ IGDdatas igdData;
+ char lanAddress[64];
+- result = UPNP_GetValidIGD(deviceList, &urls, &igdData, lanAddress, sizeof
lanAddress);
++ char wanaddr[64]; /* up address of the IGD on the WAN */
++ result = UPNP_GetValidIGD(deviceList, &urls, &igdData, lanAddress, sizeof
lanAddress, wanaddr, sizeof wanaddr);
+ freeUPNPDevlist(deviceList);
+ if (result > 0) {
+ if (result == 1) {
+Index: monero-0.18.3.1+~0+20200826/src/rpc/CMakeLists.txt
+===================================================================
+--- monero-0.18.3.1+~0+20200826.orig/src/rpc/CMakeLists.txt
++++ monero-0.18.3.1+~0+20200826/src/rpc/CMakeLists.txt
+@@ -96,12 +96,31 @@
+ monero_add_library(rpc_base
+ ${rpc_base_sources}
+ ${rpc_base_headers}
+- ${rpc_base_private_headers})
++ ${rpc_base_private_headers}
++ LINKS
++ common
++ epee
++ ${Boost_REGEX_LIBRARY}
++ ${Boost_THREAD_LIBRARY}
++ ${Boost_PROGRAM_OPTIONS_LIBRARY}
++ PRIVATE_LINKS
++ ${EXTRA_LIBRARIES})
+
+ monero_add_library(rpc
+ ${rpc_sources}
+ ${rpc_headers}
+- ${rpc_private_headers})
++ ${rpc_private_headers}
++ LINKS
++ rpc_base
++ common
++ cryptonote_core
++ cryptonote_protocol
++ net
++ version
++ ${Boost_REGEX_LIBRARY}
++ ${Boost_THREAD_LIBRARY}
++ PRIVATE_LINKS
++ ${EXTRA_LIBRARIES})
+
+ monero_add_library(rpc_pub
+ ${rpc_pub_sources}
+@@ -118,30 +137,6 @@
+ ${daemon_rpc_server_headers}
+ ${daemon_rpc_server_private_headers})
+
+-
+-target_link_libraries(rpc_base
+- PUBLIC
+- common
+- epee
+- ${Boost_REGEX_LIBRARY}
+- ${Boost_THREAD_LIBRARY}
+- ${Boost_PROGRAM_OPTIONS_LIBRARY}
+- PRIVATE
+- ${EXTRA_LIBRARIES})
+-
+-target_link_libraries(rpc
+- PUBLIC
+- rpc_base
+- common
+- cryptonote_core
+- cryptonote_protocol
+- net
+- version
+- ${Boost_REGEX_LIBRARY}
+- ${Boost_THREAD_LIBRARY}
+- PRIVATE
+- ${EXTRA_LIBRARIES})
+-
+ target_link_libraries(rpc_pub
+ PUBLIC
+ epee
diff -Nru monero-0.18.3.1+~0+20200826/debian/patches/fix-build.patch
monero-0.18.3.1+~0+20200826/debian/patches/fix-build.patch
--- monero-0.18.3.1+~0+20200826/debian/patches/fix-build.patch 1970-01-01
01:00:00.000000000 +0100
+++ monero-0.18.3.1+~0+20200826/debian/patches/fix-build.patch 2024-07-26
18:48:19.000000000 +0200
@@ -0,0 +1,21 @@
+Description:
+ * Add some c++-14 related fixes
+/<<PKGBUILDDIR>>/tests/unit_tests/memwipe.cpp:49:29: error: ‘setw’ is not a
member of ‘std’
+ 49 | MDEBUG(std::hex << std::setw(8) << std::setfill('0') <<
*(uint32_t*)quux);
+
+Author: Gianfranco Costamagna <locutusofb...@debian.org>
+Bug-Debian: https://bugs.debian.org/1076690
+Last-Update: 2024-07-29
+
+Index: monero-0.18.3.1+~0+20200826/tests/unit_tests/memwipe.cpp
+===================================================================
+--- monero-0.18.3.1+~0+20200826.orig/tests/unit_tests/memwipe.cpp
++++ monero-0.18.3.1+~0+20200826/tests/unit_tests/memwipe.cpp
+@@ -28,6 +28,7 @@
+
+ #include "gtest/gtest.h"
+
++#include <iomanip>
+ #include <stdint.h>
+ #include "misc_log_ex.h"
+ #include "memwipe.h"
diff -Nru monero-0.18.3.1+~0+20200826/debian/patches/series
monero-0.18.3.1+~0+20200826/debian/patches/series
--- monero-0.18.3.1+~0+20200826/debian/patches/series 2023-10-08
22:05:31.000000000 +0200
+++ monero-0.18.3.1+~0+20200826/debian/patches/series 2024-07-26
18:48:19.000000000 +0200
@@ -1,2 +1,4 @@
2001_system_shared_libs.patch
2002_privacy.patch
+9367.patch
+fix-build.patch