diff --git a/devel/janet-lsp/Makefile b/devel/janet-lsp/Makefile new file mode 100644 --- /dev/null +++ b/devel/janet-lsp/Makefile @@ -0,0 +1,56 @@ +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 + +# To trick `portlint -A`, we use "install" (with quotes). +# +# `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 diff --git a/devel/janet-lsp/distinfo b/devel/janet-lsp/distinfo new file mode 100644 --- /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 --- /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 --- /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 --- /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