git: cfcfb64aa315 - main - devel/janet-lsp: Add port

From: Adam Weinberger <adamw_at_FreeBSD.org>
Date: Tue, 16 Dec 2025 15:41:05 UTC
The branch main has been updated by adamw:

URL: https://cgit.FreeBSD.org/ports/commit/?id=cfcfb64aa315e57ddb89ca949798ea2e3ded364e

commit cfcfb64aa315e57ddb89ca949798ea2e3ded364e
Author:     Dave Marker <dave@freedave.net>
AuthorDate: 2025-12-16 15:36:36 +0000
Commit:     Adam Weinberger <adamw@FreeBSD.org>
CommitDate: 2025-12-16 15:36:36 +0000

    devel/janet-lsp: Add port
    
    This is an LSP server for the Janet language (lang/janet), supporting:
    
    * Auto-completion based on symbols in the Janet Standard Library and defined in
      user code
    * On-hover definition of symbols as returned by (doc ,symbol)
    * Inline compiler errors
    * Pop-up signature help
    
    Differential Revision:  https://reviews.freebsd.org/D54238
---
 devel/Makefile                             |  1 +
 devel/janet-lsp/Makefile                   | 55 ++++++++++++++++++++++++++++++
 devel/janet-lsp/distinfo                   | 11 ++++++
 devel/janet-lsp/files/patch-project.janet  | 29 ++++++++++++++++
 devel/janet-lsp/files/patch-src_main.janet | 19 +++++++++++
 devel/janet-lsp/pkg-descr                  |  8 +++++
 6 files changed, 123 insertions(+)

diff --git a/devel/Makefile b/devel/Makefile
index c165c9779084..f32153b3d24b 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -1070,6 +1070,7 @@
     SUBDIR += ittapi
     SUBDIR += ivykis
     SUBDIR += jam
+    SUBDIR += janet-lsp
     SUBDIR += jansson
     SUBDIR += java-findbugs
     SUBDIR += jclassinfo
diff --git a/devel/janet-lsp/Makefile b/devel/janet-lsp/Makefile
new file mode 100644
index 000000000000..4e6d46e92a30
--- /dev/null
+++ b/devel/janet-lsp/Makefile
@@ -0,0 +1,55 @@
+PORTNAME=	janet-lsp
+PORTVERSION=	0.0.11
+DISTVERSIONPREFIX=	v
+CATEGORIES=	devel
+
+MAINTAINER=	dave@freedave.net
+COMMENT=	LSP for lang/janet
+WWW=		https://github.com/CFiggers/janet-lsp
+
+LICENSE=	MIT
+LICENSE_FILE=	${WRKSRC}/LICENSE
+
+# Technically jpm should depend on janet.
+BUILD_DEPENDS=	janet>=1.17.2:lang/janet \
+		jpm>=1.1.0:lang/jpm
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	CFiggers
+
+# These are a little more recent than latest releases. But there is no lockfile
+# so by default jpm(1) would use HEAD. There is also a conflict for cmd and the
+# CFiggers version is more recent (and required by janet-lsp).
+# Alphabetical order by project works but is coincidental and only because the
+# sole depenedency is 'judge' on 'cmd'.
+#
+# This ordering is respected in do-build.
+GH_TUPLE=	CFiggers:cmd:b0a34d6:cmd \
+		CFiggers:jayson:4f54041:jayson \
+		ianthehenry:judge:3b92185:judge \
+		janet-lang:spork:7b780cc:spork
+
+PLIST_FILES=	bin/janet-lsp
+
+# `jpm install` does not actually install anyway. This does a build (with no
+# dependency checking, which is why order matters) and install to the work
+# "jpm_tree". Which is where all the dependencies and the project expect to find
+# any of their build dependencies.
+#
+# Use GH_TUPLE project-hash as directory to avoid an unnecessary copy.
+do-build:
+.for dep in ${GH_TUPLE:C@^([^:]*):([^:]*):([^:]*):([^:]*)@\2-\3@}
+	cd ${WRKDIR}/${dep} && \
+	${LOCALBASE}/bin/jpm --tree=${WRKSRC}/jpm_tree "install"
+.endfor
+	cd ${WRKSRC} && ${LOCALBASE}/bin/jpm --tree=${WRKSRC}/jpm_tree build
+
+do-install:
+	${MKDIR} ${STAGEDIR}/bin
+	${INSTALL_PROGRAM} ${WRKSRC}/build/janet-lsp \
+		${STAGEDIR}${PREFIX}/bin/${PORTNAME}
+
+do-test:
+	cd ${WRKSRC} && jpm test -l
+
+.include <bsd.port.mk>
diff --git a/devel/janet-lsp/distinfo b/devel/janet-lsp/distinfo
new file mode 100644
index 000000000000..aea5462c51fe
--- /dev/null
+++ b/devel/janet-lsp/distinfo
@@ -0,0 +1,11 @@
+TIMESTAMP = 1765654720
+SHA256 (CFiggers-janet-lsp-v0.0.11_GH0.tar.gz) = 6dec1d75547cb99097415822605dc9d4bccd897bb1e206264b1280f38bbe824f
+SIZE (CFiggers-janet-lsp-v0.0.11_GH0.tar.gz) = 33575
+SHA256 (CFiggers-cmd-b0a34d6_GH0.tar.gz) = e5ed4f760d2d0beb607e554ed928232d908643bf5d1051a3d8e12fe9160e561c
+SIZE (CFiggers-cmd-b0a34d6_GH0.tar.gz) = 22306
+SHA256 (CFiggers-jayson-4f54041_GH0.tar.gz) = 2f88178be3f8cb44dad5cda8f140c85f010acb28820400998208ea3d292883c8
+SIZE (CFiggers-jayson-4f54041_GH0.tar.gz) = 3864843
+SHA256 (ianthehenry-judge-3b92185_GH0.tar.gz) = 904208053f675844d3e7cc18d21d893ecef356603df4ce1bdf6cd0933090163b
+SIZE (ianthehenry-judge-3b92185_GH0.tar.gz) = 31792
+SHA256 (janet-lang-spork-7b780cc_GH0.tar.gz) = 34cb553a153fa328b8e792435a2194700c822935baf184e9864d4fdabf50c37a
+SIZE (janet-lang-spork-7b780cc_GH0.tar.gz) = 267805
diff --git a/devel/janet-lsp/files/patch-project.janet b/devel/janet-lsp/files/patch-project.janet
new file mode 100644
index 000000000000..90c646d2579e
--- /dev/null
+++ b/devel/janet-lsp/files/patch-project.janet
@@ -0,0 +1,29 @@
+--- project.janet.orig	2025-09-05 00:00:02 UTC
++++ project.janet
+@@ -7,16 +7,17 @@
+                  "https://github.com/ianthehenry/judge.git"
+                  "https://github.com/CFiggers/cmd.git"])
+ 
+-# (def cflags
+-#   (case (os/which)
+-#     :windows []
+-#     ["-s"]))
++(def cflags
++  (case (os/which)
++    :windows []
++    :freebsd []
++    ["-s"]))
+ 
+-# (declare-executable
+-#   :name "janet-lsp"
+-#   :entry "src/main.janet"
+-#   :cflags cflags
+-#   :install true)
++(declare-executable
++  :name "janet-lsp"
++  :entry "src/main.janet"
++  :cflags cflags
++  :install true)
+ 
+ (declare-archive
+   :name "janet-lsp"
diff --git a/devel/janet-lsp/files/patch-src_main.janet b/devel/janet-lsp/files/patch-src_main.janet
new file mode 100644
index 000000000000..fd9ea4e1dfd2
--- /dev/null
+++ b/devel/janet-lsp/files/patch-src_main.janet
@@ -0,0 +1,19 @@
+--- src/main.janet.orig	2025-12-15 16:13:59 UTC
++++ src/main.janet
+@@ -16,12 +16,10 @@
+ (use judge)
+ 
+ (def version "0.0.11")
+-(def commit
+-  (with [proc (os/spawn ["git" "rev-parse" "--short" "HEAD"] :xp {:out :pipe})]
+-    (let [[out] (ev/gather
+-                  (ev/read (proc :out) :all)
+-                  (os/proc-wait proc))]
+-      (if out (string/trimr out) ""))))
++
++# `git rev-parse --short HEAD` is going to find the revision of the ports tree.
++# The tag should be enough so just supply a string for commit.
++(def commit "FreeBSD")
+ 
+ (def jpm-defs (require "../libs/jpm-defs"))
+ 
diff --git a/devel/janet-lsp/pkg-descr b/devel/janet-lsp/pkg-descr
new file mode 100644
index 000000000000..b5ade15bab58
--- /dev/null
+++ b/devel/janet-lsp/pkg-descr
@@ -0,0 +1,8 @@
+This is an LSP server for the Janet language, supporting:
+
+Current features:
+* Auto-completion based on symbols in the Janet Standard Library and defined in
+  user code
+* On-hover definition of symbols as returned by (doc ,symbol)
+* Inline compiler errors
+* Pop-up signature help