summaryrefslogtreecommitdiff
path: root/misc/kimi-code/Makefile
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-07-11 08:02:01 +0200
committercashmere <cashmere@autistici.org>2026-07-11 08:02:01 +0200
commit8a5980f117f1b45c7579cb1e18ca1ff098d1b332 (patch)
tree9ec739befc8246523aeba95e4973c881a307e4a3 /misc/kimi-code/Makefile
parenteb26defee0091d3d100ac1938aa99b346a479604 (diff)
downloadports-8a5980f117f1b45c7579cb1e18ca1ff098d1b332.tar.gz
misc/kimi-code: first port
Diffstat (limited to 'misc/kimi-code/Makefile')
-rw-r--r--misc/kimi-code/Makefile75
1 files changed, 75 insertions, 0 deletions
diff --git a/misc/kimi-code/Makefile b/misc/kimi-code/Makefile
new file mode 100644
index 0000000..d7c44ab
--- /dev/null
+++ b/misc/kimi-code/Makefile
@@ -0,0 +1,75 @@
+PORTNAME= kimi-code
+DISTVERSION= 0.23.5
+CATEGORIES= misc
+
+MAINTAINER= cashmere@autistici.org
+COMMENT= AI coding agent that runs in your terminal
+WWW= https://github.com/MoonshotAI/kimi-code
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/lib/node_modules/${PACKAGE_NAME}/LICENSE
+
+BUILD_DEPENDS= npm:www/npm
+FETCH_DEPENDS= npm:www/npm
+RUN_DEPENDS= bash:shells/bash
+
+USES= nodejs:build,run python:build
+
+PACKAGE_NAME= @moonshot-ai/kimi-code
+
+do-fetch:
+ @if ! [ -f ${DISTDIR}/${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX} ]; then ( \
+ ${MKDIR} -p ${WRKDIR}/${PORTNAME}-${DISTVERSION} && \
+ cd ${WRKDIR}/${PORTNAME}-${DISTVERSION} && \
+ if [ -f ${FILESDIR}/package-lock.json ]; then \
+ ${ECHO} '{"name":"kimi-code-installer","version":"1.0.0","dependencies":{"${PACKAGE_NAME}":"^${DISTVERSION}"}}' > package.json && \
+ ${CP} ${FILESDIR}/package-lock.json . ; \
+ ${SETENV} HOME=${WRKDIR} npm ci --ignore-scripts --global-style --legacy-peer-deps --omit=dev ; \
+ else \
+ ${ECHO} '{"name":"kimi-code-installer","version":"1.0.0"}' > package.json && \
+ npm install --package-lock-only --global-style --legacy-peer-deps ${PACKAGE_NAME}@${DISTVERSION} && \
+ ${CP} package-lock.json ${WRKDIR}/package-lock.json.generated && \
+ ${ECHO} "" && \
+ ${ECHO} "=====================================================================" && \
+ ${ECHO} "WARNING: package-lock.json not found in files/ directory" && \
+ ${ECHO} "Generated one at: ${WRKDIR}/package-lock.json.generated" && \
+ ${ECHO} "" && \
+ ${ECHO} "To enable reproducible builds, please:" && \
+ ${ECHO} " 1. mkdir -p ${.CURDIR}/files" && \
+ ${ECHO} " 2. cp ${WRKDIR}/package-lock.json.generated ${.CURDIR}/files/package-lock.json" && \
+ ${ECHO} " 3. Re-run 'make clean distclean && make fetch'" && \
+ ${ECHO} "=====================================================================" && \
+ ${ECHO} "" && \
+ ${SETENV} HOME=${WRKDIR} npm ci --ignore-scripts --global-style --legacy-peer-deps --omit=dev ; \
+ fi && \
+ ${MKDIR} -p lib/node_modules/@moonshot-ai && \
+ ${MKDIR} -p bin && \
+ ${MV} node_modules/${PACKAGE_NAME} lib/node_modules/@moonshot-ai/ && \
+ ${LN} -sf ../lib/node_modules/${PACKAGE_NAME}/dist/main.mjs bin/kimi && \
+ ${RM} -rf node_modules package.json package-lock.json && \
+ ${FIND} ${WRKDIR} -and -exec ${TOUCH} -h -d 1970-01-01T00:00:00Z {} \; && \
+ cd ${WRKDIR} && ${FIND} ${PORTNAME}-${DISTVERSION} -print0 | ${SORT} -z | \
+ ${TAR} czf ${DISTDIR}/${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX} --format=bsdtar --gid 0 --uid 0 --options gzip:!timestamp --no-recursion --null -T - \
+ ); fi
+
+do-build:
+ # Rebuild native modules for the target platform
+ @cd ${WRKSRC}/lib/node_modules/${PACKAGE_NAME}/node_modules/node-pty && \
+ ${SETENV} HOME=${WRKDIR} CFLAGS="-I${LOCALBASE}/include" CXXFLAGS="-I${LOCALBASE}/include" \
+ PYTHON=${PYTHON_CMD} npm rebuild --nodedir=${LOCALBASE}
+
+do-install:
+ # install files
+ @cd ${WRKSRC} && \
+ ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}
+ # fix shebang
+ ${REINPLACE_CMD} \
+ -e "s|#!/usr/bin/env node|#!${PREFIX}/bin/node|" \
+ ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/dist/main.mjs
+ # set exec bit
+ @${CHMOD} +x ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/dist/main.mjs
+ # remove bundled native prebuilds for other platforms
+ @${RM} -rf ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/native/darwin
+ @${RM} -rf ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/native/win32
+
+.include <bsd.port.mk>