aboutsummaryrefslogtreecommitdiff
path: root/misc/openclaw/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'misc/openclaw/Makefile')
-rw-r--r--misc/openclaw/Makefile43
1 files changed, 40 insertions, 3 deletions
diff --git a/misc/openclaw/Makefile b/misc/openclaw/Makefile
index e95bb67aebd8..d9d96a21ef7c 100644
--- a/misc/openclaw/Makefile
+++ b/misc/openclaw/Makefile
@@ -1,6 +1,5 @@
PORTNAME= openclaw
-DISTVERSION= 2026.4.15
-PORTREVISION= 3
+DISTVERSION= 2026.4.29
CATEGORIES= misc # machine-learning
PKGNAMESUFFIX= -ai-gateway
DISTFILES= ${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX}
@@ -16,7 +15,8 @@ FETCH_DEPENDS= curl:ftp/curl \
jq:textproc/jq \
npm:www/npm \
${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss
-BUILD_DEPENDS= npm:www/npm \
+BUILD_DEPENDS= cmake:devel/cmake \
+ npm:www/npm \
vips>=8.17.2:graphics/vips
RUN_DEPENDS= vips>=8.17.2:graphics/vips
@@ -45,11 +45,15 @@ SKILL_DEPENDENCIES_RUN_DEPENDS= blogwatcher:misc/blogwatcher \
grizzly:misc/grizzly \
jq:textproc/jq \
memo:misc/memo \
+ nano-pdf:textproc/nano-pdf \
op:security/op \
rg:textproc/ripgrep \
+ sag:audio/sag \
songsee:audio/songsee \
+ sonos:misc/sonoscli \
spotify_player:audio/spotify-player \
tmux:sysutils/tmux \
+ wacli:misc/wacli \
whisper:misc/py-openai-whisper
PACKAGE_NAME= openclaw
@@ -59,12 +63,20 @@ PLIST_SUB= NODE_ARCH=${NODE_ARCH}
FETCH_SCRIPT= ${PORTSDIR}/Tools/scripts/npmjs-fetch-with-dependencies.sh
+# Binary NodeJS modules that require building for the target platform:
+# - sharp: Fast image processing library for reading, manipulating, and encoding images
+# - koffi: C foreign function interface (FFI) for calling native libraries
+# - node-addon-api: Helper library for building native Node.js modules
+
dep_sharp_npm_name= sharp
dep_sharp_version= 0.34.5
+dep_koffi_npm_name= koffi
+dep_koffi_version= 2.16.1
dep_node_addon_api_npm_name= node-addon-api
dep_node_addon_api_version= 8.5.0
DISTFILES+= sharp-${dep_sharp_version}${EXTRACT_SUFX} \
+ koffi-${dep_koffi_version}${EXTRACT_SUFX} \
node-addon-api-${dep_node_addon_api_version}${EXTRACT_SUFX}
DD= ${DISTDIR}/${DIST_SUBDIR}
@@ -83,6 +95,12 @@ do-fetch:
${FILESDIR}/package-lock-sharp.json \
${DD}/sharp-${dep_sharp_version}${EXTRACT_SUFX}; \
fi
+ @if ! [ -f ${DD}/koffi-${dep_koffi_version}${EXTRACT_SUFX} ]; then \
+ ${SETENV} TMPDIR=${WRKDIR} LOCALBASE=${LOCALBASE} ${FETCH_SCRIPT} \
+ ${dep_koffi_npm_name} ${dep_koffi_version} \
+ ${FILESDIR}/package-lock-koffi.json \
+ ${DD}/koffi-${dep_koffi_version}${EXTRACT_SUFX}; \
+ fi
@if ! [ -f ${DD}/node-addon-api-${dep_node_addon_api_version}${EXTRACT_SUFX} ]; then \
${SETENV} TMPDIR=${WRKDIR} LOCALBASE=${LOCALBASE} ${FETCH_SCRIPT} \
${dep_node_addon_api_npm_name} ${dep_node_addon_api_version} \
@@ -104,6 +122,13 @@ do-build:
${MKDIR} ${WRKSRC}/node_modules/openclaw/node_modules/@img/sharp-freebsd-${NODE_ARCH} && \
${CP} build/Release/sharp-freebsd-${NODE_ARCH}.node \
${WRKSRC}/node_modules/openclaw/node_modules/@img/sharp-freebsd-${NODE_ARCH}/sharp.node
+ @${ECHO_MSG} "====> Building koffi for FreeBSD..."
+ @cd ${WRKDIR}/${dep_koffi_npm_name}-${dep_koffi_version}/node_modules/${dep_koffi_npm_name} && \
+ ${SETENV} HOME=${WRKDIR} PYTHON=${PYTHON_CMD} \
+ node src/cnoke/cnoke.js build -P . -D src/koffi && \
+ ${MKDIR} ${WRKSRC}/node_modules/openclaw/node_modules/koffi/build/koffi/freebsd_${NODE_ARCH} && \
+ ${CP} $$(${FIND} ${WRKDIR}/${dep_koffi_npm_name}-${dep_koffi_version}/node_modules/${dep_koffi_npm_name}/build/koffi/freebsd_${NODE_ARCH} -name "koffi.node" -type f | ${HEAD} -1) \
+ ${WRKSRC}/node_modules/openclaw/node_modules/koffi/build/koffi/freebsd_${NODE_ARCH}/koffi.node
do-install:
# install node_modules
@@ -147,4 +172,16 @@ post-patch-EXTEND_TYPING_TTL_TIMEOUT-on:
-exec ${REINPLACE_CMD} \
-e 's/typingTtlMs = 2 \* 6e4/typingTtlMs = 18000000/' {} \;
+post-install:
+ # remove empty directories in STAGEDIR
+ @${FIND} ${STAGEDIR}${PREFIX}/lib/node_modules -type d -empty -delete
+ # remove lancedb plugin to ensure it is never enabled at runtime
+ # not to be removed until https://github.com/lancedb/lancedb/issues/3338 is resolved and the plugin can be safely re-enabled
+ @${RM} -r ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/dist/extensions/memory-lancedb
+ @${RM} ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/docs/plugins/memory-lancedb.md
+ @${FIND} ${STAGEDIR}${PREFIX}/lib/node_modules -type d -empty -delete
+ # autoplist: 32k+ files with randomizing strings in names warrant autoplist
+ @cd ${STAGEDIR}${PREFIX} && \
+ ${FIND} * -type f -or -type l >> ${TMPPLIST}
+
.include <bsd.port.mk>