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