blob: 6942681673b29cd0b27c63a76479c42a241bb1b7 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
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} npm_config_nodedir=${LOCALBASE} \
CFLAGS="-I${LOCALBASE}/include" CXXFLAGS="-I${LOCALBASE}/include" \
PYTHON=${PYTHON_CMD} npm rebuild
# Remove build artifacts that are not needed at runtime
@${RM} -f ${WRKSRC}/lib/node_modules/${PACKAGE_NAME}/node_modules/node-pty/build/Makefile \
${WRKSRC}/lib/node_modules/${PACKAGE_NAME}/node_modules/node-pty/build/binding.Makefile \
${WRKSRC}/lib/node_modules/${PACKAGE_NAME}/node_modules/node-pty/build/config.gypi \
${WRKSRC}/lib/node_modules/${PACKAGE_NAME}/node_modules/node-pty/build/pty.target.mk \
${WRKSRC}/lib/node_modules/${PACKAGE_NAME}/node_modules/node-pty/node-addon-api/*.mk \
${WRKSRC}/lib/node_modules/${PACKAGE_NAME}/node_modules/node-pty/node-addon-api/*.Makefile
@-${RMDIR} ${WRKSRC}/lib/node_modules/${PACKAGE_NAME}/node_modules/node-pty/node-addon-api 2>/dev/null || true
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 (none are usable on FreeBSD)
@${RM} -rf ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/native
.include <bsd.port.mk>
|