diff --git a/misc/nanocoder/Makefile b/misc/nanocoder/Makefile index 182d5ddc2c85..92224ad141a8 100644 --- a/misc/nanocoder/Makefile +++ b/misc/nanocoder/Makefile @@ -1,81 +1,81 @@ PORTNAME= nanocoder DISTVERSION= 1.25.1 CATEGORIES= misc # machine-learning DISTFILES= ${DISTNAME}${EXTRACT_SUFX} EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX} MAINTAINER= yuri@FreeBSD.org COMMENT= Local-first coding agent running in your terminal WWW= https://github.com/Nano-Collective/nanocoder LICENSE= MIT .for arch in armv6 armv7 i386 mips powerpc powerpcspe BROKEN_${arch}= compilation fails on 32-bit platforms: https://github.com/withcatai/node-llama-cpp/issues/593 .endfor FETCH_DEPENDS= npm:www/npm \ jq:textproc/jq \ ${LOCALBASE}/share/certs/ca-root-nss.crt:security/ca_root_nss BUILD_DEPENDS= npm:www/npm USES= cmake:indirect ninja:build nodejs:run PACKAGE_NAME= @nanocollective/nanocoder LLAMA_CPP_RELEASE= b8390 MASTER_SITES_llama_cpp= https://github.com/ggml-org/llama.cpp/archive/refs/tags/ DISTFILES+= ${LLAMA_CPP_RELEASE}${EXTRACT_SUFX}:llama_cpp NODE_LLAMA_CPP_DIR= ${WRKSRC}/node_modules/@nanocollective/nanocoder/node_modules/node-llama-cpp FETCH_SCRIPT= ${PORTSDIR}/Tools/scripts/npmjs-fetch-with-dependencies.sh +NODE_ARCH= ${ARCH:S/amd64/x64/:S/aarch64/arm64/:S/i386/ia32/:S/powerpc64le/ppc64/:S/powerpc64/ppc64/:C/armv[67]/arm/} # modeled after electron.mk +PLIST_SUB= NODE_ARCH=${NODE_ARCH} + do-fetch: @if ! [ -f ${DISTDIR}/${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX} ]; then \ ${MKDIR} ${DISTDIR} && \ ${ECHO} "====> Fetching ${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX}" && \ ${SETENV} TMPDIR=${WRKDIR} LOCALBASE=${LOCALBASE} ${FETCH_SCRIPT} \ ${PACKAGE_NAME} ${DISTVERSION} \ ${FILESDIR}/package-lock.json \ ${DISTDIR}/${PORTNAME}-${DISTVERSION}${EXTRACT_SUFX}; \ fi post-fetch: @if ! [ -f ${DISTDIR}/${LLAMA_CPP_RELEASE}${EXTRACT_SUFX} ]; then \ cd ${DISTDIR} && \ ${FETCH_CMD} \ ${MASTER_SITES_llama_cpp}${LLAMA_CPP_RELEASE}${EXTRACT_SUFX}; \ fi post-extract: @tar -xzf ${DISTDIR}/${LLAMA_CPP_RELEASE}${EXTRACT_SUFX} \ -C ${NODE_LLAMA_CPP_DIR}/llama/ @${MV} ${NODE_LLAMA_CPP_DIR}/llama/llama.cpp-${LLAMA_CPP_RELEASE} \ ${NODE_LLAMA_CPP_DIR}/llama/llama.cpp do-build: @cd ${WRKSRC} && \ npm rebuild --nodedir=${LOCALBASE} -NODE_ARCH= ${ARCH:S/amd64/x64/:S/aarch64/arm64/:S/i386/ia32/:S/powerpc64le/ppc64le/:S/powerpc64/ppc64/:C/armv[67]/arm/} # modeled after electron.mk -PLIST_SUB= NODE_ARCH=${NODE_ARCH} - do-install: # install files cd ${WRKSRC} && \ ${COPYTREE_SHARE} . ${STAGEDIR}${PREFIX}/lib # remove unnecessary files @${RM} -rf ${STAGEDIR}${PREFIX}/lib/*.json # update shebang to use system node @${REINPLACE_CMD} -i '' \ -e "s|#!/usr/bin/env node|#!${PREFIX}/bin/node|" \ ${STAGEDIR}${PREFIX}/lib/node_modules/@nanocollective/nanocoder/node_modules/cli-highlight/dist/cli.js # delete cmake files: CMake* ${FIND} ${STAGEDIR}${PREFIX}/lib/node_modules/@nanocollective/nanocoder/node_modules/node-llama-cpp/ -name 'CMake*' | ${XARGS} ${RM} -r # set exec bit @${CHMOD} +x ${STAGEDIR}${PREFIX}/lib/node_modules/.bin/${PORTNAME} # create symlink in bin @${RLN} -s ${STAGEDIR}${PREFIX}/lib/node_modules/.bin/${PORTNAME} ${STAGEDIR}${PREFIX}/bin/${PORTNAME} .include diff --git a/misc/nanocoder/files/patch-node__modules__nanocollective_nanocoder_node__modules_node-llama-cpp_llama_llama.cpp_ggml_src_ggml-cpu_CMakeLists.txt b/misc/nanocoder/files/patch-node__modules__nanocollective_nanocoder_node__modules_node-llama-cpp_llama_llama.cpp_ggml_src_ggml-cpu_CMakeLists.txt new file mode 100644 index 000000000000..2e5e13acabb5 --- /dev/null +++ b/misc/nanocoder/files/patch-node__modules__nanocollective_nanocoder_node__modules_node-llama-cpp_llama_llama.cpp_ggml_src_ggml-cpu_CMakeLists.txt @@ -0,0 +1,11 @@ +--- node_modules/@nanocollective/nanocoder/node_modules/node-llama-cpp/llama/llama.cpp/ggml/src/ggml-cpu/CMakeLists.txt.orig 2026-04-22 10:10:30 UTC ++++ node_modules/@nanocollective/nanocoder/node_modules/node-llama-cpp/llama/llama.cpp/ggml/src/ggml-cpu/CMakeLists.txt +@@ -403,8 +403,6 @@ function(ggml_add_cpu_backend_variant_impl tag_name) + list(APPEND ARCH_FLAGS -mcpu=power9) + elseif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "ppc64le") + list(APPEND ARCH_FLAGS -mcpu=powerpc64le -mtune=native) +- else() +- list(APPEND ARCH_FLAGS -mcpu=native -mtune=native -mpowerpc64) + endif() + elseif(GGML_CPU_ALL_VARIANTS) + # Begin with the lowest baseline