diff options
Diffstat (limited to 'misc/github-copilot-language-server/Makefile')
| -rw-r--r-- | misc/github-copilot-language-server/Makefile | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/misc/github-copilot-language-server/Makefile b/misc/github-copilot-language-server/Makefile new file mode 100644 index 000000000000..5fdc267fabf8 --- /dev/null +++ b/misc/github-copilot-language-server/Makefile @@ -0,0 +1,132 @@ +PORTNAME= github-copilot-language-server +DISTVERSION= 1.399.0 +CATEGORIES= misc # machine-learning +DISTFILES= ${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX} \ + ${NODE_HEADERS}${EXTRACT_SUFX} +DIST_SUBDIR= ${PORTNAME} + +MAINTAINER= yuri@FreeBSD.org +COMMENT= GitHub Copilot Language Server +WWW= https://github.com/github/copilot-language-server-release + +LICENSE= MIT +LICENSE_FILE= ${WRKSRC}/node_modules/${PACKAGE_NAME}/LICENSE + +ONLY_FOR_ARCHS= aarch64 amd64 +ONLY_FOR_ARCHS_REASON= binaries are installed in folders with architecture encoded in them, patches are welcome to fix this limitation + +FETCH_DEPENDS= npm:www/npm \ + jq:textproc/jq +BUILD_DEPENDS= npm:www/npm \ + krb5>0:security/krb5 \ + sqlite3>0:databases/sqlite3 +RUN_DEPENDS= krb5>0:security/krb5 \ + sqlite3>0:databases/sqlite3 \ + ripgrep>0:textproc/ripgrep + +USES= nodejs:run pkgconfig python:build + +WRKSRC= ${WRKDIR}/copilot-language-server-${DISTVERSION} + +PACKAGE_NAME= @github/copilot-language-server + +NODE_HEADERS= node-v24.11.0-headers + +JS_ARCH= ${ARCH:S/amd64/x64/:S/aarch64/arm64/} +PLIST_SUB= JS_ARCH=${JS_ARCH} + +DD= ${DISTDIR}/${DIST_SUBDIR} + +FETCH_SCRIPT= ${PORTSDIR}/Tools/scripts/npmjs-fetch-with-dependencies.sh + +DEP_MODULES= policy_watcher sqlite3 kerberos +dep_policy_watcher_npm_name= @vscode/policy-watcher +dep_policy_watcher_version= 1.3.5 +dep_sqlite3_npm_name= @vscode/sqlite3 +dep_sqlite3_version= 5.1.10-vscode +dep_kerberos_npm_name= kerberos +dep_kerberos_version= 7.0.0 + +.for dep in ${DEP_MODULES} +DISTFILES+= ${dep:S/_/-/g}-${dep_${dep}_version}${EXTRACT_SUFX} +.endfor + +#NO_CHECKSUM= yes + +do-fetch: + @if ! [ -f ${DD}/${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX} ] || \ + ! [ -f ${DD}/${NODE_HEADERS}${EXTRACT_SUFX} ] || \ + ! [ -f ${DD}/policy-watcher-${dep_policy_watcher_version}${EXTRACT_SUFX} ] || \ + ! [ -f ${DD}/sqlite3-${dep_sqlite3_version}${EXTRACT_SUFX} ] || \ + ! [ -f ${DD}/kerberos-${dep_kerberos_version}${EXTRACT_SUFX} ]; then \ + ${MKDIR} ${DD} && \ + ${ECHO} "====> Fetching ${NODE_HEADERS}${EXTRACT_SUFX}" && \ + ${FETCH_CMD} -q https://nodejs.org/download/release/v24.11.0/${NODE_HEADERS}${EXTRACT_SUFX} -o ${DD}/${NODE_HEADERS}${EXTRACT_SUFX} && \ + ${ECHO} "====> Fetching dependency policy-watcher" && \ + ${SETENV} TMPDIR=${WRKDIR} ${FETCH_SCRIPT} \ + ${dep_policy_watcher_npm_name} ${dep_policy_watcher_version} \ + ${FILESDIR}/package-lock-policy-watcher.json \ + ${DD}/policy-watcher-${dep_policy_watcher_version}${EXTRACT_SUFX} && \ + ${ECHO} "====> Fetching dependency sqlite3" && \ + ${SETENV} TMPDIR=${WRKDIR} ${FETCH_SCRIPT} \ + ${dep_sqlite3_npm_name} ${dep_sqlite3_version} \ + ${FILESDIR}/package-lock-sqlite3.json \ + ${DD}/sqlite3-${dep_sqlite3_version}${EXTRACT_SUFX} && \ + ${ECHO} "====> Fetching dependency kerberos" && \ + ${SETENV} TMPDIR=${WRKDIR} ${FETCH_SCRIPT} \ + ${dep_kerberos_npm_name} ${dep_kerberos_version} \ + ${FILESDIR}/package-lock-kerberos.json \ + ${DD}/kerberos-${dep_kerberos_version}${EXTRACT_SUFX} && \ + ${ECHO} "====> Fetching ${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX}" && \ + ${SETENV} TMPDIR=${WRKDIR} ${FETCH_SCRIPT} \ + ${PACKAGE_NAME} ${DISTVERSION} \ + ${FILESDIR}/package-lock.json \ + ${DD}/${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX}; \ + fi + +do-build: + # Create directory for FreeBSD native modules + @${MKDIR} ${WRKSRC}/node_modules/${PACKAGE_NAME}/dist/compiled/freebsd/${JS_ARCH} + @${ECHO_MSG} "====> Building vscode-policy-watcher..." + @cd ${WRKDIR}/policy-watcher-${dep_policy_watcher_version}/node_modules/${dep_policy_watcher_npm_name} && \ + ${SETENV} HOME=${WRKDIR} PYTHON=${PYTHON_CMD} CXXFLAGS="-I${LOCALBASE}/include" \ + npm rebuild --nodedir=${WRKDIR}/${NODE_HEADERS:S/-headers//} && \ + ${CP} build/Release/vscode-policy-watcher.node ${WRKSRC}/node_modules/${PACKAGE_NAME}/dist/compiled/freebsd/${JS_ARCH}/ + @${ECHO_MSG} "====> Building @vscode/sqlite3..." + @cd ${WRKDIR}/sqlite3-${dep_sqlite3_version}/node_modules/${dep_sqlite3_npm_name} && \ + ${SETENV} HOME=${WRKDIR} PYTHON=${PYTHON_CMD} CXXFLAGS="-I${LOCALBASE}/include" \ + npm rebuild --nodedir=${WRKDIR}/${NODE_HEADERS:S/-headers//} && \ + ${CP} build/Release/vscode-sqlite3.node ${WRKSRC}/node_modules/${PACKAGE_NAME}/dist/compiled/freebsd/${JS_ARCH}/node_sqlite3.node + @${ECHO_MSG} "====> Building kerberos..." + @cd ${WRKDIR}/kerberos-${dep_kerberos_version}/node_modules/${dep_kerberos_npm_name} && \ + ${SETENV} HOME=${WRKDIR} PYTHON=${PYTHON_CMD} CFLAGS="-I${LOCALBASE}/include" CXXFLAGS="-I${LOCALBASE}/include" LDFLAGS="-L${LOCALBASE}/lib" \ + npm rebuild --nodedir=${WRKDIR}/${NODE_HEADERS:S/-headers//} && \ + ${CP} build/Release/kerberos.node ${WRKSRC}/node_modules/${PACKAGE_NAME}/dist/compiled/freebsd/${JS_ARCH}/ + +do-install: + # install files + cd ${WRKSRC} && \ + ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/lib + # remove *.node files for other OSes + @${FIND} ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/dist/compiled -name "*\\.node" | \ + ${GREP} -v freebsd | \ + ${XARGS} ${RM} + # remove files for other OSes + @${FIND} ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/dist -name "*linux*" | ${XARGS} ${RM} -r + @${FIND} ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/dist -name "*win32*" | ${XARGS} ${RM} -r + @${FIND} ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/dist -name "*darwin*" | ${XARGS} ${RM} -r + # remove crypt32.node (Windows only) + @${RM} ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/dist/crypt32*.node + # update shebang to use system node + @${REINPLACE_CMD} -i '' \ + -e "s|#!/usr/bin/env node|#!${PREFIX}/bin/node|" \ + ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/dist/language-server.js + # set exec bit + @${CHMOD} +x ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/dist/language-server.js + # create symlink in bin + @${MKDIR} ${STAGEDIR}${PREFIX}/bin + @${LN} -s ../lib/node_modules/${PACKAGE_NAME}/dist/language-server.js ${STAGEDIR}${PREFIX}/bin/copilot-language-server + # strip binaries + @${FIND} ${STAGEDIR}${PREFIX}/lib/node_modules/${PACKAGE_NAME}/dist/compiled -name "*.node" | ${XARGS} ${STRIP_CMD} + +.include <bsd.port.mk> |
