git: d63e1e73f569 - main - textproc/py-deepsearch-glm: New port: Graph Language Models

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Fri, 03 Jul 2026 06:31:16 UTC
The branch main has been updated by yuri:

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

commit d63e1e73f569601f958f98d364953eda41fa88d0
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2026-07-03 04:48:52 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2026-07-03 06:31:10 +0000

    textproc/py-deepsearch-glm: New port: Graph Language Models
---
 textproc/Makefile                    |  1 +
 textproc/py-deepsearch-glm/Makefile  | 76 ++++++++++++++++++++++++++++++++++++
 textproc/py-deepsearch-glm/distinfo  | 19 +++++++++
 textproc/py-deepsearch-glm/pkg-descr |  9 +++++
 4 files changed, 105 insertions(+)

diff --git a/textproc/Makefile b/textproc/Makefile
index afb7a8b4b0ba..00141e881994 100644
--- a/textproc/Makefile
+++ b/textproc/Makefile
@@ -1370,6 +1370,7 @@
     SUBDIR += py-custom_inherit
     SUBDIR += py-cyclonedx-python-lib
     SUBDIR += py-dbfread
+    SUBDIR += py-deepsearch-glm
     SUBDIR += py-dialect
     SUBDIR += py-dict2xml
     SUBDIR += py-diff-match-patch
diff --git a/textproc/py-deepsearch-glm/Makefile b/textproc/py-deepsearch-glm/Makefile
new file mode 100644
index 000000000000..9b7bb21c16ca
--- /dev/null
+++ b/textproc/py-deepsearch-glm/Makefile
@@ -0,0 +1,76 @@
+PORTNAME=	deepsearch-glm
+PORTVERSION=	1.0.0
+CATEGORIES=	textproc python
+MASTER_SITES=	PYPI \
+		https://codeload.github.com/PeterStaar-IBM/fastText/tar.gz/9d5b2a2b364f49ed2707ff3be48a0f1ba6d86022?dummy=/:fasttext \
+		https://codeload.github.com/PCRE2Project/pcre2/tar.gz/pcre2-10.44?dummy=/:pcre2 \
+		https://codeload.github.com/emilk/loguru/tar.gz/4adaa185883e3c04da25913579c451d3c32cfac1?dummy=/:loguru \
+		https://codeload.github.com/fmtlib/fmt/tar.gz/10.2.1?dummy=/:fmt \
+		https://codeload.github.com/google/sentencepiece/tar.gz/v0.2.0?dummy=/:sentencepiece \
+		https://codeload.github.com/jarro2783/cxxopts/tar.gz/v3.2.0?dummy=/:cxxopts \
+		https://codeload.github.com/nemtrif/utfcpp/tar.gz/v4.0.5?dummy=/:utfcpp \
+		https://codeload.github.com/nlohmann/json/tar.gz/v3.11.3?dummy=/:json
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+DISTNAME=	deepsearch_glm-${PORTVERSION}
+# External dependencies from GitHub (cmake ExternalProject/FetchContent)
+DISTFILES=	${DISTNAME}${EXTRACT_SUFX} \
+		PeterStaar-IBM-fastText-9d5b2a2b364f49ed2707ff3be48a0f1ba6d86022_GH0.tar.gz:fasttext \
+		PCRE2Project-pcre2-pcre2-10.44_GH0.tar.gz:pcre2 \
+		emilk-loguru-4adaa185883e3c04da25913579c451d3c32cfac1_GH0.tar.gz:loguru \
+		fmtlib-fmt-10.2.1_GH0.tar.gz:fmt \
+		google-sentencepiece-v0.2.0_GH0.tar.gz:sentencepiece \
+		jarro2783-cxxopts-v3.2.0_GH0.tar.gz:cxxopts \
+		nemtrif-utfcpp-v4.0.5_GH0.tar.gz:utfcpp \
+		nlohmann-json-v3.11.3_GH0.tar.gz:json
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Graph Language Models
+WWW=		https://pypi.org/project/deepsearch-glm/
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+BUILD_DEPENDS=	${PYTHON_PKGNAMEPREFIX}pybind11>0:devel/py-pybind11@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}poetry-core>0:devel/py-poetry-core@${PY_FLAVOR}
+
+USES=		cmake:indirect python
+USE_PYTHON=	pep517 concurrent autoplist
+
+post-extract:
+	@${REINPLACE_CMD} -e 's/ resolv//g' ${WRKSRC}/cmake/os_opts.cmake
+	@${REINPLACE_CMD} -e 's|^build = "build\.py"|build = "build_script.py"|' ${WRKSRC}/pyproject.toml
+	@${MV} ${WRKSRC}/build.py ${WRKSRC}/build_script.py
+# Extract external dependencies to locations cmake ExternalProject expects
+	@${MKDIR} ${WRKSRC}/build/extlib_fasttext/src/extlib_fasttext
+	@${TAR} -C ${WRKSRC}/build/extlib_fasttext/src/extlib_fasttext -xf ${DISTDIR}/PeterStaar-IBM-fastText-9d5b2a2b364f49ed2707ff3be48a0f1ba6d86022_GH0.tar.gz --strip-components 1
+	@${MKDIR} ${WRKSRC}/build/extlib_pcre2/src/extlib_pcre2
+	@${TAR} -C ${WRKSRC}/build/extlib_pcre2/src/extlib_pcre2 -xf ${DISTDIR}/PCRE2Project-pcre2-pcre2-10.44_GH0.tar.gz --strip-components 1
+	@${MKDIR} ${WRKSRC}/build/_deps/logurugitrepo-src
+	@${TAR} -C ${WRKSRC}/build/_deps/logurugitrepo-src -xf ${DISTDIR}/emilk-loguru-4adaa185883e3c04da25913579c451d3c32cfac1_GH0.tar.gz --strip-components 1
+	@${MKDIR} ${WRKSRC}/build/extlib_fmt/src/extlib_fmt
+	@${TAR} -C ${WRKSRC}/build/extlib_fmt/src/extlib_fmt -xf ${DISTDIR}/fmtlib-fmt-10.2.1_GH0.tar.gz --strip-components 1
+	@${MKDIR} ${WRKSRC}/build/extlib_sentencepiece/src/extlib_sentencepiece
+	@${TAR} -C ${WRKSRC}/build/extlib_sentencepiece/src/extlib_sentencepiece -xf ${DISTDIR}/google-sentencepiece-v0.2.0_GH0.tar.gz --strip-components 1
+	@${MKDIR} ${WRKSRC}/build/extlib_cxxopts/src/extlib_cxxopts
+	@${TAR} -C ${WRKSRC}/build/extlib_cxxopts/src/extlib_cxxopts -xf ${DISTDIR}/jarro2783-cxxopts-v3.2.0_GH0.tar.gz --strip-components 1
+	@${MKDIR} ${WRKSRC}/build/extlib_utf8/src/extlib_utf8
+	@${TAR} -C ${WRKSRC}/build/extlib_utf8/src/extlib_utf8 -xf ${DISTDIR}/nemtrif-utfcpp-v4.0.5_GH0.tar.gz --strip-components 1
+	@${MKDIR} ${WRKSRC}/build/extlib_json/src/extlib_json
+	@${TAR} -C ${WRKSRC}/build/extlib_json/src/extlib_json -xf ${DISTDIR}/nlohmann-json-v3.11.3_GH0.tar.gz --strip-components 1
+# Patch cmake files to skip git downloads - use pre-extracted sources
+	@${REINPLACE_CMD} -e '/UPDATE_COMMAND ""/d' \
+		-e 's|GIT_REPOSITORY .*|DOWNLOAD_COMMAND ""|' \
+		-e 's|GIT_TAG .*|UPDATE_COMMAND ""|' \
+		${WRKSRC}/cmake/extlib_fmt.cmake \
+		${WRKSRC}/cmake/extlib_json.cmake \
+		${WRKSRC}/cmake/extlib_cxxopts.cmake \
+		${WRKSRC}/cmake/extlib_pcre2.cmake \
+		${WRKSRC}/cmake/extlib_fasttext.cmake \
+		${WRKSRC}/cmake/extlib_utf8.git.cmake \
+		${WRKSRC}/cmake/extlib_sentencepiece.cmake
+# Patch loguru FetchContent to use pre-extracted source
+	@${REINPLACE_CMD} -e 's|GIT_REPOSITORY .*|SOURCE_DIR "${WRKSRC}/build/_deps/logurugitrepo-src"|' \
+		-e '/GIT_TAG .*/d' \
+		${WRKSRC}/cmake/extlib_loguru.cmake
+
+.include <bsd.port.mk>
diff --git a/textproc/py-deepsearch-glm/distinfo b/textproc/py-deepsearch-glm/distinfo
new file mode 100644
index 000000000000..34dcce8055a4
--- /dev/null
+++ b/textproc/py-deepsearch-glm/distinfo
@@ -0,0 +1,19 @@
+TIMESTAMP = 1783053469
+SHA256 (deepsearch_glm-1.0.0.tar.gz) = e8dce88ac519a693c260f28bd3c4ec409811e65ade84fb508f6c6e37ca065e62
+SIZE (deepsearch_glm-1.0.0.tar.gz) = 2401014
+SHA256 (PeterStaar-IBM-fastText-9d5b2a2b364f49ed2707ff3be48a0f1ba6d86022_GH0.tar.gz) = 3bbbee9dc713371ab39d5b1eb3dc60980e26aaaa76ae3e3d58364f3f11fdaa41
+SIZE (PeterStaar-IBM-fastText-9d5b2a2b364f49ed2707ff3be48a0f1ba6d86022_GH0.tar.gz) = 4038103
+SHA256 (PCRE2Project-pcre2-pcre2-10.44_GH0.tar.gz) = 07a002e8216382a96f722bc4a831f3d77457fe3e9e62a6dff250a2dd0e9c5e6d
+SIZE (PCRE2Project-pcre2-pcre2-10.44_GH0.tar.gz) = 2930559
+SHA256 (emilk-loguru-4adaa185883e3c04da25913579c451d3c32cfac1_GH0.tar.gz) = 1424f3ce814fa413e5fbdf2949994d455e3914560f958d2931ba869349a686a8
+SIZE (emilk-loguru-4adaa185883e3c04da25913579c451d3c32cfac1_GH0.tar.gz) = 253860
+SHA256 (fmtlib-fmt-10.2.1_GH0.tar.gz) = 1250e4cc58bf06ee631567523f48848dc4596133e163f02615c97f78bab6c811
+SIZE (fmtlib-fmt-10.2.1_GH0.tar.gz) = 854665
+SHA256 (google-sentencepiece-v0.2.0_GH0.tar.gz) = 9970f0a0afee1648890293321665e5b2efa04eaec9f1671fcf8048f456f5bb86
+SIZE (google-sentencepiece-v0.2.0_GH0.tar.gz) = 11980811
+SHA256 (jarro2783-cxxopts-v3.2.0_GH0.tar.gz) = 9f43fa972532e5df6c5fd5ad0f5bac606cdec541ccaf1732463d8070bbb7f03b
+SIZE (jarro2783-cxxopts-v3.2.0_GH0.tar.gz) = 160534
+SHA256 (nemtrif-utfcpp-v4.0.5_GH0.tar.gz) = ffc668a310e77607d393f3c18b32715f223da1eac4c4d6e0579a11df8e6b59cf
+SIZE (nemtrif-utfcpp-v4.0.5_GH0.tar.gz) = 34139
+SHA256 (nlohmann-json-v3.11.3_GH0.tar.gz) = 0d8ef5af7f9794e3263480193c491549b2ba6cc74bb018906202ada498a79406
+SIZE (nlohmann-json-v3.11.3_GH0.tar.gz) = 8053705
diff --git a/textproc/py-deepsearch-glm/pkg-descr b/textproc/py-deepsearch-glm/pkg-descr
new file mode 100644
index 000000000000..583b793ee63c
--- /dev/null
+++ b/textproc/py-deepsearch-glm/pkg-descr
@@ -0,0 +1,9 @@
+deepsearch-glm is a specialized Python library developed by IBM to create
+and deploy fast Graph Language Models. It enables advanced data extraction
+and structural document understanding at scale.
+
+Key Capabilities
+* Entity Extraction: Automatically isolates key domain terms from text.
+* Relationship Mapping: Identifies connections between data points.
+* Advanced NLP: Applies semantic parsing directly on raw documents.
+* Docling Integration: Pairs natively with structured document tools.