diff --git a/net-p2p/transmission-components/Makefile b/net-p2p/transmission-components/Makefile index 2015ec0a8b22..c53b292e27cb 100644 --- a/net-p2p/transmission-components/Makefile +++ b/net-p2p/transmission-components/Makefile @@ -1,204 +1,145 @@ PORTNAME= transmission -DISTVERSION= 4.0.6 -PORTREVISION= 7 +DISTVERSION= 4.1.1 CATEGORIES= net-p2p MASTER_SITES= https://github.com/${PORTNAME}/${PORTNAME}/releases/download/${DISTVERSION}/ MAINTAINER= mondo.debater_0q@icloud.com COMMENT= Transmission BitTorrent client WWW= https://www.transmissionbt.com LICENSE= GPLv3+ LICENSE_FILE= ${WRKSRC}/COPYING +FLAVORS= daemon cli docs gtk qt utils web +FLAVOR?= ${FLAVORS:[1]} +${FLAVOR}_PKGNAMESUFFIX= -${FLAVOR} + +.if ${FLAVOR:Ndocs:Nweb} BUILD_DEPENDS= ${LOCALBASE}/include/fast_float/fast_float.h:math/fast_float \ ${LOCALBASE}/include/fmt/format.h:devel/libfmt \ + ${LOCALBASE}/include/math/wide_integer/uintwide_t.h:math/wide-integer \ ${LOCALBASE}/include/rapidjson/rapidjson.h:devel/rapidjson \ + ${LOCALBASE}/include/small/map.hpp:devel/small \ ${LOCALBASE}/include/utf8cpp/utf8.h:devel/utf8cpp LIB_DEPENDS= libb64.so:converters/libb64 \ + libcrc32c.so:devel/crc32c \ libcurl.so:ftp/curl \ libdeflate.so:archivers/libdeflate \ libdht.so:devel/jech-dht \ libevent.so:devel/libevent \ libminiupnpc.so:net/miniupnpc \ libnatpmp.so:net/libnatpmp \ libpsl.so:dns/libpsl \ libutp.so:net-p2p/libutp -FLAVORS= cli docs daemon gtk qt utils web -FLAVOR?= ${FLAVORS:[1]} -.for flavor in ${FLAVORS} -${flavor}_PKGNAMESUFFIX= -${flavor} -.endfor - -DESCR= ${PKGDIR}/pkg-descr.${FLAVOR} - -.if ${FLAVOR} == docs -NO_BUILD= yes -LIB_DEPENDS= +gtk_LIB_DEPENDS= libgraphene-1.0.so:graphics/graphene \ + libharfbuzz.so:print/harfbuzz \ + libvulkan.so:graphics/vulkan-loader .endif -gtk_LIB_DEPENDS= libayatana-appindicator3.so:devel/libayatana-appindicator \ - libharfbuzz.so:print/harfbuzz - -USES= cmake cpe iconv localbase pkgconfig ssl tar:xz - +USES= ${${FLAVOR}_USES} cpe tar:xz CPE_VENDOR= transmissionbt CPE_PRODUCT= transmission -EXTRACT_AFTER_ARGS= --exclude third-party/dht \ - --exclude third-party/fast_float \ - --exclude third-party/fmt \ - --exclude third-party/libb64 \ - --exclude third-party/libdeflate \ - --exclude third-party/libevent \ - --exclude third-party/libnatpmp \ - --exclude third-party/libpsl \ - --exclude third-party/libutp \ - --exclude third-party/miniupnpc \ - --exclude third-party/rapidjson \ - --exclude third-party/utfcpp - -.if ${FLAVOR} == gtk -USES+= desktop-file-utils gettext-runtime gettext-tools gnome -USE_GNOME= gdkpixbuf glibmm gtkmm30 -.endif +.if ${FLAVOR:Ndocs:Nweb} +USE_GL= ${${FLAVOR}_USE_GL} +USE_GNOME= ${${FLAVOR}_USE_GNOME} +USE_QT= ${${FLAVOR}_USE_QT} -.if ${FLAVOR} == qt -USES+= desktop-file-utils qmake:no_env qt:5 -USE_QT= core dbus gui network svg widgets buildtools:build \ - linguisttools:build -.endif +_all_USES= cmake:testing compiler:c++20-lang iconv localbase pkgconfig ssl -.if ${FLAVOR} == daemon -USE_RC_SUBR= transmission -.endif +cli_USES= ${_all_USES} -.if ${FLAVOR} == docs -USES= cpe tar:xz -.endif +daemon_USES= ${_all_USES} -.if ${FLAVOR} == web -USES= cpe tar:xz -NO_ARCH= yes -NO_BUILD= yes -.endif +gtk_USES= ${_all_USES} desktop-file-utils gettext gnome +gtk_USE_GNOME= gdkpixbuf glibmm gtkmm40 -CMAKE_ON= USE_SYSTEM_B64 USE_SYSTEM_DEFLATE USE_SYSTEM_DHT \ - USE_SYSTEM_EVENT2 USE_SYSTEM_MINIUPNPC USE_SYSTEM_NATPMP \ - USE_SYSTEM_PSL USE_SYSTEM_UTP -CMAKE_OFF= ENABLE_MAC REBUILD_WEB WITH_SYSTEMD +qt_USES= ${_all_USES} desktop-file-utils gl qmake:no_env qt:6 +qt_USE_GL= opengl +qt_USE_QT= base svg tools translations:build -.if ${FLAVOR:Ndocs} -USERS= transmission -GROUPS= transmission +utils_USES= ${_all_USES} + +.if ${FLAVOR:Mdaemon} +USE_RC_SUBR= ${PORTNAME} .endif -PLIST= ${PKGDIR}/pkg-plist.${FLAVOR} +CMAKE_ARGS= ${${FLAVOR}_CMAKE_ARGS} -DCMAKE_CXX_STANDARD=20 \ + -DWideInteger_DIR=${PREFIX}/lib/cmake/wide-integer +CMAKE_ON= ${${FLAVOR}_CMAKE_ON} USE_SYSTEM_DEFAULT +CMAKE_OFF= ${${FLAVOR}_CMAKE_OFF} ENABLE_MAC RUN_CLANG_TIDY WITH_SYSTEMD -.if ${FLAVOR} == cli -CMAKE_ON+= ENABLE_CLI -CMAKE_OFF+= ENABLE_DAEMON ENABLE_GTK ENABLE_QT ENABLE_UTILS INSTALL_WEB -.endif +cli_CMAKE_ON= ENABLE_CLI +cli_CMAKE_OFF= ENABLE_DAEMON ENABLE_GTK ENABLE_QT ENABLE_UTILS INSTALL_WEB -.if ${FLAVOR} == daemon -CMAKE_ON+= ENABLE_DAEMON -CMAKE_OFF+= ENABLE_CLI ENABLE_GTK ENABLE_QT ENABLE_UTILS INSTALL_WEB -.endif +daemon_CMAKE_ON= ENABLE_DAEMON +daemon_CMAKE_OFF= ENABLE_CLI ENABLE_GTK ENABLE_QT ENABLE_UTILS INSTALL_WEB -.if ${FLAVOR} == gtk -CMAKE_ARGS+= -DUSE_GTK_VERSION=3 -CMAKE_ON+= ENABLE_GTK GTK_IS_REQUIRED -CMAKE_OFF+= ENABLE_CLI ENABLE_DAEMON ENABLE_UTILS INSTALL_WEB -.endif +gtk_CMAKE_ARGS= -DUSE_GTK_VERSION=4 +gtk_CMAKE_ON= ENABLE_GTK GTK_IS_REQUIRED +gtk_CMAKE_OFF= ENABLE_CLI ENABLE_DAEMON ENABLE_UTILS INSTALL_WEB -.if ${FLAVOR} == qt -CMAKE_ARGS+= -DUSE_QT_VERSION=5 -CMAKE_ON+= ENABLE_QT QT_IS_REQUIRED -CMAKE_OFF+= ENABLE_CLI ENABLE_DAEMON ENABLE_UTILS INSTALL_WEB -.endif +qt_CMAKE_ARGS= -DUSE_QT_VERSION=6 +qt_CMAKE_ON= ENABLE_QT QT_IS_REQUIRED +qt_CMAKE_OFF= ENABLE_CLI ENABLE_DAEMON ENABLE_UTILS INSTALL_WEB -.if ${FLAVOR} == utils -CMAKE_ON+= ENABLE_UTILS -CMAKE_OFF+= ENABLE_CLI ENABLE_DAEMON ENABLE_GTK ENABLE_QT ENABLE_TESTS \ - ENABLE_WERROR INSTALL_WEB +utils_CMAKE_ON= ENABLE_UTILS +utils_CMAKE_OFF= ENABLE_CLI ENABLE_DAEMON ENABLE_GTK ENABLE_QT INSTALL_WEB .endif -OPTIONS_FILE= ${PORT_DBDIR}/${OPTIONS_NAME}/${FLAVOR}-options +EXTRACT_AFTER_ARGS= ${B64 CRC32C FastFloat DEFLATE DHT Fmt MINIUPNPC \ + NATPMP PSL Small UtfCpp UTP WideInteger \ + :L:C|^(.*)|--exclude cmake/Find\1.cmake|} \ + --exclude news/news-[0-3]* \ + --exclude news/news-*beta* \ + ${dht fast_float fmt libb64 libdeflate libevent \ + libnatpmp libpsl libutp miniupnpc rapidjson small \ + utfcpp wide-integer:L:S|^|--exclude third-party/|} \ + --no-same-owner --no-same-permissions -.if ${FLAVOR:Mdocs} -OPTIONS_DEFINE= +.if ${FLAVOR:Mdocs} || ${FLAVOR:Mweb} +NO_ARCH= yes +NO_BUILD= yes .endif -.if ${FLAVOR:Mweb} -OPTIONS_DEFINE= +.if ${FLAVOR:Ndocs} +USERS= ${PORTNAME} +GROUPS= ${PORTNAME} .endif -.if ${FLAVOR:Nweb} && ${FLAVOR:Ndocs} -OPTIONS_DEFINE= NLS TESTS +DESCR= ${PKGDIR}/pkg-descr.${FLAVOR} +PLIST= ${PKGDIR}/pkg-plist.${FLAVOR} + +.if ${FLAVOR:Ndocs:Nweb} +OPTIONS_DEFINE= NLS OPTIONS_DEFAULT= NLS +OPTIONS_FILE= ${PORT_DBDIR}/${OPTIONS_NAME}/${FLAVOR}-options +OPTIONS_SUB= yes +NLS_USES= gettext-runtime +NLS_CMAKE_BOOL= ENABLE_NLS .endif -OPTIONS_SUB= yes - -daemon_DESC= Build daemon -docs_DESC= Install documentation -gtk_DESC= Build GTK+ client -qt_DESC= Build Qt client -TESTS_DESC= Build & run unit tests -utils_DESC= Build utilities (create, edit, remote, show) -cli_DESC= Build command-line client (deprecated) -web_DESC= Install web interface - -NLS_USES= gettext-runtime:lib -NLS_CMAKE_BOOL= ENABLE_NLS - -TESTS_CMAKE_BOOL= ENABLE_TESTS - -UTILS_CMAKE_BOOL= ENABLE_UTILS - -WEB_CMAKE_BOOL= INSTALL_WEB - -.if ${FLAVOR} == docs -pre-install: - @${ECHO_MSG} "Removing outdated release notes" - @${FIND} ${WRKSRC}/news \( -name 'news-[0-3]*' -o -name '*beta*' \) -delete - +.if ${FLAVOR:Mdocs} do-install: - @${MKDIR} ${STAGEDIR}${DOCSDIR} - @cd ${WRKSRC} ; ${CP} AUTHORS ${STAGEDIR}${DOCSDIR} ;\ - ${CP} COPYING ${STAGEDIR}${DOCSDIR} ;\ - ${CP} README.md ${STAGEDIR}${DOCSDIR} - @cd ${WRKSRC}/docs ; ${CP} rpc-spec.md ${STAGEDIR}${DOCSDIR} - @cd ${WRKSRC}/extras ; ${CP} send-email-when-torrent-done.sh ${STAGEDIR}${DOCSDIR} - @${MKDIR} ${STAGEDIR}${DOCSDIR}/news - @cd ${WRKSRC}/news ; ${CP} -R . ${STAGEDIR}${DOCSDIR}/news + (cd ${WRKSRC} && ${COPYTREE_SHARE} news ${STAGEDIR}${DOCSDIR}) + ${INSTALL_DATA} ${AUTHORS COPYING README.md docs/rpc-spec.md \ + extras/send-email-when-torrent-done.sh:L:S|^|${WRKSRC}/|} \ + ${STAGEDIR}${DOCSDIR} .endif -.if ${FLAVOR} == qt -post-install: - ${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/scalable/apps - ${INSTALL_DATA} ${WRKSRC}/qt/icons/transmission.svg \ - ${STAGEDIR}${PREFIX}/share/icons/hicolor/scalable/apps/transmission-qt.svg +.if ${FLAVOR:Mweb} +do-install: + (cd ${WRKSRC}/web && ${COPYTREE_SHARE} public_html ${STAGEDIR}${DATADIR}) .endif -.if ${FLAVOR} == daemon post-install: - ${MKDIR} ${STAGEDIR}${ETCDIR}/home +.if ${FLAVOR:Mdaemon} + ${MKDIR} ${STAGEDIR}${ETCDIR}/home .endif - -.if ${FLAVOR} == web -do-install: - ( cd ${WRKSRC}/web && ${COPYTREE_SHARE} public_html ${STAGEDIR}${DATADIR} ) +.if ${FLAVOR:Mgtk} || ${FLAVOR:Mqt} + ${RM} ${STAGEDIR}${PREFIX}/share/icons/hicolor/scalable/apps/transmission-devel.svg .endif -post-install-TESTS-on: - @${ECHO_MSG} "Running tests..." - @cd ${BUILD_WRKSRC}/tests/libtransmission/ && \ - eval ${BUILD_WRKSRC}/tests/libtransmission/libtransmission-test \ - --gtest_filter="-DhtTest.usesBootstrapFile" \ - #fails in poudriere due to lack of networking, passes otherwise - --gtest_brief=1 \ - .include diff --git a/net-p2p/transmission-components/distinfo b/net-p2p/transmission-components/distinfo index 1debd6dfbbaa..e171f50f9159 100644 --- a/net-p2p/transmission-components/distinfo +++ b/net-p2p/transmission-components/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1717026106 -SHA256 (transmission-4.0.6.tar.xz) = 2a38fe6d8a23991680b691c277a335f8875bdeca2b97c6b26b598bc9c7b0c45f -SIZE (transmission-4.0.6.tar.xz) = 11908296 +TIMESTAMP = 1771590096 +SHA256 (transmission-4.1.1.tar.xz) = e743283ee03a42c4d0b08fed2bd52b554aa6c9f65b4d4d45b795c32d98762a79 +SIZE (transmission-4.1.1.tar.xz) = 11876904 diff --git a/net-p2p/transmission-components/files/patch-CMakeLists.txt b/net-p2p/transmission-components/files/patch-CMakeLists.txt index e520e0207eb3..29c22be3f409 100644 --- a/net-p2p/transmission-components/files/patch-CMakeLists.txt +++ b/net-p2p/transmission-components/files/patch-CMakeLists.txt @@ -1,23 +1,301 @@ ---- CMakeLists.txt.orig 2023-08-23 22:48:58 UTC +--- CMakeLists.txt.orig 2026-02-20 00:30:46 UTC +++ CMakeLists.txt -@@ -796,20 +796,6 @@ if(ENABLE_DAEMON OR ENABLE_GTK OR ENABLE_QT) - tr_install_web(${CMAKE_INSTALL_DATAROOTDIR}/${TR_NAME}) - endif() +@@ -45,15 +45,25 @@ set(EVENT2_MINIMUM 2.1.0) + set(WOLFSSL_MINIMUM 3.4) + set(DEFLATE_MINIMUM 1.7) + set(EVENT2_MINIMUM 2.1.0) ++# fast_float's version file is configured with `COMPATIBILITY SameMajorVersion` ++# The version range currently distributed varies greatly (e.g. Debian Trixie -> 8.0.0, Ubuntu 24.04 -> 3.9.0) ++# set(FAST_FLOAT_MINIMUM 3...8) ++set(FMT_MINIMUM 8.0.1) + set(GIOMM_MINIMUM 2.26.0) + set(GLIBMM_MINIMUM 2.60.0) + set(GTKMM3_MINIMUM 3.24.0) + set(GTKMM4_MINIMUM 4.11.1) + set(OPENSSL_MINIMUM 1.1.0) + set(MBEDTLS_MINIMUM 2.7) +-set(NPM_MINIMUM 10.2.3) # Node.js 20.10 (eslint-plugin-unicorn) +-set(PSL_MINIMUM 0.21.1) ++set(MINIUPNPC_MINIMUM 2.2.1) ++set(NPM_MINIMUM 10.8.2) # Node.js 20.19 (stylelint@17) ++set(PSL_MINIMUM 0.21.0) + set(QT_MINIMUM 5.15) ++set(SIGSLOT_MINIMUM 1.2.3) ++set(SMALL_MINIMUM 0.2.2) ++# utf8cpp v4's version file is configured with `COMPATIBILITY SameMajorVersion` ++# and does not support version range. ++# set(UTF8CPP_MINIMUM 3.1...4) + + option(ENABLE_DAEMON "Build daemon" ON) + tr_auto_option(ENABLE_GTK "Build GTK client" AUTO) +@@ -71,14 +81,21 @@ tr_auto_option(RUN_CLANG_TIDY "Run clang-tidy on the c + option(INSTALL_LIB "Install the library" OFF) + tr_auto_option(ENABLE_DEPRECATED "Allow deprecated API use of upstream packages, e.g. GTK" AUTO) + tr_auto_option(RUN_CLANG_TIDY "Run clang-tidy on the code" AUTO) +-tr_auto_option(USE_SYSTEM_EVENT2 "Use system event2 library" AUTO) +-tr_auto_option(USE_SYSTEM_DEFLATE "Use system deflate library" AUTO) +-tr_auto_option(USE_SYSTEM_DHT "Use system dht library" AUTO) +-tr_auto_option(USE_SYSTEM_MINIUPNPC "Use system miniupnpc library" AUTO) +-tr_auto_option(USE_SYSTEM_NATPMP "Use system natpmp library" AUTO) +-tr_auto_option(USE_SYSTEM_UTP "Use system utp library" AUTO) +-tr_auto_option(USE_SYSTEM_B64 "Use system b64 library" AUTO) +-tr_auto_option(USE_SYSTEM_PSL "Use system psl library" AUTO) ++tr_auto_option(USE_SYSTEM_DEFAULT "Default value for USE_SYSTEM_* options" AUTO) ++tr_auto_option(RUN_CLANG_TIDY "Run clang-tidy on the code" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_EVENT2 "Use system event2 library" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_DEFLATE "Use system deflate library" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_DHT "Use system dht library" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_FAST_FLOAT "Use system fast_float library" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_FMT "Use system fmt library" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_MINIUPNPC "Use system miniupnpc library" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_NATPMP "Use system natpmp library" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_SMALL "Use system small library" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_UTF8CPP "Use system uft8cpp library" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_UTP "Use system utp library" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_WIDE_INTEGER "Use system WideInteger library" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_B64 "Use system b64 library" ${USE_SYSTEM_DEFAULT}) ++tr_auto_option(USE_SYSTEM_PSL "Use system psl library" ${USE_SYSTEM_DEFAULT}) + tr_list_option(USE_GTK_VERSION "Use specific GTK version" AUTO 3 4) + tr_list_option(USE_QT_VERSION "Use specific Qt version" AUTO 5 6) + tr_list_option(WITH_CRYPTO "Use specified crypto library" AUTO ccrypto mbedtls openssl wolfssl) +@@ -239,26 +256,13 @@ set(SOURCE_ICONS_DIR "${PROJECT_SOURCE_DIR}/icons") + + set(SOURCE_ICONS_DIR "${PROJECT_SOURCE_DIR}/icons") + +-find_package(FastFloat) +-find_package(Fmt) + find_package(RapidJSON) +-find_package(Small) +-find_package(UtfCpp) +-find_package(WideInteger) + + find_package(Threads) + find_package(PkgConfig QUIET) + + find_package(CURL ${CURL_MINIMUM} REQUIRED) --if(INSTALL_DOC) -- install( -- FILES -- AUTHORS -- COPYING -- README.md -- docs/rpc-spec.md -- extras/send-email-when-torrent-done.sh -- DESTINATION ${CMAKE_INSTALL_DOCDIR}) -- install( -- DIRECTORY news -- DESTINATION ${CMAKE_INSTALL_DOCDIR}) +-if(ENABLE_DEPRECATED STREQUAL "AUTO") +- if(DEFINED ENV{CI}) +- set(ENABLE_DEPRECATED OFF) +- else() +- set(ENABLE_DEPRECATED ON) +- endif() -endif() - - if(MSVC AND ENABLE_DAEMON AND ENABLE_QT AND ENABLE_UTILS AND WITH_CRYPTO STREQUAL "openssl" AND INSTALL_WEB) - add_subdirectory(dist/msi) + set(CRYPTO_PKG "") + if(WITH_CRYPTO STREQUAL "AUTO" OR WITH_CRYPTO STREQUAL "ccrypto") + tr_get_required_flag(WITH_CRYPTO CCRYPTO_IS_REQUIRED) +@@ -369,7 +373,7 @@ if(GTK_FOUND) + INTERFACE + ${GTK${GTK_VERSION}_CFLAGS_OTHER}) + +- target_include_directories(transmission::gtk_impl SYSTEM ++ target_include_directories(transmission::gtk_impl + INTERFACE + ${GTK${GTK_VERSION}_INCLUDE_DIRS}) + +@@ -408,6 +412,9 @@ if(ENABLE_QT) + Network + Svg + LinguistTools) ++ if(ENABLE_TESTS) ++ list(APPEND QT_REQUIRED_MODULES Test) ++ endif() + set(QT_OPTIONAL_MODULES + DBus + AxContainer +@@ -428,7 +435,7 @@ if(ENABLE_QT) + foreach(M ${QT_REQUIRED_MODULES}) + find_package(Qt${Qt_VERSION_MAJOR}${M} ${QT_MINIMUM} QUIET) + if(Qt${Qt_VERSION_MAJOR}${M}_FOUND) +- if(NOT M STREQUAL "LinguistTools") ++ if(NOT M STREQUAL "LinguistTools" AND NOT M STREQUAL "Test") + list(APPEND QT_TARGETS Qt${Qt_VERSION_MAJOR}::${M}) + endif() + else() +@@ -493,19 +500,24 @@ endif() + tr_fixup_auto_option(ENABLE_MAC MAC_FOUND MAC_IS_REQUIRED) + endif() + ++# Don't build libdeflate as subdirectory as its CMakeLists.txt ++# messes with global CMAKE_* variables and global compiler options + if(WIN32 AND NOT MINGW) + set(DEFLATE_LIB_NAME deflatestatic) + else() + set(DEFLATE_LIB_NAME deflate) + endif() +-tr_add_external_auto_library(DEFLATE libdeflate ${DEFLATE_LIB_NAME} +- TARGET deflate::deflate ++tr_add_external_auto_library(DEFLATE libdeflate ++ LIBNAME ${DEFLATE_LIB_NAME} ++ TARGET libdeflate::libdeflate + CMAKE_ARGS + -DLIBDEFLATE_BUILD_SHARED_LIB=OFF + -DLIBDEFLATE_BUILD_GZIP=OFF) + +-tr_add_external_auto_library(EVENT2 libevent event +- TARGET libevent::event ++tr_add_external_auto_library(EVENT2 Libevent ++ SUBPROJECT ++ SOURCE_DIR libevent ++ COMPONENTS core extra + CMAKE_ARGS + -DEVENT__DISABLE_OPENSSL:BOOL=ON + -DEVENT__DISABLE_BENCHMARK:BOOL=ON +@@ -513,8 +525,14 @@ tr_add_external_auto_library(EVENT2 libevent event + -DEVENT__DISABLE_REGRESS:BOOL=ON + -DEVENT__DISABLE_SAMPLES:BOOL=ON + -DEVENT__LIBRARY_TYPE:STRING=STATIC) ++# Workaround, perm fix: https://github.com/libevent/libevent/pull/1791 ++if(NOT TARGET libevent::core) ++ add_library(libevent::core ALIAS event_core) ++ add_library(libevent::extra ALIAS event_extra) ++endif() + +-tr_add_external_auto_library(NATPMP libnatpmp natpmp ++tr_add_external_auto_library(NATPMP libnatpmp ++ LIBNAME natpmp + TARGET natpmp::natpmp + CMAKE_ARGS + -DBUILD_SHARED_LIBS=OFF) +@@ -530,14 +548,16 @@ endif() + else() + set(TR_MINIUPNPC_LIBNAME miniupnpc) endif() +-tr_add_external_auto_library(MINIUPNPC miniupnp/miniupnpc ${TR_MINIUPNPC_LIBNAME} +- TARGET miniupnpc::libminiupnpc ++tr_add_external_auto_library(MINIUPNPC miniupnpc ++ LIBNAME ${TR_MINIUPNPC_LIBNAME} ++ SOURCE_DIR miniupnp/miniupnpc ++ TARGET miniupnpc::miniupnpc + CMAKE_ARGS + -DUPNPC_BUILD_STATIC=ON + -DUPNPC_BUILD_SHARED=OFF + -DUPNPC_BUILD_TESTS=OFF) + if(NOT USE_SYSTEM_MINIUPNPC) +- target_compile_definitions(miniupnpc::libminiupnpc ++ target_compile_definitions(miniupnpc::miniupnpc + INTERFACE + MINIUPNP_STATICLIB) + endif() +@@ -546,26 +566,90 @@ add_subdirectory(${TR_THIRD_PARTY_SOURCE_DIR}/wildmat) + add_subdirectory(${TR_THIRD_PARTY_SOURCE_DIR}/madler-crcany) + add_subdirectory(${TR_THIRD_PARTY_SOURCE_DIR}/wildmat) + +-tr_add_external_auto_library(DHT dht dht ++tr_add_external_auto_library(DHT dht ++ LIBNAME dht + TARGET dht::dht) + +-tr_add_external_auto_library(PSL libpsl psl ++tr_add_external_auto_library(PSL libpsl ++ LIBNAME psl + TARGET psl::psl) + + if(ENABLE_UTP) +- tr_add_external_auto_library(UTP libutp utp ++ tr_add_external_auto_library(UTP libutp + SUBPROJECT +- TARGET libutp::libutp + CMAKE_ARGS + -DLIBUTP_SHARED:BOOL=OFF) + endif() + +-tr_add_external_auto_library(B64 libb64 b64 ++tr_add_external_auto_library(B64 libb64 + SUBPROJECT +- TARGET libb64::libb64 + CMAKE_ARGS + -DLIBB64_SHARED:BOOL=OFF) + ++tr_add_external_auto_library(FAST_FLOAT FastFloat ++ SUBPROJECT ++ SOURCE_DIR fast_float ++ CMAKE_ARGS ++ -DFASTFLOAT_INSTALL=OFF ++ -DFASTFLOAT_TEST=OFF ++ -DFASTFLOAT_SANITIZE=OFF ++ -DFASTFLOAT_CXX_STANDARD=${CMAKE_CXX_STANDARD}) ++ ++tr_add_external_auto_library(FMT fmt ++ SUBPROJECT ++ CMAKE_ARGS ++ -DFMT_INSTALL=OFF ++ -DFMT_SYSTEM_HEADERS=ON) ++if(NOT TARGET transmission::fmt-header-only) ++ add_library(transmission::fmt-header-only INTERFACE IMPORTED) ++ target_link_libraries(transmission::fmt-header-only ++ INTERFACE ++ fmt::fmt-header-only) ++ target_compile_definitions(transmission::fmt-header-only ++ INTERFACE ++ FMT_USE_EXCEPTIONS=0 # {fmt} >= 11.2.0 ++ FMT_EXCEPTIONS=0 # {fmt} < 11.2.0 ++ ) ++endif() ++ ++tr_add_external_auto_library(SMALL small ++ SUBPROJECT ++ CMAKE_ARGS ++ -DSMALL_BUILD_WITH_EXCEPTIONS=OFF) ++add_library(transmission::small INTERFACE IMPORTED) ++target_link_libraries(transmission::small ++ INTERFACE ++ small::small) ++target_compile_definitions(transmission::small ++ INTERFACE ++ SMALL_DISABLE_EXCEPTIONS=1) ++ ++tr_add_external_auto_library(UTF8CPP utf8cpp ++ SUBPROJECT ++ SOURCE_DIR utfcpp) ++if (NOT TARGET utf8::cpp) ++ add_library(utf8::cpp ALIAS utf8cpp) ++endif() ++ ++tr_add_external_auto_library(WIDE_INTEGER WideInteger ++ SUBPROJECT ++ SOURCE_DIR wide-integer) ++add_library(transmission::WideInteger INTERFACE IMPORTED) ++target_link_libraries(transmission::WideInteger ++ INTERFACE ++ WideInteger::WideInteger) ++include(CheckCXXSourceCompiles) ++check_cxx_source_compiles( ++"int main() ++{ ++ unsigned __int128 u; ++ signed __int128 i; ++ return 0; ++}" TR_HAVE_INT128) ++target_compile_definitions(transmission::WideInteger ++ INTERFACE ++ $<$:WIDE_INTEGER_HAS_LIMB_TYPE_UINT64>) ++ + set(TR_WEB_ASSETS ${PROJECT_SOURCE_DIR}/web/public_html) + if(REBUILD_WEB) + tr_get_required_flag(REBUILD_WEB NPM_IS_REQUIRED) +@@ -804,11 +888,6 @@ endif() + endif() + endif() + +-if(ENABLE_TESTS) +- enable_testing() +- add_subdirectory(tests) +-endif() +- + function(tr_install_web DST_DIR) + if(INSTALL_WEB) + install( +@@ -836,6 +915,11 @@ endforeach() + add_subdirectory(${P}) + endif() + endforeach() ++ ++if(ENABLE_TESTS) ++ enable_testing() ++ add_subdirectory(tests) ++endif() + + if(ENABLE_DAEMON OR ENABLE_GTK OR ENABLE_QT) + tr_install_web(${CMAKE_INSTALL_DATAROOTDIR}/${TR_NAME}) diff --git a/net-p2p/transmission-components/files/patch-cmake_FindFastFloat.cmake b/net-p2p/transmission-components/files/patch-cmake_FindFastFloat.cmake deleted file mode 100644 index 95e27a51ce23..000000000000 --- a/net-p2p/transmission-components/files/patch-cmake_FindFastFloat.cmake +++ /dev/null @@ -1,8 +0,0 @@ ---- cmake/FindFastFloat.cmake.orig 2024-02-22 15:48:36 UTC -+++ cmake/FindFastFloat.cmake -@@ -2,4 +2,4 @@ target_include_directories(FastFloat::fast_float - - target_include_directories(FastFloat::fast_float - INTERFACE -- ${TR_THIRD_PARTY_SOURCE_DIR}/fast_float/include) -+ ${CMAKE_INSTALL_PREFIX}/include) diff --git a/net-p2p/transmission-components/files/patch-cmake_FindFmt.cmake b/net-p2p/transmission-components/files/patch-cmake_FindFmt.cmake deleted file mode 100644 index c1b115e1dc75..000000000000 --- a/net-p2p/transmission-components/files/patch-cmake_FindFmt.cmake +++ /dev/null @@ -1,26 +0,0 @@ ---- cmake/FindFmt.cmake.orig 2025-10-15 08:40:38 UTC -+++ cmake/FindFmt.cmake -@@ -1,10 +1,21 @@ add_library(fmt::fmt-header-only INTERFACE IMPORTED) - add_library(fmt::fmt-header-only INTERFACE IMPORTED) - -+set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE "${CMAKE_INSTALL_PREFIX}/include") -+ - target_include_directories(fmt::fmt-header-only - INTERFACE -- ${CMAKE_CURRENT_LIST_DIR}/../third-party/fmt/include) -+ ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE}) - -+file(READ "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE}/fmt/base.h" _FMT_BASE_H) -+if(_FMT_BASE_H MATCHES "FMT_VERSION ([0-9]+)([0-9][0-9])([0-9][0-9])") -+ # Use math to skip leading zeros if any. -+ math(EXPR _FMT_VERSION_MAJOR ${CMAKE_MATCH_1}) -+ math(EXPR _FMT_VERSION_MINOR ${CMAKE_MATCH_2}) -+ math(EXPR _FMT_VERSION_PATCH ${CMAKE_MATCH_3}) -+ set(${CMAKE_FIND_PACKAGE_NAME}_VERSION "${_FMT_VERSION_MAJOR}.${_FMT_VERSION_MINOR}.${_FMT_VERSION_PATCH}") -+endif() -+ - target_compile_definitions(fmt::fmt-header-only - INTERFACE -- FMT_EXCEPTIONS=0 -+ $,FMT_USE_EXCEPTIONS,FMT_EXCEPTIONS>=0 - FMT_HEADER_ONLY=1) diff --git a/net-p2p/transmission-components/files/patch-cmake_FindLibevent.cmake b/net-p2p/transmission-components/files/patch-cmake_FindLibevent.cmake new file mode 100644 index 000000000000..7ca6f8d04908 --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_FindLibevent.cmake @@ -0,0 +1,92 @@ +--- cmake/FindLibevent.cmake.orig 2026-02-21 07:48:47 UTC ++++ cmake/FindLibevent.cmake +@@ -0,0 +1,89 @@ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(LIBEVENT_STATIC_LINK TRUE) ++endif() ++find_package(${CMAKE_FIND_PACKAGE_NAME} QUIET NO_MODULE) ++ ++include(FindPackageHandleStandardArgs) ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} CONFIG_MODE HANDLE_COMPONENTS) ++ return() ++endif() ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ if(WIN32) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ else() ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ endif() ++endif() ++ ++if(UNIX) ++ find_package(PkgConfig QUIET) ++endif() ++ ++foreach(_comp IN LISTS ${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS) ++ if(UNIX) ++ pkg_check_modules(_EVENT2_${_comp} QUIET libevent-${_comp}) ++ ++ if(_EVENT2_${_comp}_VERSION AND NOT ${CMAKE_FIND_PACKAGE_NAME}_VERSION) ++ set(${CMAKE_FIND_PACKAGE_NAME}_VERSION ${_EVENT2_${_comp}_VERSION}) ++ endif() ++ endif() ++ ++ # All components share the same include directory ++ find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ NAMES event2/event.h ++ HINTS ${_EVENT2_${_comp}_INCLUDEDIR}) ++ ++ find_library(${CMAKE_FIND_PACKAGE_NAME}_${_comp}_LIBRARY ++ NAMES "event_${_comp}" ++ HINTS ${_EVENT2_${_comp}_LIBDIR}) ++ ++ mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_${_comp}_LIBRARY) ++ ++ set(${CMAKE_FIND_PACKAGE_NAME}_${_comp}_FOUND FALSE) ++ if(${CMAKE_FIND_PACKAGE_NAME}_${_comp}_LIBRARY) ++ set(${CMAKE_FIND_PACKAGE_NAME}_${_comp}_FOUND TRUE) ++ endif() ++endforeach() ++ ++if(NOT ${CMAKE_FIND_PACKAGE_NAME}_VERSION AND ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) ++ file(STRINGS "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}/event2/event-config.h" _EVENT_VERSION_STR ++ REGEX "^#define[\t ]+EVENT__VERSION[\t ]+\"[^\"]+\"") ++ if(_EVENT_VERSION_STR MATCHES "\"([^\"]+)\"") ++ set(${CMAKE_FIND_PACKAGE_NAME}_VERSION "${CMAKE_MATCH_1}") ++ endif() ++endif() ++ ++find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} ++ HANDLE_COMPONENTS ++ REQUIRED_VARS ++ ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ VERSION_VAR ${CMAKE_FIND_PACKAGE_NAME}_VERSION) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ ++ set(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES) ++ foreach(_comp IN LISTS ${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS) ++ if(NOT TARGET libevent::${_comp}) ++ add_library(libevent::${_comp} INTERFACE IMPORTED) ++ target_include_directories(libevent::${_comp} ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ target_link_libraries(libevent::${_comp} ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_${_comp}_LIBRARY}) ++ endif() ++ ++ list(APPEND ${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES libevent::${_comp}) ++ endforeach() ++endif() ++ ++mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES ${${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) ++ unset(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES) ++endif() diff --git a/net-p2p/transmission-components/files/patch-cmake_FindRapidJSON.cmake b/net-p2p/transmission-components/files/patch-cmake_FindRapidJSON.cmake new file mode 100644 index 000000000000..53bc1d24d99b --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_FindRapidJSON.cmake @@ -0,0 +1,47 @@ +--- cmake/FindRapidJSON.cmake.orig 2026-01-26 23:59:25 UTC ++++ cmake/FindRapidJSON.cmake +@@ -1,9 +1,37 @@ +-add_library(RapidJSON INTERFACE IMPORTED) ++find_package(${CMAKE_FIND_PACKAGE_NAME} QUIET NO_MODULE) + +-target_include_directories(RapidJSON +- INTERFACE +- ${TR_THIRD_PARTY_SOURCE_DIR}/rapidjson/include) ++include(FindPackageHandleStandardArgs) ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} CONFIG_MODE) ++ return() ++endif() + +-target_compile_definitions(RapidJSON +- INTERFACE +- RAPIDJSON_HAS_STDSTRING=1) ++if(UNIX) ++ find_package(PkgConfig QUIET) ++ pkg_check_modules(_RAPIDJSON QUIET RapidJSON) ++endif() ++ ++find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ NAMES rapidjson/rapidjson.h ++ HINTS ${_RAPIDJSON_INCLUDEDIR}) ++ ++if(_RAPIDJSON_VERSION) ++ set(${CMAKE_FIND_PACKAGE_NAME}_VERSION ${_RAPIDJSON_VERSION}) ++endif() ++ ++find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} ++ REQUIRED_VARS ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ VERSION_VAR ${CMAKE_FIND_PACKAGE_NAME}_VERSION) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ ++ if(NOT TARGET RapidJSON) ++ add_library(RapidJSON INTERFACE IMPORTED) ++ target_include_directories(RapidJSON ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ endif() ++endif() ++ ++mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) diff --git a/net-p2p/transmission-components/files/patch-cmake_FindUtfCpp.cmake b/net-p2p/transmission-components/files/patch-cmake_FindUtfCpp.cmake deleted file mode 100644 index 49ad66cf5725..000000000000 --- a/net-p2p/transmission-components/files/patch-cmake_FindUtfCpp.cmake +++ /dev/null @@ -1,8 +0,0 @@ ---- cmake/FindUtfCpp.cmake.orig 2024-02-22 15:49:05 UTC -+++ cmake/FindUtfCpp.cmake -@@ -2,4 +2,4 @@ target_include_directories(utf8::cpp - - target_include_directories(utf8::cpp - INTERFACE -- ${CMAKE_CURRENT_LIST_DIR}/../third-party/utfcpp/source) -+ ${CMAKE_INSTALL_PREFIX}/include/utf8cpp) diff --git a/net-p2p/transmission-components/files/patch-cmake_Finddht.cmake b/net-p2p/transmission-components/files/patch-cmake_Finddht.cmake new file mode 100644 index 000000000000..7aa0b19bd904 --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_Finddht.cmake @@ -0,0 +1,42 @@ +--- cmake/Finddht.cmake.orig 2026-01-31 08:51:53 UTC ++++ cmake/Finddht.cmake +@@ -0,0 +1,39 @@ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ if(WIN32) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ else() ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ endif() ++endif() ++ ++if(UNIX) ++ find_package(PkgConfig QUIET) ++ pkg_check_modules(_DHT QUIET libdht) ++endif() ++ ++find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ NAMES dht/dht.h ++ HINTS ${_DHT_INCLUDEDIR}) ++find_library(${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ NAMES dht ++ HINTS ${_DHT_LIBDIR}) ++ ++include(FindPackageHandleStandardArgs) ++ ++find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} ++ REQUIRED_VARS ++ ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ set(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES ${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY}) ++endif() ++ ++mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES ${${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) ++ unset(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES) ++endif() diff --git a/net-p2p/transmission-components/files/patch-cmake_Findfmt.cmake b/net-p2p/transmission-components/files/patch-cmake_Findfmt.cmake new file mode 100644 index 000000000000..377f0c0c2f5a --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_Findfmt.cmake @@ -0,0 +1,74 @@ +--- cmake/Findfmt.cmake.orig 2026-01-31 08:51:45 UTC ++++ cmake/Findfmt.cmake +@@ -0,0 +1,71 @@ ++find_package(${CMAKE_FIND_PACKAGE_NAME} QUIET NO_MODULE) ++ ++include(FindPackageHandleStandardArgs) ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} CONFIG_MODE) ++ return() ++endif() ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ if(WIN32) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ else() ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ endif() ++endif() ++ ++if(UNIX) ++ find_package(PkgConfig QUIET) ++ pkg_check_modules(_FMT QUIET fmt) ++endif() ++ ++find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ NAMES fmt/core.h ++ HINTS ${_FMT_INCLUDEDIR}) ++ ++if(_FMT_VERSION) ++ set(${CMAKE_FIND_PACKAGE_NAME}_VERSION ${_FMT_VERSION}) ++elseif(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) ++ set(_FMT_VERSION_H_PATH "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}/fmt/base.h") ++ if(NOT EXISTS "${_FMT_VERSION_H_PATH}") ++ # fmt < 11 ++ set(_FMT_VERSION_H_PATH "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}/fmt/core.h") ++ endif() ++ file(READ "${_FMT_VERSION_H_PATH}" _FMT_VERSION_H) ++ if(_FMT_VERSION_H MATCHES "FMT_VERSION ([0-9]+)([0-9][0-9])([0-9][0-9])") ++ # Use math to skip leading zeros if any. ++ math(EXPR _FMT_VERSION_MAJOR ${CMAKE_MATCH_1}) ++ math(EXPR _FMT_VERSION_MINOR ${CMAKE_MATCH_2}) ++ math(EXPR _FMT_VERSION_PATCH ${CMAKE_MATCH_3}) ++ set(${CMAKE_FIND_PACKAGE_NAME}_VERSION "${_FMT_VERSION_MAJOR}.${_FMT_VERSION_MINOR}.${_FMT_VERSION_PATCH}") ++ endif() ++endif() ++ ++find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} ++ REQUIRED_VARS ++ ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ VERSION_VAR ${CMAKE_FIND_PACKAGE_NAME}_VERSION) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ ++ if(NOT TARGET fmt::fmt-header-only) ++ add_library(fmt::fmt-header-only INTERFACE IMPORTED) ++ target_compile_definitions(fmt::fmt-header-only INTERFACE FMT_HEADER_ONLY=1) ++ target_compile_features(fmt::fmt-header-only INTERFACE cxx_std_11) ++ target_include_directories(fmt::fmt-header-only ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ if(MSVC) ++ target_compile_options(fmt::fmt-header-only INTERFACE $<$:/utf-8>) ++ endif() ++ endif() ++endif() ++ ++mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES ${${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) ++ unset(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES) ++endif() diff --git a/net-p2p/transmission-components/files/patch-cmake_Findlibb64.cmake b/net-p2p/transmission-components/files/patch-cmake_Findlibb64.cmake new file mode 100644 index 000000000000..acb0a9988245 --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_Findlibb64.cmake @@ -0,0 +1,54 @@ +--- cmake/Findlibb64.cmake.orig 2026-01-31 08:51:40 UTC ++++ cmake/Findlibb64.cmake +@@ -0,0 +1,51 @@ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ if(WIN32) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ else() ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ endif() ++endif() ++ ++if(UNIX) ++ find_package(PkgConfig QUIET) ++ pkg_check_modules(_B64 QUIET libb64) ++endif() ++ ++find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ NAMES ++ b64/cdecode.h ++ b64/cencode.h ++ HINTS ${_B64_INCLUDEDIR}) ++find_library(${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ NAMES b64 ++ HINTS ${_B64_LIBDIR}) ++ ++include(FindPackageHandleStandardArgs) ++ ++find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} ++ REQUIRED_VARS ++ ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ set(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES ${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY}) ++ ++ if(NOT TARGET libb64::libb64) ++ add_library(libb64::libb64 INTERFACE IMPORTED) ++ target_include_directories(libb64::libb64 ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ target_link_libraries(libb64::libb64 ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY}) ++ endif() ++endif() ++ ++mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES ${${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) ++ unset(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES) ++endif() diff --git a/net-p2p/transmission-components/files/patch-cmake_Findlibdeflate.cmake b/net-p2p/transmission-components/files/patch-cmake_Findlibdeflate.cmake new file mode 100644 index 000000000000..dd6cd75a0878 --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_Findlibdeflate.cmake @@ -0,0 +1,76 @@ +--- cmake/Findlibdeflate.cmake.orig 2026-01-31 09:27:51 UTC ++++ cmake/Findlibdeflate.cmake +@@ -0,0 +1,73 @@ ++find_package(${CMAKE_FIND_PACKAGE_NAME} QUIET NO_MODULE) ++ ++include(FindPackageHandleStandardArgs) ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ if(TARGET libdeflate::libdeflate_static AND (${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB OR NOT TARGET libdeflate::libdeflate_shared)) ++ add_library(libdeflate::libdeflate ALIAS libdeflate::libdeflate_static) ++ else() ++ add_library(libdeflate::libdeflate ALIAS libdeflate::libdeflate_shared) ++ endif() ++ ++ find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} CONFIG_MODE) ++ return() ++endif() ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ if(WIN32) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ else() ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ endif() ++endif() ++ ++if(UNIX) ++ find_package(PkgConfig QUIET) ++ # pkg-config support added in libdeflate v1.9 ++ pkg_check_modules(_DEFLATE QUIET libdeflate) ++endif() ++ ++find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ NAMES libdeflate.h ++ HINTS ${_DEFLATE_INCLUDEDIR}) ++find_library(${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ NAMES deflate ++ HINTS ${_DEFLATE_LIBDIR}) ++ ++if(_DEFLATE_VERSION) ++ set(${CMAKE_FIND_PACKAGE_NAME}_VERSION ${_DEFLATE_VERSION}) ++elseif(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) ++ file(STRINGS "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}/libdeflate.h" ${CMAKE_FIND_PACKAGE_NAME}_VERSION_STR ++ REGEX "^#define[\t ]+LIBDEFLATE_VERSION_STRING[\t ]+\"[^\"]+\"") ++ if(${CMAKE_FIND_PACKAGE_NAME}_VERSION_STR MATCHES "\"([^\"]+)\"") ++ set(${CMAKE_FIND_PACKAGE_NAME}_VERSION "${CMAKE_MATCH_1}") ++ endif() ++endif() ++ ++find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} ++ REQUIRED_VARS ++ ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ VERSION_VAR ${CMAKE_FIND_PACKAGE_NAME}_VERSION) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ set(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES ${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY}) ++ ++ if(NOT TARGET libdeflate::libdeflate) ++ add_library(libdeflate::libdeflate INTERFACE IMPORTED) ++ target_include_directories(libdeflate::libdeflate ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ target_link_libraries(libdeflate::libdeflate ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY}) ++ endif() ++endif() ++ ++mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES ${${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) ++ unset(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES) ++endif() diff --git a/net-p2p/transmission-components/files/patch-cmake_Findlibnatpmp.cmake b/net-p2p/transmission-components/files/patch-cmake_Findlibnatpmp.cmake new file mode 100644 index 000000000000..ea6952baa5ce --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_Findlibnatpmp.cmake @@ -0,0 +1,42 @@ +--- cmake/Findlibnatpmp.cmake.orig 2026-01-31 09:27:45 UTC ++++ cmake/Findlibnatpmp.cmake +@@ -0,0 +1,39 @@ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ if(WIN32) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ else() ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ endif() ++endif() ++ ++if(UNIX) ++ find_package(PkgConfig QUIET) ++ pkg_check_modules(_NATPMP QUIET libnatpmp) ++endif() ++ ++find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ NAMES natpmp.h ++ HINTS ${_NATPMP_INCLUDEDIR}) ++find_library(${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ NAMES natpmp ++ HINTS ${_NATPMP_LIBDIR}) ++ ++include(FindPackageHandleStandardArgs) ++ ++find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} ++ REQUIRED_VARS ++ ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ set(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES ${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY}) ++endif() ++ ++mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES ${${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) ++ unset(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES) ++endif() diff --git a/net-p2p/transmission-components/files/patch-cmake_Findlibpsl.cmake b/net-p2p/transmission-components/files/patch-cmake_Findlibpsl.cmake new file mode 100644 index 000000000000..bca24aa23394 --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_Findlibpsl.cmake @@ -0,0 +1,52 @@ +--- cmake/Findlibpsl.cmake.orig 2026-01-31 08:51:25 UTC ++++ cmake/Findlibpsl.cmake +@@ -0,0 +1,49 @@ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ if(WIN32) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ else() ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ endif() ++endif() ++ ++if(UNIX) ++ find_package(PkgConfig QUIET) ++ pkg_check_modules(_PSL QUIET libpsl) ++endif() ++ ++find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ NAMES libpsl.h ++ HINTS ${_PSL_INCLUDEDIR}) ++find_library(${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ NAMES psl ++ HINTS ${_PSL_LIBDIR}) ++ ++if(_PSL_VERSION) ++ set(${CMAKE_FIND_PACKAGE_NAME}_VERSION ${_PSL_VERSION}) ++elseif(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) ++ file(STRINGS "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}/libpsl.h" _PSL_VERSION_STR ++ REGEX "^#define[\t ]+PSL_VERSION[\t ]+\"[^\"]+\"") ++ if(_PSL_VERSION_STR MATCHES "\"([^\"]+)\"") ++ set(${CMAKE_FIND_PACKAGE_NAME}_VERSION "${CMAKE_MATCH_1}") ++ endif() ++endif() ++ ++include(FindPackageHandleStandardArgs) ++find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} ++ REQUIRED_VARS ++ ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ VERSION_VAR ${CMAKE_FIND_PACKAGE_NAME}_VERSION) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ set(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES ${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY}) ++endif() ++ ++mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES ${${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) ++ unset(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES) ++endif() diff --git a/net-p2p/transmission-components/files/patch-cmake_Findlibutp.cmake b/net-p2p/transmission-components/files/patch-cmake_Findlibutp.cmake new file mode 100644 index 000000000000..989853c3b74d --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_Findlibutp.cmake @@ -0,0 +1,97 @@ +--- cmake/Findlibutp.cmake.orig 2026-01-31 08:51:20 UTC ++++ cmake/Findlibutp.cmake +@@ -0,0 +1,94 @@ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ if(WIN32) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ else() ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ endif() ++endif() ++ ++if(UNIX) ++ find_package(PkgConfig QUIET) ++ pkg_check_modules(_UTP QUIET libutp) ++endif() ++ ++find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ NAMES libutp/utp.h ++ HINTS ${_UTP_INCLUDEDIR}) ++find_library(${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ NAMES utp ++ HINTS ${_UTP_LIBDIR}) ++ ++include(CheckCXXSymbolExists) ++ ++set(_UTP_FUNCS ++ utp_check_timeouts ++ utp_close ++ utp_connect ++ utp_context_get_userdata ++ utp_context_set_option ++ utp_context_set_userdata ++ utp_create_socket ++ utp_destroy ++ utp_getpeername ++ utp_get_userdata ++ utp_init ++ utp_issue_deferred_acks ++ utp_process_udp ++ utp_read_drained ++ utp_set_callback ++ utp_set_userdata ++ utp_write ++ utp_writev) ++ ++set(_UTP_OLD_CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES}") ++set(_UTP_OLD_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}") ++set(_UTP_OLD_CMAKE_REQUIRED_QUIET "${CMAKE_REQUIRED_QUIET}") ++ ++set(CMAKE_REQUIRED_INCLUDES "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}") ++set(CMAKE_REQUIRED_LIBRARIES "${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY}") ++set(CMAKE_REQUIRED_QUIET ON) ++ ++foreach(_UTP_FUNC IN LISTS _UTP_FUNCS) ++ string(MAKE_C_IDENTIFIER "HAVE_${_UTP_FUNC}" _UTP_FUNC_VAR) ++ string(TOUPPER "${_UTP_FUNC_VAR}" _UTP_FUNC_VAR) ++ check_cxx_symbol_exists(${_UTP_FUNC} libutp/utp.h ${_UTP_FUNC_VAR}) ++ if(NOT ${_UTP_FUNC_VAR}) ++ unset(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR CACHE) ++ unset(${CMAKE_FIND_PACKAGE_NAME}_LIBRARY CACHE) ++ break() ++ endif() ++endforeach() ++ ++set(CMAKE_REQUIRED_INCLUDES "${_UTP_OLD_CMAKE_REQUIRED_INCLUDES}") ++set(CMAKE_REQUIRED_LIBRARIES "${_UTP_OLD_CMAKE_REQUIRED_LIBRARIES}") ++set(CMAKE_REQUIRED_QUIET "${_UTP_OLD_CMAKE_REQUIRED_QUIET}") ++ ++include(FindPackageHandleStandardArgs) ++ ++find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} ++ REQUIRED_VARS ++ ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ set(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES ${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY}) ++ ++ if(NOT TARGET libutp::libutp) ++ add_library(libutp::libutp INTERFACE IMPORTED) ++ target_include_directories(libutp::libutp ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ target_link_libraries(libutp::libutp ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY}) ++ endif() ++endif() ++ ++mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES ${${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) ++ unset(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES) ++endif() diff --git a/net-p2p/transmission-components/files/patch-cmake_Findminiupnpc.cmake b/net-p2p/transmission-components/files/patch-cmake_Findminiupnpc.cmake new file mode 100644 index 000000000000..59f4cad07c60 --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_Findminiupnpc.cmake @@ -0,0 +1,71 @@ +--- cmake/Findminiupnpc.cmake.orig 2026-01-31 08:51:14 UTC ++++ cmake/Findminiupnpc.cmake +@@ -0,0 +1,68 @@ ++find_package(${CMAKE_FIND_PACKAGE_NAME} QUIET NO_MODULE) ++ ++include(FindPackageHandleStandardArgs) ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} CONFIG_MODE) ++ return() ++endif() ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ if(WIN32) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a .lib ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ else() ++ set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES}) ++ endif() ++endif() ++ ++if(UNIX) ++ find_package(PkgConfig QUIET) ++ pkg_check_modules(_MINIUPNPC QUIET libminiupnpc) ++endif() ++ ++find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ NAMES miniupnpc/miniupnpc.h ++ HINTS ${_MINIUPNPC_INCLUDEDIR}) ++find_library(${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ NAMES ++ miniupnpc ++ libminiupnpc ++ HINTS ${_MINIUPNPC_LIBDIR}) ++ ++if(_MINIUPNPC_VERSION) ++ set(${CMAKE_FIND_PACKAGE_NAME}_VERSION ${_MINIUPNPC_VERSION}) ++elseif(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) ++ file(STRINGS "${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}/miniupnpc/miniupnpc.h" _MINIUPNPC_VERSION_STR ++ REGEX "^#define[\t ]+MINIUPNPC_VERSION[\t ]+\"[^\"]+\"") ++ if(_MINIUPNPC_VERSION_STR MATCHES "\"([^\"]+)\"") ++ set(${CMAKE_FIND_PACKAGE_NAME}_VERSION "${CMAKE_MATCH_1}") ++ endif() ++endif() ++ ++find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} ++ REQUIRED_VARS ++ ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY ++ ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ VERSION_VAR ${CMAKE_FIND_PACKAGE_NAME}_VERSION) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ set(${CMAKE_FIND_PACKAGE_NAME}_LIBRARIES ${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY}) ++ ++ if(NOT TARGET miniupnpc::miniupnpc) ++ add_library(miniupnpc::miniupnpc INTERFACE IMPORTED) ++ target_include_directories(miniupnpc::miniupnpc ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ target_link_libraries(miniupnpc::miniupnpc ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_LIBRARY}) ++ endif() ++endif() ++ ++mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ${CMAKE_FIND_PACKAGE_NAME}_LIBRARY) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_PREFER_STATIC_LIB) ++ set(CMAKE_FIND_LIBRARY_SUFFIXES ${${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES}) ++ unset(${CMAKE_FIND_PACKAGE_NAME}_ORIG_CMAKE_FIND_LIBRARY_SUFFIXES) ++endif() diff --git a/net-p2p/transmission-components/files/patch-cmake_Findutf8cpp.cmake b/net-p2p/transmission-components/files/patch-cmake_Findutf8cpp.cmake new file mode 100644 index 000000000000..3d44c057f725 --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_Findutf8cpp.cmake @@ -0,0 +1,37 @@ +--- cmake/Findutf8cpp.cmake.orig 2026-01-31 08:51:06 UTC ++++ cmake/Findutf8cpp.cmake +@@ -0,0 +1,34 @@ ++find_package(${CMAKE_FIND_PACKAGE_NAME} QUIET NO_MODULE) ++ ++include(FindPackageHandleStandardArgs) ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ if(${CMAKE_FIND_PACKAGE_NAME}_VERSION VERSION_LESS 4.0.0) ++ # Before 4.0.0, some compiler options from their tests leaked into the ++ # main target. We workaround by clearing them here. ++ set_property(TARGET utf8cpp PROPERTY INTERFACE_COMPILE_OPTIONS) ++ endif() ++ ++ find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} CONFIG_MODE) ++ return() ++endif() ++ ++find_path(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR ++ NAMES utf8.h ++ PATH_SUFFIXES utf8cpp) ++ ++find_package_handle_standard_args(${CMAKE_FIND_PACKAGE_NAME} ++ REQUIRED_VARS ${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) ++ ++if(${CMAKE_FIND_PACKAGE_NAME}_FOUND) ++ set(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIRS ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ ++ if(NOT TARGET utf8::cpp) ++ add_library(utf8::cpp INTERFACE IMPORTED) ++ ++ target_include_directories(utf8::cpp ++ INTERFACE ++ ${${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR}) ++ endif() ++endif() ++ ++mark_as_advanced(${CMAKE_FIND_PACKAGE_NAME}_INCLUDE_DIR) diff --git a/net-p2p/transmission-components/files/patch-cmake_TrGTest.cmake b/net-p2p/transmission-components/files/patch-cmake_TrGTest.cmake new file mode 100644 index 000000000000..caa6935e9af2 --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_TrGTest.cmake @@ -0,0 +1,19 @@ +--- cmake/TrGTest.cmake.orig 2026-01-31 08:51:00 UTC ++++ cmake/TrGTest.cmake +@@ -0,0 +1,16 @@ ++include(TrMacros) ++ ++option(USE_SYSTEM_GTEST "Use system GTest library" OFF) ++ ++tr_add_external_auto_library(GTEST GTest ++ SUBPROJECT ++ SOURCE_DIR googletest ++ CMAKE_ARGS ++ -DBUILD_GMOCK=OFF ++ -DINSTALL_GTEST=OFF ++ -DBUILD_SHARED_LIBS=ON) ++ ++# The GTest::gtest_main target is new in CMake 3.20 ++if(NOT TARGET GTest::gtest_main) ++ add_library(GTest::gtest_main ALIAS GTest::Main) ++endif() diff --git a/net-p2p/transmission-components/files/patch-cmake_TrMacros.cmake b/net-p2p/transmission-components/files/patch-cmake_TrMacros.cmake new file mode 100644 index 000000000000..adedddae9f42 --- /dev/null +++ b/net-p2p/transmission-components/files/patch-cmake_TrMacros.cmake @@ -0,0 +1,146 @@ +--- cmake/TrMacros.cmake.orig 2026-01-31 10:47:49 UTC ++++ cmake/TrMacros.cmake +@@ -128,7 +128,142 @@ endfunction() + set(${VAR_PREFIX}_DISALLOWED "${DISALLOWED_ITEMS}" PARENT_SCOPE) + endfunction() + +-macro(tr_add_external_auto_library ID DIRNAME LIBNAME) ++macro(tr_add_external_auto_library ID PACKAGENAME) ++ cmake_parse_arguments(_TAEAL_ARG ++ "SUBPROJECT;HEADER_ONLY" ++ "LIBNAME;SOURCE_DIR;TARGET" ++ "CMAKE_ARGS;COMPONENTS" ++ ${ARGN}) ++ ++ set(_TAEAL_SOURCE_DIR "${TR_THIRD_PARTY_SOURCE_DIR}") ++ set(_TAEAL_BINARY_DIR "${TR_THIRD_PARTY_BINARY_DIR}") ++ if (_TAEAL_ARG_SOURCE_DIR) ++ string(APPEND _TAEAL_SOURCE_DIR "/${_TAEAL_ARG_SOURCE_DIR}") ++ string(APPEND _TAEAL_BINARY_DIR "/${_TAEAL_ARG_SOURCE_DIR}.bld") ++ else() ++ string(APPEND _TAEAL_SOURCE_DIR "/${PACKAGENAME}") ++ string(APPEND _TAEAL_BINARY_DIR "/${PACKAGENAME}.bld") ++ endif() ++ ++ if(USE_SYSTEM_${ID}) ++ tr_get_required_flag(USE_SYSTEM_${ID} SYSTEM_${ID}_IS_REQUIRED) ++ set(_TAEAL_QUIET) ++ if(NOT SYSTEM_${ID}_IS_REQUIRED) ++ set(_TAEAL_QUIET QUIET) ++ endif() ++ find_package(${PACKAGENAME} ${${ID}_MINIMUM} ${SYSTEM_${ID}_IS_REQUIRED} ${_TAEAL_QUIET} ++ COMPONENTS ${_TAEAL_ARG_COMPONENTS}) ++ tr_fixup_auto_option(USE_SYSTEM_${ID} ${PACKAGENAME}_FOUND SYSTEM_${ID}_IS_REQUIRED) ++ endif() ++ ++ if(USE_SYSTEM_${ID}) ++ unset(${PACKAGENAME}_UPSTREAM_TARGET) ++ elseif(_TAEAL_ARG_SUBPROJECT) ++ foreach(ARG IN LISTS _TAEAL_ARG_CMAKE_ARGS) ++ if(ARG MATCHES "^-D([^=: ]+)(:[^= ]+)?=(.*)$") ++ set(${CMAKE_MATCH_1} ${CMAKE_MATCH_3} CACHE INTERNAL "") ++ endif() ++ endforeach() ++ ++ set(_TAEAL_SUBDIR_SYSTEM) ++ if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.25) ++ set(_TAEAL_SUBDIR_SYSTEM SYSTEM) ++ endif() ++ add_subdirectory("${_TAEAL_SOURCE_DIR}" "${_TAEAL_BINARY_DIR}" EXCLUDE_FROM_ALL ${_TAEAL_SUBDIR_SYSTEM}) ++ else() ++ if(NOT _TAEAL_ARG_LIBNAME) ++ message(FATAL_ERROR "LIBNAME must be specified if not SUBPROJECT") ++ endif () ++ ++ set(${PACKAGENAME}_UPSTREAM_TARGET "_${_TAEAL_ARG_LIBNAME}") ++ set(${PACKAGENAME}_PREFIX "${_TAEAL_BINARY_DIR}/pfx") ++ ++ set(${PACKAGENAME}_INCLUDE_DIR "${${PACKAGENAME}_PREFIX}/include" ++ CACHE INTERNAL "") ++ set(${PACKAGENAME}_INCLUDE_DIRS ${${PACKAGENAME}_INCLUDE_DIR}) ++ ++ if(NOT _TAEAL_ARG_HEADER_ONLY) ++ set(${PACKAGENAME}_LIBRARY "${${PACKAGENAME}_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}${_TAEAL_ARG_LIBNAME}${CMAKE_STATIC_LIBRARY_SUFFIX}" ++ CACHE INTERNAL "") ++ set(${PACKAGENAME}_LIBRARIES ${${PACKAGENAME}_LIBRARY}) ++ endif() ++ ++ set(${PACKAGENAME}_EXT_PROJ_CMAKE_ARGS) ++ ++ if(APPLE) ++ string(REPLACE ";" "$" ${PACKAGENAME}_CMAKE_OSX_ARCHITECTURES "${CMAKE_OSX_ARCHITECTURES}") ++ list(APPEND ${PACKAGENAME}_EXT_PROJ_CMAKE_ARGS ++ "-DCMAKE_OSX_ARCHITECTURES:STRING=${${PACKAGENAME}_CMAKE_OSX_ARCHITECTURES}" ++ "-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=${CMAKE_OSX_DEPLOYMENT_TARGET}" ++ "-DCMAKE_OSX_SYSROOT:PATH=${CMAKE_OSX_SYSROOT}") ++ endif() ++ ++ if(ANDROID) ++ list(APPEND ${PACKAGENAME}_EXT_PROJ_CMAKE_ARGS ++ "-DANDROID_PLATFORM=${ANDROID_PLATFORM}" ++ "-DANDROID_NDK=${ANDROID_NDK}" ++ "-DANDROID_ABI=${ANDROID_ABI}" ++ "-DANDROID_STL=${ANDROID_STL}" ++ "-DCMAKE_ANDROID_NDK=${CMAKE_ANDROID_NDK}" ++ "-DCMAKE_ANDROID_ARCH_ABI=${CMAKE_ANDROID_ARCH_ABI}") ++ endif() ++ ++ if(VCPKG_CHAINLOAD_TOOLCHAIN_FILE) ++ list(APPEND ${PACKAGENAME}_EXT_PROJ_CMAKE_ARGS ++ "-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}") ++ endif() ++ ++ ExternalProject_Add( ++ ${${PACKAGENAME}_UPSTREAM_TARGET} ++ PREFIX "${_TAEAL_BINARY_DIR}" ++ SOURCE_DIR "${_TAEAL_SOURCE_DIR}" ++ INSTALL_DIR "${${PACKAGENAME}_PREFIX}" ++ CMAKE_ARGS ++ -Wno-dev # We don't want to be warned over unused variables ++ --no-warn-unused-cli ++ "-DCMAKE_TOOLCHAIN_FILE:PATH=${CMAKE_TOOLCHAIN_FILE}" ++ "-DCMAKE_USER_MAKE_RULES_OVERRIDE=${CMAKE_USER_MAKE_RULES_OVERRIDE}" ++ "-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}" ++ "-DCMAKE_C_FLAGS:STRING=${CMAKE_C_FLAGS}" ++ "-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}" ++ "-DCMAKE_CXX_FLAGS:STRING=${CMAKE_CXX_FLAGS}" ++ "-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}" ++ "-DCMAKE_INSTALL_PREFIX:PATH=" ++ "-DCMAKE_INSTALL_LIBDIR:STRING=lib" ++ ${${PACKAGENAME}_EXT_PROJ_CMAKE_ARGS} ++ ${_TAEAL_ARG_CMAKE_ARGS} ++ BUILD_BYPRODUCTS "${${PACKAGENAME}_LIBRARY}") ++ ++ set_property(TARGET ${${PACKAGENAME}_UPSTREAM_TARGET} PROPERTY FOLDER "${TR_THIRD_PARTY_DIR_NAME}") ++ ++ # Imported target (below) requires include directories to be present at configuration time ++ file(MAKE_DIRECTORY ${${PACKAGENAME}_INCLUDE_DIRS}) ++ endif() ++ ++ if(NOT _TAEAL_ARG_SUBPROJECT AND _TAEAL_ARG_TARGET AND NOT TARGET ${_TAEAL_ARG_TARGET}) ++ add_library(${_TAEAL_ARG_TARGET} INTERFACE IMPORTED) ++ ++ target_include_directories(${_TAEAL_ARG_TARGET} ++ INTERFACE ++ ${${PACKAGENAME}_INCLUDE_DIRS}) ++ ++ if(NOT _TAEAL_ARG_HEADER_ONLY) ++ target_link_libraries(${_TAEAL_ARG_TARGET} ++ INTERFACE ++ ${${PACKAGENAME}_LIBRARIES}) ++ endif() ++ ++ if(${PACKAGENAME}_UPSTREAM_TARGET) ++ add_dependencies(${_TAEAL_ARG_TARGET} ${${PACKAGENAME}_UPSTREAM_TARGET}) ++ endif() ++ endif() ++ ++ if(_TAEAL_ARG_TARGET AND NOT TARGET ${_TAEAL_ARG_TARGET}) ++ message(FATAL_ERROR "Build system is misconfigured, this shouldn't happen! Can't find target '${_TAEAL_ARG_TARGET}'") ++ endif() ++endmacro() ++ ++macro(tr_add_external_auto_library_legacy ID DIRNAME LIBNAME) + cmake_parse_arguments(_TAEAL_ARG "SUBPROJECT" "TARGET" "CMAKE_ARGS" ${ARGN}) + + if(USE_SYSTEM_${ID}) diff --git a/net-p2p/transmission-components/files/patch-daemon_CMakeLists.txt b/net-p2p/transmission-components/files/patch-daemon_CMakeLists.txt new file mode 100644 index 000000000000..3e496dbfc796 --- /dev/null +++ b/net-p2p/transmission-components/files/patch-daemon_CMakeLists.txt @@ -0,0 +1,11 @@ +--- daemon/CMakeLists.txt.orig 2026-02-21 07:44:09 UTC ++++ daemon/CMakeLists.txt +@@ -33,7 +33,7 @@ target_link_libraries(${TR_NAME}-daemon + target_link_libraries(${TR_NAME}-daemon + PRIVATE + ${TR_NAME} +- libevent::event ++ libevent::core + fmt::fmt-header-only + $<$:${SYSTEMD_LIBRARIES}>) + diff --git a/net-p2p/transmission-components/files/patch-gtk_DetailsDialog.cc b/net-p2p/transmission-components/files/patch-gtk_DetailsDialog.cc deleted file mode 100644 index 48aba6f6ccdd..000000000000 --- a/net-p2p/transmission-components/files/patch-gtk_DetailsDialog.cc +++ /dev/null @@ -1,30 +0,0 @@ ---- gtk/DetailsDialog.cc.orig 2025-10-15 08:45:18 UTC -+++ gtk/DetailsDialog.cc -@@ -49,10 +49,12 @@ - - #include - #include -+#include - #include - - #include - #include -+#include - #include - #include // abort() - #include -@@ -606,12 +608,12 @@ void gtr_text_buffer_set_text(Glib::RefPtr:crypt32> + $<$:shlwapi> +@@ -297,9 +297,10 @@ target_link_libraries(${TR_NAME} + $<$:atomic> + PUBLIC + transmission::crypto_impl +- fmt::fmt-header-only +- small::small +- libevent::event) ++ transmission::fmt-header-only ++ transmission::small ++ libevent::core ++ libevent::extra) + + if(INSTALL_LIB) + install( diff --git a/net-p2p/transmission-components/files/patch-libtransmission_peer-msgs.cc b/net-p2p/transmission-components/files/patch-libtransmission_peer-msgs.cc deleted file mode 100644 index 51acaa75fb0f..000000000000 --- a/net-p2p/transmission-components/files/patch-libtransmission_peer-msgs.cc +++ /dev/null @@ -1,10 +0,0 @@ ---- libtransmission/peer-msgs.cc.orig 2025-08-10 02:48:03 UTC -+++ libtransmission/peer-msgs.cc -@@ -17,6 +17,7 @@ - #include - - #include -+#include - - #include "transmission.h" - diff --git a/net-p2p/transmission-components/files/patch-libtransmission_port-forwarding-upnp.cc b/net-p2p/transmission-components/files/patch-libtransmission_port-forwarding-upnp.cc deleted file mode 100644 index ae97f1095a60..000000000000 --- a/net-p2p/transmission-components/files/patch-libtransmission_port-forwarding-upnp.cc +++ /dev/null @@ -1,17 +0,0 @@ ---- libtransmission/port-forwarding-upnp.cc.orig 2024-05-29 01:38:35 UTC -+++ libtransmission/port-forwarding-upnp.cc -@@ -275,8 +275,12 @@ tr_port_forwarding_state tr_upnpPulse(tr_upnp* handle, - - FreeUPNPUrls(&handle->urls); - auto lanaddr = std::array{}; -- if (UPNP_GetValidIGD(devlist, &handle->urls, &handle->data, std::data(lanaddr), std::size(lanaddr) - 1) == -- UPNP_IGD_VALID_CONNECTED) -+#if (MINIUPNPC_API_VERSION >= 18) -+ if (UPNP_GetValidIGD(devlist, &handle->urls, &handle->data, std::data(lanaddr), std::size(lanaddr) - 1, nullptr, 0) -+#else -+ if (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()))); diff --git a/net-p2p/transmission-components/files/patch-libtransmission_session-alt-speeds.cc b/net-p2p/transmission-components/files/patch-libtransmission_session-alt-speeds.cc deleted file mode 100644 index 2bcd3f11480c..000000000000 --- a/net-p2p/transmission-components/files/patch-libtransmission_session-alt-speeds.cc +++ /dev/null @@ -1,19 +0,0 @@ ---- libtransmission/session-alt-speeds.cc.orig 2025-10-15 08:50:14 UTC -+++ libtransmission/session-alt-speeds.cc -@@ -3,6 +3,7 @@ - // or any future license endorsed by Mnemosyne LLC. - // License text can be found in the licenses/ folder. - -+#include - #include - - #include "transmission.h" -@@ -105,7 +106,7 @@ void tr_session_alt_speeds::setActive(bool active, Cha - - [[nodiscard]] bool tr_session_alt_speeds::isActiveMinute(time_t time) const noexcept - { -- auto const tm = fmt::localtime(time); -+ auto const tm = *std::localtime(&time); - - size_t minute_of_the_week = tm.tm_wday * MinutesPerDay + tm.tm_hour * MinutesPerHour + tm.tm_min; - diff --git a/net-p2p/transmission-components/files/patch-libtransmission_torrent.cc b/net-p2p/transmission-components/files/patch-libtransmission_torrent.cc deleted file mode 100644 index eb34b93d0803..000000000000 --- a/net-p2p/transmission-components/files/patch-libtransmission_torrent.cc +++ /dev/null @@ -1,28 +0,0 @@ ---- libtransmission/torrent.cc.orig 2025-10-15 08:51:36 UTC -+++ libtransmission/torrent.cc -@@ -6,6 +6,7 @@ - #include - #include - #include // EINVAL -+#include - #include /* INT_MAX */ - #include /* signal() */ - #include -@@ -438,6 +439,8 @@ void torrentCallScript(tr_torrent const* tor, std::str - return; - } - -+ auto const now = tr_time(); -+ - auto torrent_dir = tr_pathbuf{ tor->currentDir() }; - tr_sys_path_native_separators(std::data(torrent_dir)); - -@@ -447,7 +450,7 @@ void torrentCallScript(tr_torrent const* tor, std::str - auto const labels_str = buildLabelsString(tor); - auto const trackers_str = buildTrackersString(tor); - auto const bytes_downloaded_str = std::to_string(tor->downloadedCur + tor->downloadedPrev); -- auto const localtime_str = fmt::format("{:%a %b %d %T %Y%n}", fmt::localtime(tr_time())); -+ auto const localtime_str = fmt::format("{:%a %b %d %T %Y%n}", *std::localtime(&now)); - - auto const env = std::map{ - { "TR_APP_VERSION"sv, SHORT_VERSION_STRING }, diff --git a/net-p2p/transmission-components/files/patch-qt_transmission-qt.desktop b/net-p2p/transmission-components/files/patch-qt_transmission-qt.desktop deleted file mode 100644 index 45b672aa5aab..000000000000 --- a/net-p2p/transmission-components/files/patch-qt_transmission-qt.desktop +++ /dev/null @@ -1,11 +0,0 @@ ---- qt/transmission-qt.desktop.orig 2023-09-24 19:03:24 UTC -+++ qt/transmission-qt.desktop -@@ -5,7 +5,7 @@ Comment=Download and share files over BitTorrent - # Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon! - Keywords=torrents;downloading;uploading;share;sharing; - Exec=transmission-qt %U --Icon=transmission -+Icon=transmission-qt - Terminal=false - Type=Application - MimeType=application/x-bittorrent;x-scheme-handler/magnet; diff --git a/net-p2p/transmission-components/files/patch-tests_libtransmission_CMakeLists.txt b/net-p2p/transmission-components/files/patch-tests_libtransmission_CMakeLists.txt new file mode 100644 index 000000000000..d3aa983b7c62 --- /dev/null +++ b/net-p2p/transmission-components/files/patch-tests_libtransmission_CMakeLists.txt @@ -0,0 +1,11 @@ +--- tests/libtransmission/CMakeLists.txt.orig 2026-02-21 07:46:06 UTC ++++ tests/libtransmission/CMakeLists.txt +@@ -78,7 +78,7 @@ target_link_libraries(libtransmission-test + gtestall + dht::dht + fmt::fmt-header-only +- libevent::event ++ libevent::core + WideInteger::WideInteger) + + if(NOT CMAKE_CROSSCOMPILING OR CMAKE_CROSSCOMPILING_EMULATOR) diff --git a/net-p2p/transmission-components/files/patch-utils_CMakeLists.txt b/net-p2p/transmission-components/files/patch-utils_CMakeLists.txt new file mode 100644 index 000000000000..d483fabc74d5 --- /dev/null +++ b/net-p2p/transmission-components/files/patch-utils_CMakeLists.txt @@ -0,0 +1,11 @@ +--- utils/CMakeLists.txt.orig 2026-02-21 07:45:23 UTC ++++ utils/CMakeLists.txt +@@ -10,7 +10,7 @@ foreach(P create edit remote show) + ${TR_NAME} + CURL::libcurl + fmt::fmt-header-only +- libevent::event) ++ libevent::core) + + tr_win32_app_info(${TR_NAME}-${P} + "Transmission Utility ('${P}')" diff --git a/net-p2p/transmission-components/files/patch-utils_remote.cc b/net-p2p/transmission-components/files/patch-utils_remote.cc deleted file mode 100644 index 77f47c740d09..000000000000 --- a/net-p2p/transmission-components/files/patch-utils_remote.cc +++ /dev/null @@ -1,19 +0,0 @@ ---- utils/remote.cc.orig 2025-10-15 08:53:57 UTC -+++ utils/remote.cc -@@ -8,6 +8,7 @@ - #include /* isspace */ - #include // PRId64 - #include -+#include - #include - #include - #include -@@ -900,7 +901,7 @@ static char* format_date(char* buf, size_t buflen, tim - - static char* format_date(char* buf, size_t buflen, time_t now) - { -- *fmt::format_to_n(buf, buflen - 1, "{:%a %b %d %T %Y}", fmt::localtime(now)).out = '\0'; -+ *fmt::format_to_n(buf, buflen - 1, "{:%a %b %d %T %Y}", *std::localtime(&now)).out = '\0'; - return buf; - } - diff --git a/net-p2p/transmission-components/files/patch-utils_show.cc b/net-p2p/transmission-components/files/patch-utils_show.cc deleted file mode 100644 index 45ba2fda2d37..000000000000 --- a/net-p2p/transmission-components/files/patch-utils_show.cc +++ /dev/null @@ -1,11 +0,0 @@ ---- utils/show.cc.orig 2025-10-15 08:54:46 UTC -+++ utils/show.cc -@@ -160,7 +160,7 @@ int parseCommandLine(app_opts& opts, int argc, char co - - [[nodiscard]] auto toString(time_t now) - { -- return now == 0 ? "Unknown" : fmt::format("{:%a %b %d %T %Y}", fmt::localtime(now)); -+ return now == 0 ? "Unknown" : fmt::format("{:%a %b %d %T %Y}", *std::localtime(&now)); - } - - bool compareSecondField(std::string_view l, std::string_view r) diff --git a/net-p2p/transmission-components/pkg-plist.docs b/net-p2p/transmission-components/pkg-plist.docs index 360c15830414..533717cb005e 100644 --- a/net-p2p/transmission-components/pkg-plist.docs +++ b/net-p2p/transmission-components/pkg-plist.docs @@ -1,11 +1,14 @@ %%DOCSDIR%%/AUTHORS %%DOCSDIR%%/COPYING %%DOCSDIR%%/news/news-4.0.0.md %%DOCSDIR%%/news/news-4.0.1.md %%DOCSDIR%%/news/news-4.0.2.md %%DOCSDIR%%/news/news-4.0.3.md %%DOCSDIR%%/news/news-4.0.4.md %%DOCSDIR%%/news/news-4.0.5.md +%%DOCSDIR%%/news/news-4.0.6.md +%%DOCSDIR%%/news/news-4.1.0.md +%%DOCSDIR%%/news/news-5.0.0-draft.md %%DOCSDIR%%/README.md %%DOCSDIR%%/rpc-spec.md %%DOCSDIR%%/send-email-when-torrent-done.sh diff --git a/net-p2p/transmission-components/pkg-plist.gtk b/net-p2p/transmission-components/pkg-plist.gtk index d7f035dbb82f..b142ceea34f3 100644 --- a/net-p2p/transmission-components/pkg-plist.gtk +++ b/net-p2p/transmission-components/pkg-plist.gtk @@ -1,93 +1,26 @@ bin/transmission-gtk share/man/man1/transmission-gtk.1.gz share/applications/transmission-gtk.desktop -share/icons/hicolor/scalable/apps/transmission-devel.svg -share/icons/hicolor/scalable/apps/transmission.svg -share/icons/hicolor/symbolic/apps/transmission-symbolic.svg -%%NLS%%share/locale/an/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ar/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ast/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/az/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/be/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/bg/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/bn/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/br/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/bs/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ca/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ca@valencia/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ceb/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ckb/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/cs/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/cy/LC_MESSAGES/transmission-gtk.mo +share/icons/hicolor/scalable/apps/transmission-gtk.svg +share/icons/hicolor/scalable/apps/transmission-gtk-devel.svg +share/icons/hicolor/symbolic/apps/transmission-gtk-symbolic.svg %%NLS%%share/locale/da/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/de/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/el/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/en_AU/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/en_CA/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/en_GB/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/eo/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/es/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/et/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/eu/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/fa/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/fi/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/fil/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/fo/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/fr/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/fr_CA/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ga/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/gl/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/gv/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/he/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/hi/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/hr/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/hu/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/hy/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ia/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/id/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/is/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/it/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/ja/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/jbo/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ka/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/kk/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ko/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ku/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ky/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/li/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/lt/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/lv/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/mk/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ml/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/mr/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ms/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/mt/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/nb/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/nl/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/nn/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/oc/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/pl/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/pt/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/pt_BR/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/pt_PT/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ro/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/ru/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/si/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/sk/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/sl/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/sq/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/sr/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/sv/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ta/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/te/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/th/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/tr/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ug/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/uk/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/ur/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/uz/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/vi/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/zh_CN/LC_MESSAGES/transmission-gtk.mo -%%NLS%%share/locale/zh_HK/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/locale/zh_TW/LC_MESSAGES/transmission-gtk.mo %%NLS%%share/metainfo/transmission-gtk.metainfo.xml diff --git a/net-p2p/transmission-components/pkg-plist.qt b/net-p2p/transmission-components/pkg-plist.qt index 783956dc7080..e41c49a68369 100644 --- a/net-p2p/transmission-components/pkg-plist.qt +++ b/net-p2p/transmission-components/pkg-plist.qt @@ -1,34 +1,39 @@ bin/transmission-qt share/man/man1/transmission-qt.1.gz share/applications/transmission-qt.desktop share/icons/hicolor/scalable/apps/transmission-qt.svg +share/icons/hicolor/scalable/apps/transmission-qt-devel.svg +share/icons/hicolor/symbolic/apps/transmission-qt-symbolic.svg %%NLS%%%%DATADIR%%/translations/transmission_af.qm %%NLS%%%%DATADIR%%/translations/transmission_ca.qm %%NLS%%%%DATADIR%%/translations/transmission_da.qm %%NLS%%%%DATADIR%%/translations/transmission_de.qm %%NLS%%%%DATADIR%%/translations/transmission_el.qm %%NLS%%%%DATADIR%%/translations/transmission_en.qm %%NLS%%%%DATADIR%%/translations/transmission_es.qm %%NLS%%%%DATADIR%%/translations/transmission_eu.qm %%NLS%%%%DATADIR%%/translations/transmission_fi.qm %%NLS%%%%DATADIR%%/translations/transmission_fr.qm +%%NLS%%%%DATADIR%%/translations/transmission_he.qm %%NLS%%%%DATADIR%%/translations/transmission_hu.qm %%NLS%%%%DATADIR%%/translations/transmission_id.qm -%%NLS%%%%DATADIR%%/translations/transmission_it_IT.qm +%%NLS%%%%DATADIR%%/translations/transmission_is.qm +%%NLS%%%%DATADIR%%/translations/transmission_it.qm %%NLS%%%%DATADIR%%/translations/transmission_ja.qm %%NLS%%%%DATADIR%%/translations/transmission_ka.qm %%NLS%%%%DATADIR%%/translations/transmission_kk.qm %%NLS%%%%DATADIR%%/translations/transmission_ko.qm %%NLS%%%%DATADIR%%/translations/transmission_lt.qm %%NLS%%%%DATADIR%%/translations/transmission_nb.qm %%NLS%%%%DATADIR%%/translations/transmission_nl.qm %%NLS%%%%DATADIR%%/translations/transmission_pl.qm %%NLS%%%%DATADIR%%/translations/transmission_pt.qm %%NLS%%%%DATADIR%%/translations/transmission_pt_BR.qm %%NLS%%%%DATADIR%%/translations/transmission_pt_PT.qm %%NLS%%%%DATADIR%%/translations/transmission_ru.qm %%NLS%%%%DATADIR%%/translations/transmission_sl.qm %%NLS%%%%DATADIR%%/translations/transmission_sv.qm %%NLS%%%%DATADIR%%/translations/transmission_tr.qm %%NLS%%%%DATADIR%%/translations/transmission_uk.qm %%NLS%%%%DATADIR%%/translations/transmission_zh_CN.qm +%%NLS%%%%DATADIR%%/translations/transmission_zh_TW.qm diff --git a/net-p2p/transmission-components/pkg-plist.web b/net-p2p/transmission-components/pkg-plist.web index 729f6ea806de..2e9b22427e81 100644 --- a/net-p2p/transmission-components/pkg-plist.web +++ b/net-p2p/transmission-components/pkg-plist.web @@ -1,7 +1,9 @@ %%DATADIR%%/public_html/images/favicon.ico %%DATADIR%%/public_html/images/favicon.png %%DATADIR%%/public_html/images/webclip-icon.png %%DATADIR%%/public_html/index.html %%DATADIR%%/public_html/transmission-app.css +%%DATADIR%%/public_html/transmission-app.css.LEGAL.txt +%%DATADIR%%/public_html/transmission-app.css.map %%DATADIR%%/public_html/transmission-app.js %%DATADIR%%/public_html/transmission-app.js.LEGAL.txt diff --git a/net-p2p/transmission/Makefile b/net-p2p/transmission/Makefile index bdf5197b84c2..c718244e3d57 100644 --- a/net-p2p/transmission/Makefile +++ b/net-p2p/transmission/Makefile @@ -1,33 +1,32 @@ PORTNAME= transmission -DISTVERSION= 4.0.6 -PORTREVISION= 1 +DISTVERSION= 4.1.1 CATEGORIES= net-p2p MAINTAINER= mondo.debater_0q@icloud.com COMMENT= Transmission BitTorrent client WWW= https://www.transmissionbt.com LICENSE= GPLv3+ USES= metaport OPTIONS_DEFINE= CLI DAEMON DOCS GTK QT UTILS WEB OPTIONS_DEFAULT= CLI DAEMON GTK QT UTILS WEB CLI_DESC= Build command-line client (deprecated) DAEMON_DESC= Build daemon DOCS_DESC= Install documentation -GTK_DESC= Build GTK+ client -QT_DESC= Build Qt client +GTK_DESC= Build GTK+ 4 client +QT_DESC= Build Qt 6 client UTILS_DESC= Build utilities (create, edit, remote, show) WEB_DESC= Install web interface CLI_RUN_DEPENDS= transmission-cli:net-p2p/transmission-components@cli DAEMON_RUN_DEPENDS= transmission-daemon:net-p2p/transmission-components@daemon DOCS_RUN_DEPENDS= ${DOCSDIR}/README.md:net-p2p/transmission-components@docs GTK_RUN_DEPENDS= transmission-gtk:net-p2p/transmission-components@gtk QT_RUN_DEPENDS= transmission-qt:net-p2p/transmission-components@qt UTILS_RUN_DEPENDS= transmission-create:net-p2p/transmission-components@utils WEB_RUN_DEPENDS= ${DATADIR}/public_html/index.html:net-p2p/transmission-components@web .include