git: bb10451d228d - main - net-p2p/amule: Update to 3.1.0

From: Nuno Teixeira <eduardo_at_FreeBSD.org>
Date: Mon, 21 Sep 2026 23:47:02 UTC
The branch main has been updated by eduardo:

URL: https://cgit.FreeBSD.org/ports/commit/?id=bb10451d228d3dd997242695e19d0d9293375a6c

commit bb10451d228d3dd997242695e19d0d9293375a6c
Author:     Nuno Teixeira <eduardo@FreeBSD.org>
AuthorDate: 2026-09-21 23:34:25 +0000
Commit:     Nuno Teixeira <eduardo@FreeBSD.org>
CommitDate: 2026-09-21 23:46:50 +0000

    net-p2p/amule: Update to 3.1.0
    
    - Remove WEBSERVER_USES=readline option as it is defined in global USES
    - Apply upstream tests fix patch
    
    ChangeLog: https://github.com/amule-org/amule/releases/tag/3.1.0
---
 net-p2p/amule/Makefile                   | 12 ++---
 net-p2p/amule/distinfo                   |  6 +--
 net-p2p/amule/files/patch-CMakeLists.txt | 17 +++++--
 net-p2p/amule/files/patch-fix-tests      | 78 ++++++++++++++++++++++++++++++++
 net-p2p/amule/pkg-plist                  |  8 +++-
 5 files changed, 105 insertions(+), 16 deletions(-)

diff --git a/net-p2p/amule/Makefile b/net-p2p/amule/Makefile
index 417c9aafb132..cbc519a4cd08 100644
--- a/net-p2p/amule/Makefile
+++ b/net-p2p/amule/Makefile
@@ -1,6 +1,5 @@
 PORTNAME=	amule
-DISTVERSION=	3.0.1
-PORTREVISION=	1
+DISTVERSION=	3.1.0
 CATEGORIES=	net-p2p
 MASTER_SITES=	https://github.com/amule-org/amule/releases/download/${DISTVERSION}/
 DISTNAME=	aMule-${DISTVERSION}-src
@@ -15,17 +14,19 @@ LICENSE_FILE=	${WRKSRC}/docs/COPYING
 LIB_DEPENDS=	libcryptopp.so:security/cryptopp-modern \
 		libcurl.so:ftp/curl
 
-USES=		cmake:testing gettext-runtime gnome localbase:ldflags pkgconfig \
-		readline
+USES=		cmake:testing desktop-file-utils gettext-runtime gnome \
+		localbase:ldflags pkgconfig readline shared-mime-info
 USE_GNOME=	glib20
 USE_RC_SUBR=	amuled
 USE_WX=		3.2
 
 CMAKE_ON=	BUILD_ALC BUILD_ALCC BUILD_AMULECMD BUILD_DAEMON BUILD_ED2K \
 		BUILD_WXCAS
-CMAKE_OFF=	BUILD_TESTING DEFAULT_VERSION_CHECK ENABLE_BFD ENABLE_CCACHE \
+CMAKE_OFF=	BUILD_TESTING ENABLE_BFD ENABLE_CCACHE ENABLE_VERSION_CHECK \
 		TRANSLATED_MANPAGES
 
+LDFLAGS+=	-lexecinfo
+
 WRKSRC=		${WRKDIR}/aMule-${DISTVERSION}
 
 OPTIONS_DEFINE=			CAS DOCS FILEVIEW GEOIP NLS UPNP WEBSERVER
@@ -60,7 +61,6 @@ UPNP_LIB_DEPENDS=	libupnp.so:devel/upnp
 UPNP_CMAKE_BOOL=	ENABLE_UPNP
 
 WEBSERVER_LIB_DEPENDS=	libpng16.so:graphics/png
-WEBSERVER_USES=		readline
 WEBSERVER_CMAKE_BOOL=	BUILD_WEBSERVER
 
 .include <bsd.port.options.mk>
diff --git a/net-p2p/amule/distinfo b/net-p2p/amule/distinfo
index 6ae319c1aa26..46620fe0952e 100644
--- a/net-p2p/amule/distinfo
+++ b/net-p2p/amule/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1782324693
-SHA256 (aMule-3.0.1-src.tar.gz) = 44484f2b003e2e9de2e86f6a9e57c948401aa24d6d398e2af73e563fd66a3413
-SIZE (aMule-3.0.1-src.tar.gz) = 6011817
+TIMESTAMP = 1790015440
+SHA256 (aMule-3.1.0-src.tar.gz) = a05f9b655f4407f18179640f65ae50c93bd36a90c268c8fff7adc575fe8eb041
+SIZE (aMule-3.1.0-src.tar.gz) = 8311084
diff --git a/net-p2p/amule/files/patch-CMakeLists.txt b/net-p2p/amule/files/patch-CMakeLists.txt
index 0bb32ac8311d..421d0a2e5752 100644
--- a/net-p2p/amule/files/patch-CMakeLists.txt
+++ b/net-p2p/amule/files/patch-CMakeLists.txt
@@ -1,11 +1,18 @@
---- CMakeLists.txt.orig	2026-07-31 13:00:04 UTC
+b700cbd3a83d ("net-p2p/amule: fix build on 32-bit platforms properly")
+
+The port asks for libatomic on 32 bit platforms.  That's a gcc thing.
+We don't compile with gcc, so libatomic is not needed in any case.
+Patch out the check for libatomic to fix the build on all 32-bit
+platforms.
+
+--- CMakeLists.txt.orig	2026-09-21 10:20:45 UTC
 +++ CMakeLists.txt
-@@ -296,7 +296,7 @@ set (LIBATOMIC "")
+@@ -383,7 +383,7 @@ set (LIBATOMIC "")
  # atomic references actually do need the library (see #643). Just
  # require libatomic unconditionally on 32-bit builds.
  set (LIBATOMIC "")
 -if (CMAKE_SIZEOF_VOID_P EQUAL 4)
 +if (FALSE AND CMAKE_SIZEOF_VOID_P EQUAL 4)
- 	# Accept either the unversioned `libatomic.so` (Debian / Fedora /
- 	# Arch ship it via the -dev / -devel package) or the versioned-only
- 	# `libatomic.so.1` (openSUSE ships only the latter -- there's no
+ 	# Probe with a compiler-driven LINK test, not find_library. With GCC,
+ 	# libatomic ships inside the compiler's own runtime dir (e.g.
+ 	# .../lib/gcc14/) which is not on find_library's filesystem search
diff --git a/net-p2p/amule/files/patch-fix-tests b/net-p2p/amule/files/patch-fix-tests
new file mode 100644
index 000000000000..a182af3a4825
--- /dev/null
+++ b/net-p2p/amule/files/patch-fix-tests
@@ -0,0 +1,78 @@
+From 210caba58f0b88ac6ad892c728355095714bca28 Mon Sep 17 00:00:00 2001
+From: got3nks <got3nks@users.noreply.github.com>
+Date: Tue, 22 Sep 2026 00:08:00 +0100
+Subject: [PATCH] test(core): stop the double-free probe failing where the
+ allocator absorbs it (#1525)
+
+The abort-backtrace suite forks a child, double frees for real and requires the
+child to die. glibc and macOS libmalloc oblige. FreeBSD's jemalloc takes the
+second free into its thread cache and says nothing unless libc was built
+--enable-debug, so the child ran to its own exit and the case failed on a
+property no aMule code owns. MALLOC_CONF is read at allocator init, long before
+the fork, so the test cannot ask for detection either.
+
+Give that exit its own code and accept it: where nothing died there is no report
+to assert on, and the trap and abort cases still cover the handler.
+
+Closes #1524.
+---
+ unittests/tests/FatalAbortBacktraceTest.cpp | 22 +++++++++++++++++++--
+ 1 file changed, 20 insertions(+), 2 deletions(-)
+
+diff --git unittests/tests/FatalAbortBacktraceTest.cpp unittests/tests/FatalAbortBacktraceTest.cpp
+index 5df94a97a9..3b11d3f92c 100644
+--- unittests/tests/FatalAbortBacktraceTest.cpp
++++ unittests/tests/FatalAbortBacktraceTest.cpp
+@@ -73,9 +73,14 @@ struct ChildResult
+ 	std::string stderr_text;
+ 	bool exited_on_signal = false;
+ 	int signal_number = 0;
++	int exit_code = -1; // only meaningful when the child was not signalled
+ 	bool timed_out = false;
+ };
+ 
++// What a child exits with when its own double free went through unnoticed, so the parent can tell
++// an allocator that absorbed the corruption from any other quiet exit.
++const int kAllocatorAbsorbedIt = 70;
++
+ // Runs `body` in a forked child with its stderr on a pipe, and returns what it wrote plus how it
+ // died. The alarm is the deadlock detector: a handler that allocates can block forever inside
+ // malloc, and without a bound that would hang the whole suite instead of failing one case.
+@@ -128,6 +133,8 @@ ChildResult RunInChild(void (*body)(), unsigned timeout_seconds = 10)
+ 		result.exited_on_signal = true;
+ 		result.signal_number = WTERMSIG(status);
+ 		result.timed_out = (result.signal_number == SIGALRM);
++	} else if (WIFEXITED(status)) {
++		result.exit_code = WEXITSTATUS(status);
+ 	}
+ 	return result;
+ }
+@@ -161,7 +168,7 @@ void ChildDoubleFree()
+ #endif
+ 	free(p);
+ 	free(Launder(p));
+-	_exit(0); // not reached while the allocator detects the double free
++	_exit(kAllocatorAbsorbedIt); // reached only where the allocator lets a double free through
+ }
+ 
+ // The trap path on its own, without depending on what an allocator decides to do. __builtin_trap()
+@@ -413,7 +420,18 @@ TEST(FatalAbortBacktrace, RealHeapCorruptionStillProducesABacktrace)
+ 	const ChildResult r = RunInChild(ChildDoubleFree);
+ 
+ 	ASSERT_FALSE(r.timed_out); // a handler that allocates deadlocks here
+-	ASSERT_TRUE(r.exited_on_signal);
++
++	// Whether a double free is noticed at all is the allocator's choice, not ours. glibc and
++	// macOS libmalloc both kill the child. FreeBSD's jemalloc takes the second free into its
++	// thread cache and says nothing unless libc was built --enable-debug, and the test cannot
++	// change that from inside the process: MALLOC_CONF is read at allocator init, long before
++	// the fork. Where nothing died there is no report to assert on, and the trap and abort
++	// cases below still cover the handler. amule-org/amule#1524.
++	if (!r.exited_on_signal) {
++		ASSERT_EQUALS(kAllocatorAbsorbedIt, r.exit_code);
++		return;
++	}
++
+ 	// Which signal carries the corruption is the allocator's business: glibc abort()s, macOS
+ 	// libmalloc may trap for the very same double free. Asserting one of them is what made this
+ 	// case fail intermittently on macOS. The report is the behaviour under test.
diff --git a/net-p2p/amule/pkg-plist b/net-p2p/amule/pkg-plist
index a7ded2bcc366..142768fa9147 100644
--- a/net-p2p/amule/pkg-plist
+++ b/net-p2p/amule/pkg-plist
@@ -97,7 +97,11 @@ share/applications/wxcas.desktop
 %%PORTDOCS%%%%DOCSDIR%%/README.md
 %%PORTDOCS%%%%DOCSDIR%%/amulesig.md
 %%MONOLITHIC%%share/icons/hicolor/128x128/apps/org.amule.aMule.png
+share/icons/hicolor/128x128/mimetypes/application-x-emule-collection.png
 %%MONOLITHIC%%share/icons/hicolor/256x256/apps/org.amule.aMule.png
+share/icons/hicolor/256x256/mimetypes/application-x-emule-collection.png
+%%MONOLITHIC%%share/icons/hicolor/scalable/apps/org.amule.aMule.svg
+share/icons/hicolor/scalable/mimetypes/application-x-emule-collection.svg
 %%NLS%%share/locale/ar/LC_MESSAGES/amule.mo
 %%NLS%%share/locale/ast/LC_MESSAGES/amule.mo
 %%NLS%%share/locale/bg/LC_MESSAGES/amule.mo
@@ -118,7 +122,6 @@ share/applications/wxcas.desktop
 %%NLS%%share/locale/hr/LC_MESSAGES/amule.mo
 %%NLS%%share/locale/hu/LC_MESSAGES/amule.mo
 %%NLS%%share/locale/it/LC_MESSAGES/amule.mo
-%%NLS%%share/locale/it_CH/LC_MESSAGES/amule.mo
 %%NLS%%share/locale/ja/LC_MESSAGES/amule.mo
 %%NLS%%share/locale/ko_KR/LC_MESSAGES/amule.mo
 %%NLS%%share/locale/lt/LC_MESSAGES/amule.mo
@@ -136,6 +139,7 @@ share/applications/wxcas.desktop
 %%NLS%%share/locale/ta/LC_MESSAGES/amule.mo
 %%NLS%%share/locale/tr/LC_MESSAGES/amule.mo
 %%NLS%%share/locale/uk/LC_MESSAGES/amule.mo
+%%NLS%%share/locale/vi/LC_MESSAGES/amule.mo
 %%NLS%%share/locale/zh_CN/LC_MESSAGES/amule.mo
 %%NLS%%share/locale/zh_TW/LC_MESSAGES/amule.mo
 %%NLS%%share/man/de/man1/alc.1.gz
@@ -248,7 +252,7 @@ share/man/man1/wxcas.1.gz
 %%NLS%%%%CAS%%share/man/zh_TW/man1/cas.1.gz
 %%NLS%%share/man/zh_TW/man1/ed2k.1.gz
 %%NLS%%share/man/zh_TW/man1/wxcas.1.gz
-share/metainfo/org.amule.aMule.metainfo.xml
+share/mime/packages/org.amule.aMule.xml
 share/pixmaps/alc.xpm
 %%MONOLITHIC%%share/pixmaps/org.amule.aMule.png
 share/pixmaps/wxcas.xpm