aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeneric Rikka <rikka.goering@outlook.de>2026-04-15 12:29:07 +0000
committerVladimir Druzenko <vvd@FreeBSD.org>2026-04-15 13:37:44 +0000
commit14736c6ee94658022c9172e0594e3125a400f068 (patch)
tree19134f651d2c852f07584afcd7ef6b313ce371c6
parentc7bf0f573d9369f61f8154aa3fe7bb44c6484e73 (diff)
devel/libcircle: New port: API to distribute parallel workloads across MPI ranks
libcircle provides an API for distributing embarrassingly parallel workloads across MPI ranks using a distributed work queue. Applications register callbacks to create and process work items, while the library handles load balancing, termination detection, and optional global reductions. It is commonly used on large HPC filesystems to traverse directory trees and perform file operations in parallel on hundreds or thousands of processes. https://github.com/hpc/libcircle It is one of the dependencies for sysutils/mpifileutils. PR: 291589 Sponsored by: UNIS Labs Co-authored-by: Vladimir Druzenko <vvd@FreeBSD.org>
-rw-r--r--devel/Makefile1
-rw-r--r--devel/libcircle/Makefile48
-rw-r--r--devel/libcircle/distinfo3
-rw-r--r--devel/libcircle/pkg-descr8
-rw-r--r--devel/libcircle/pkg-plist11
5 files changed, 71 insertions, 0 deletions
diff --git a/devel/Makefile b/devel/Makefile
index cefb9eb346db..cb5c176a1ac6 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -1254,6 +1254,7 @@
SUBDIR += libchipcard
SUBDIR += libcidr
SUBDIR += libcii
+ SUBDIR += libcircle
SUBDIR += libcircllhist
SUBDIR += libcjson
SUBDIR += libclc
diff --git a/devel/libcircle/Makefile b/devel/libcircle/Makefile
new file mode 100644
index 000000000000..4c77f60817f9
--- /dev/null
+++ b/devel/libcircle/Makefile
@@ -0,0 +1,48 @@
+PORTNAME= libcircle
+DISTVERSION= 0.3.0
+CATEGORIES= devel parallel
+MASTER_SITES= https://github.com/hpc/${PORTNAME}/releases/download/v${DISTVERSION:R}/
+
+MAINTAINER= rikka.goering@outlook.de
+COMMENT= Efficient distributed work queue library for MPI clusters
+WWW= https://hpc.github.io/libcircle/
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+USES= libtool localbase mpi:openmpi pathfix pkgconfig
+USE_LDCONFIG= yes
+
+GNU_CONFIGURE= yes
+CONFIGURE_ENV= CC=${MPICC} \
+ MPICC=${MPICC}
+INSTALL_TARGET= install-strip
+TEST_TARGET= check
+
+PORTDOCS= *
+
+OPTIONS_DEFINE= DOCS DOXYGEN
+OPTIONS_DEFAULT= SHARED
+OPTIONS_MULTI= LIBS
+OPTIONS_MULTI_LIBS= SHARED STATIC
+OPTIONS_SUB= yes
+
+SHARED_DESC= Build shared libraries
+STATIC_DESC= Build static libraries
+
+DOXYGEN_IMPLIES= DOCS
+DOXYGEN_BUILD_DEPENDS= doxygen:devel/doxygen
+DOXYGEN_CONFIGURE_ENABLE= doxygen
+
+SHARED_CONFIGURE_ENABLE= shared
+STATIC_CONFIGURE_ENABLE= static
+
+do-install-DOCS-on:
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_DATA} ${WRKSRC}/AUTHORS ${STAGEDIR}${DOCSDIR}
+
+do-install-DOXYGEN-on:
+ (cd ${WRKSRC}/doc && ${COPYTREE_SHARE} "html latex" ${STAGEDIR}${DOCSDIR})
+ ${INSTALL_MAN} ${WRKSRC}/doc/man/man3/*.3 ${STAGEDIR}${PREFIX}/share/man/man3
+
+.include <bsd.port.mk>
diff --git a/devel/libcircle/distinfo b/devel/libcircle/distinfo
new file mode 100644
index 000000000000..b1f5fe57b16e
--- /dev/null
+++ b/devel/libcircle/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1775666666
+SHA256 (libcircle-0.3.0.tar.gz) = 5ce38eb5b3c2b394bca1316310758f276c893dd3f4c15d7bc14ea05d3110ce58
+SIZE (libcircle-0.3.0.tar.gz) = 385353
diff --git a/devel/libcircle/pkg-descr b/devel/libcircle/pkg-descr
new file mode 100644
index 000000000000..ee3388e35e0f
--- /dev/null
+++ b/devel/libcircle/pkg-descr
@@ -0,0 +1,8 @@
+libcircle provides an API for distributing embarrassingly parallel workloads
+across MPI ranks using a distributed work queue.
+
+Applications register callbacks to create and process work items, while the
+library handles load balancing, termination detection, and optional global
+reductions. It is commonly used on large HPC filesystems to traverse directory
+trees and perform file operations in parallel on hundreds or thousands of
+processes.
diff --git a/devel/libcircle/pkg-plist b/devel/libcircle/pkg-plist
new file mode 100644
index 000000000000..db817e8db52e
--- /dev/null
+++ b/devel/libcircle/pkg-plist
@@ -0,0 +1,11 @@
+include/libcircle.h
+%%STATIC%%lib/libcircle.a
+%%SHARED%%lib/libcircle.so
+%%SHARED%%lib/libcircle.so.2
+%%SHARED%%lib/libcircle.so.2.1.1
+libdata/pkgconfig/libcircle.pc
+%%DOXYGEN%%share/man/man3/CIRCLE_handle.3.gz
+%%DOXYGEN%%share/man/man3/lib.c.3.gz
+%%DOXYGEN%%share/man/man3/queue.c.3.gz
+%%DOXYGEN%%share/man/man3/token.c.3.gz
+%%DOXYGEN%%share/man/man3/worker.c.3.gz