git: bb10451d228d - main - net-p2p/amule: Update to 3.1.0
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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