git: 6c7bfd6a6aab - main - biology/muscle: update 3.8.1551 -> 5.1

From: Rodrigo Osorio <rodrigo_at_FreeBSD.org>
Date: Tue, 21 Jul 2026 09:52:00 UTC
The branch main has been updated by rodrigo:

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

commit 6c7bfd6a6aab06279041e5d5b9c63a1dec8a24dd
Author:     Rodrigo Osorio <rodrigo@FreeBSD.org>
AuthorDate: 2026-07-20 13:08:11 +0000
Commit:     Rodrigo Osorio <rodrigo@FreeBSD.org>
CommitDate: 2026-07-21 09:50:28 +0000

    biology/muscle: update 3.8.1551 -> 5.1
    
    In 2021, the code was re-written from scratch for MUSCLE v5 to implement
    novel algorithms and fully support modern PC hardware.
    
    PR:             294891
    Approved by: Maintainer Timeout (>2 months)
---
 biology/muscle/Makefile                     | 26 ++++----
 biology/muscle/distinfo                     |  6 +-
 biology/muscle/files/patch-Makefile         | 28 ---------
 biology/muscle/files/patch-globalslinux.cpp | 94 -----------------------------
 biology/muscle/files/patch-src__myutils.cpp | 65 ++++++++++++++++++++
 5 files changed, 83 insertions(+), 136 deletions(-)

diff --git a/biology/muscle/Makefile b/biology/muscle/Makefile
index dd6b31a9a07f..f243953b2e0e 100644
--- a/biology/muscle/Makefile
+++ b/biology/muscle/Makefile
@@ -1,25 +1,29 @@
 PORTNAME=	muscle
-PORTVERSION=	3.8.1551
+PORTVERSION=	5.1
+DISTVERSIONPREFIX=	v
 CATEGORIES=	biology
-MASTER_SITES=	http://www.drive5.com/muscle/
-DISTNAME=	${PORTNAME}_src_${PORTVERSION}
 
 MAINTAINER=	mzaki@e-mail.ne.jp
 COMMENT=	MUltiple Sequence Comparison by Log-Expectation
 WWW=		https://www.drive5.com/muscle/
 
-LICENSE=	PD
+LICENSE=	GPLv3
 
-USES=		dos2unix gmake
-NO_WRKSUBDIR=	yes
-DOS2UNIX_GLOB=	*.cpp
+BUILD_DEPENDS=	bash:shells/bash
 
-PLIST_FILES=	bin/muscle
+USES=		gmake
+USE_GCC=	yes
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	rcedgar
+ALL_TARGET=	${OPSYS}/${PORTNAME}
+BINARY_ALIAS=	g++=g++14
+WRKSRC_SUBDIR=	src
 
-post-patch:
-	${MV} ${WRKSRC}/subfams.cpp ${WRKSRC}/subfams.cpp.not_to_be_compiled
+PLIST_FILES=	bin/muscle
 
 do-install:
-	${INSTALL_PROGRAM} ${WRKSRC}/muscle ${STAGEDIR}${PREFIX}/bin
+	cd ${WRKSRC} && \
+	${INSTALL} ${OPSYS}/muscle ${STAGEDIR}${PREFIX}/bin/
 
 .include <bsd.port.mk>
diff --git a/biology/muscle/distinfo b/biology/muscle/distinfo
index a6687d526e2e..b7c853250e26 100644
--- a/biology/muscle/distinfo
+++ b/biology/muscle/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1578543217
-SHA256 (muscle_src_3.8.1551.tar.gz) = c70c552231cd3289f1bad51c9bd174804c18bb3adcf47f501afec7a68f9c482e
-SIZE (muscle_src_3.8.1551.tar.gz) = 190019
+TIMESTAMP = 1777062030
+SHA256 (rcedgar-muscle-v5.1_GH0.tar.gz) = 091d9f8733b92ff106c2a8eb274d1e5a57960d397a2068d8638d6002e8880dab
+SIZE (rcedgar-muscle-v5.1_GH0.tar.gz) = 183891
diff --git a/biology/muscle/files/patch-Makefile b/biology/muscle/files/patch-Makefile
deleted file mode 100644
index 1dc159c93a2c..000000000000
--- a/biology/muscle/files/patch-Makefile
+++ /dev/null
@@ -1,28 +0,0 @@
---- Makefile.orig	2014-07-12 16:42:52 UTC
-+++ Makefile
-@@ -10,8 +10,8 @@
- # this is fixed by deleting "-static" from the LDLIBS line.
- 
- CFLAGS = -O3 -funroll-loops -Winline -DNDEBUG=1
--LDLIBS = -lm -static
--# LDLIBS = -lm
-+#LDLIBS = -lm -static
-+LDLIBS = -lm
- 
- OBJ = .o
- EXE =
-@@ -19,7 +19,7 @@ EXE =
- RM = rm -f
- CP = cp
- 
--GPP = g++
-+GPP = $(CXX)
- LD = $(GPP) $(CFLAGS)
- CPP = $(GPP) -c $(CFLAGS) 
- 
-@@ -33,4 +33,4 @@ $(CPPOBJ): %.o: %.cpp
- 
- muscle: $(CPPOBJ)
- 	$(LD) -o muscle $(CPPOBJ) $(LDLIBS)
--	strip muscle
-+#	strip muscle
diff --git a/biology/muscle/files/patch-globalslinux.cpp b/biology/muscle/files/patch-globalslinux.cpp
deleted file mode 100644
index d2b91bf23b06..000000000000
--- a/biology/muscle/files/patch-globalslinux.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
---- globalslinux.cpp.orig	2020-01-09 04:20:25 UTC
-+++ globalslinux.cpp
-@@ -7,6 +7,12 @@
- #include <errno.h>
- #include <stdio.h>
- #include <fcntl.h>
-+#if __FreeBSD__ > 2
-+#include <kvm.h>
-+#include <sys/param.h>
-+#include <sys/sysctl.h>
-+#include <sys/user.h>
-+#endif // __FreeBSD__ > 2
- 
- const int ONE_MB = 1000000;
- const int MEM_WARNING_THRESHOLD = 20*ONE_MB;
-@@ -39,6 +45,34 @@ const char *GetCmdLine()
- 	return szCmdLine;
- 	}
- 
-+#if __FreeBSD__ > 2
-+double GetMemUseMB()
-+	{
-+	kvm_t *kd;
-+	struct kinfo_proc *ki;
-+	vm_size_t size;
-+	int nproc;
-+
-+	kd = kvm_open(NULL, "/dev/null", NULL, O_RDONLY, "kvm_open");
-+	if (kd == NULL)
-+		{
-+		static bool Warned = false;
-+		if (!Warned)
-+			{
-+			Warned = true;
-+			Warning("*Warning* Cannot open KVM");
-+			}
-+		return 0;
-+		}
-+
-+	ki = kvm_getprocs(kd, KERN_PROC_PID, getpid(), &nproc);
-+	size = ki->ki_size;
-+
-+	kvm_close(kd);
-+
-+	return ((double) size)/1e6;
-+	}
-+#else // __FreeBSD__ > 2
- double GetMemUseMB()
- 	{
- 	static char statm[64];
-@@ -74,6 +108,7 @@ double GetMemUseMB()
- 
- 	return ((double) Pages * (double) PageSize)/1e6;
- 	}
-+#endif // __FreeBSD__ > 2
- 
- void SaveCmdLine(int argc, char *argv[])
- 	{
-@@ -109,6 +144,28 @@ void CheckMemUse()
- 		dPeakMemUseMB = dMB;
- 	}
- 
-+#if __FreeBSD__ > 2
-+double GetRAMSizeMB()
-+	{
-+	const double DEFAULT_RAM = 500;
-+	unsigned int physmem;
-+	size_t len = sizeof physmem;
-+	static int mib[2] = { CTL_HW, HW_PHYSMEM };
-+
-+	if (sysctl(mib, 2, &physmem, &len, NULL, 0))
-+		{
-+		static bool Warned = false;
-+		if (!Warned)
-+			{
-+			Warned = true;
-+			Warning("*Warning* Cannot get hw.physmem");
-+			}
-+		return DEFAULT_RAM;
-+		}
-+
-+	return ((double) physmem)/1e6;
-+	}
-+#else // __FreeBSD__ > 2
- double GetRAMSizeMB()
- 	{
- 	const double DEFAULT_RAM = 500;
-@@ -159,5 +216,6 @@ double GetRAMSizeMB()
- 	int Bytes = atoi(pMem+9)*1000;
- 	return ((double) Bytes)/1e6;
- 	}
-+#endif // __FreeBSD__ > 2
- 
- #endif	// !WIN32
diff --git a/biology/muscle/files/patch-src__myutils.cpp b/biology/muscle/files/patch-src__myutils.cpp
new file mode 100644
index 000000000000..68b2a4eacfed
--- /dev/null
+++ b/biology/muscle/files/patch-src__myutils.cpp
@@ -0,0 +1,65 @@
+--- myutils.cpp.orig	2022-01-13 23:29:59 UTC
++++ myutils.cpp
+@@ -1050,7 +1050,62 @@
+ 		g_PeakMemUseBytes = Bytes;
+ 	return Bytes;
+ 	}
++#elif defined(__FreeBSD__)
++
++#include <sys/types.h>
++#include <sys/sysctl.h>
++#include <sys/user.h>
++#include <unistd.h>
+ 
++double GetMemUseBytes()
++	{
++	static int initialized = 0;
++	static int mib[4];
++	static size_t len;
++
++	if (!initialized)
++	{
++		mib[0] = CTL_KERN;
++		mib[1] = KERN_PROC;
++		mib[2] = KERN_PROC_PID;
++		mib[3] = getpid();
++		len = sizeof(struct kinfo_proc);
++		initialized = 1;
++	}
++
++	struct kinfo_proc kp;
++	if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1)
++		return 0.0;
++
++	// Resident set size in pages → convert to bytes
++	long page_size = getpagesize();
++	double bytes = (double)kp.ki_rssize * page_size;
++
++	if (bytes > g_PeakMemUseBytes)
++		g_PeakMemUseBytes = bytes;
++
++	return bytes;
++
++	}
++
++double GetPhysMemBytes()
++	{
++ 	#if BITS == 32
++	unsigned int physmem32 = 0;
++	#else
++	uint64_t physmem = 0;
++	#endif
++
++	size_t len = sizeof(physmem);
++
++	static int mib[2] = { CTL_HW, HW_PHYSMEM };
++	if (sysctl(mib, 2, &physmem, &len, NULL, 0) == -1)
++		return 0.0;
++
++	return (double)physmem;
++
++	}
++
+ #elif defined(__MACH__)
+ #include <memory.h>
+ #include <stdlib.h>