aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Marker <dave@freedave.net>2025-12-08 14:49:35 +0000
committerAdam Weinberger <adamw@FreeBSD.org>2025-12-08 15:02:44 +0000
commit680cb35b6474ec2b9bf91ae8950b5d79007b4a5a (patch)
tree220035dbc8f32958fc11a95b497d88c70eb41742
parent1a3017f645fc1413e74f4badf33ee66e9bab199a (diff)
devel/lua-language-server: Resurrect port
Once upon a time, I made a lua-language-server port. It was basically one giant hack, and it sortof worked, if you stood on one foot and didn't breathe. Eventually it became too big of a burden and I deprecated it, and it was subsequently removed back in 2022. Dave Marker took the old port, worked with markj to fix some longstanding bugs in an upstream dependency of a dependency, and got the port working in a far more stable state than I'd ever gotten it. It's worth noting that the build is remarkably complex. LuaLS is built by luamake (with its baffling DSL) which is, in turn, built using raw ninja which is.... awful to work with. It's also worth noting that Dave took this on as his first port. So, here comes--once again--the lua-language-server (aka LuaLS), the most popular and featureful LSP server for Lua. Differential Revision: https://reviews.freebsd.org/D54055
-rw-r--r--MOVED1
-rw-r--r--devel/Makefile1
-rw-r--r--devel/lua-language-server/Makefile90
-rw-r--r--devel/lua-language-server/distinfo47
-rw-r--r--devel/lua-language-server/files/lua-language-server.in8
-rw-r--r--devel/lua-language-server/files/patch-3rd_bee.lua_compile_common.lua22
-rw-r--r--devel/lua-language-server/files/patch-3rd_bee.lua_test_test.lua11
-rw-r--r--devel/lua-language-server/files/patch-3rd_luamake_bee.lua_test_test.lua11
-rw-r--r--devel/lua-language-server/files/patch-3rd_luamake_compile_ninja_freebsd.ninja29
-rw-r--r--devel/lua-language-server/pkg-descr16
10 files changed, 235 insertions, 1 deletions
diff --git a/MOVED b/MOVED
index b2c380e4e0d0..c93a515188b6 100644
--- a/MOVED
+++ b/MOVED
@@ -2313,7 +2313,6 @@ devel/py-python-Levenshtein|devel/py-Levenshtein|2023-08-17|Rename to match upst
devel/py-jaraco||2023-08-21|Remove obsoleted port
security/rubygem-openssl2|security/rubygem-openssl|2023-08-21|Remove obsoleted port. Use security/rubygem-openssl instead
games/cataclysm-dda-tiles|games/cataclysm-dda@tiles|2023-08-22|Moved to a flavored version
-devel/lua-language-server||2023-08-22|Has expired: Versions after 3.6.9 dump core (and do not compile)
security/py-netbox-secretstore|security/py-netbox-secrets|2023-08-22|Has expired: No longer maintained by upstream, not compatible with NetBox 3.5, please migrate to security/py-netbox-secrets
benchmarks/dbs||2023-08-22|Has expired: Broken on all supported releases for more than an year
databases/virtuoso||2023-08-22|Has expired: Broken on all supported FreeBSD releases for more than an year
diff --git a/devel/Makefile b/devel/Makefile
index 6c72f83e8824..549e995eb367 100644
--- a/devel/Makefile
+++ b/devel/Makefile
@@ -1623,6 +1623,7 @@
SUBDIR += lua-cjson
SUBDIR += lua-cqueues
SUBDIR += lua-gettext
+ SUBDIR += lua-language-server
SUBDIR += lua-lgi
SUBDIR += lua-libevent
SUBDIR += lua-lpeg
diff --git a/devel/lua-language-server/Makefile b/devel/lua-language-server/Makefile
new file mode 100644
index 000000000000..7018e67ed4c2
--- /dev/null
+++ b/devel/lua-language-server/Makefile
@@ -0,0 +1,90 @@
+PORTNAME= lua-language-server
+DISTVERSION= 3.16.0
+CATEGORIES= devel
+
+MAINTAINER= dave@freedave.net
+COMMENT= Lua development server and LSP client
+WWW= https://luals.github.io
+
+LICENSE= MIT
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USES= dos2unix lua:build ninja:make
+DOS2UNIX_REGEX= .*\.(cpp|h|lua|md|obj)
+USE_GITHUB= yes
+GH_ACCOUNT= LuaLS
+
+# There are (presently) 2 places with subtrees directly:
+# 3rd/ github.com/LuaLS/lua-language-server/tree/5f1226d/3rd
+# meta/3rd github.com/LuaLS/lua-language-server/tree/5f1226d/meta/3rd
+# But the 3rd/luamake, github.com/actboy168/luamake/tree/0e90778 brings in its own
+# separate copy of bee (not necessarily the same as in `3rd/`) that has to be
+# tracked down.
+GH_TUPLE= cppcxy:EmmyLuaCodeStyle:8500f3a:emmyluacodestyle/3rd/EmmyLuaCodeStyle \
+ actboy168:bee.lua:dd7853f:bee/3rd/bee.lua \
+ actboy168:json.lua:aff2a3d:json/3rd/json.lua \
+ love2d-community:love-api:8536392:love/3rd/love-api \
+ bjornbytes:lovr-docs:e89c753:lovr/3rd/lovr-api \
+ sqmedeiros:lpeglabel:912b0b9:lpeglabel/3rd/lpeglabel \
+ actboy168:luamake:0e90778:luamake/3rd/luamake \
+ LuaCATS:cocos4.0:c0b2259:cats_cocos40/meta/3rd/Cocos4.0 \
+ LuaCATS:defold:05379b4:cats_defold/meta/3rd/Defold \
+ LuaCATS:jass:80d85cb:cats_jass/meta/3rd/Jass \
+ LuaCATS:openresty:3bec36f:cats_openresty/meta/3rd/OpenResty \
+ LuaCATS:bee:c8ce19f:cats_bee/meta/3rd/bee \
+ LuaCATS:busted:5ed85d0:cats_busted/meta/3rd/busted \
+ LuaCATS:ffi-reflect:e9037ef:cats_ffi_reflect/meta/3rd/ffi-reflect \
+ LuaCATS:luafilesystem:9b5cfc1:cats_lfs/meta/3rd/lfs \
+ LuaCATS:love2d:98f7684:cats_love2d/meta/3rd/love2d \
+ LuaCATS:lovr:3ba215f:cats_lovr/meta/3rd/lovr \
+ LuaCATS:luaecs:21192fb:cats_luaecs/meta/3rd/luaecs \
+ LuaCATS:luassert:d3528bb:cats_luassert/meta/3rd/luassert \
+ LuaCATS:luv:3615eb1:cats_luv/meta/3rd/luv \
+ LuaCATS:skynet:afa6717:cats_skynet/meta/3rd/skynet \
+ actboy168:bee.lua:f242926:bee_luamake/3rd/luamake/bee.lua
+
+SUB_FILES= lua-language-server
+
+PLIST_FILES= bin/lua-language-server \
+ ${DATADIR_REL}/bin/lua-language-server \
+ ${DATADIR_REL}/bin/main.lua \
+ ${DATADIR_REL}/debugger.lua \
+ ${DATADIR_REL}/main.lua
+
+PORTDATA= locale meta script
+
+post-patch:
+ ${REINPLACE_CMD} -e 's|%LOCALBASE%|${LOCALBASE}|' ${WRKSRC}/3rd/bee.lua/compile/common.lua
+ ${REINPLACE_CMD} -e 's|%INOTIFY%|${_INOTIFY_}|' ${WRKSRC}/3rd/bee.lua/compile/common.lua
+ ${REINPLACE_CMD} -e 's|%LOCALBASE%|${LOCALBASE}|' ${WRKSRC}/3rd/luamake/compile/ninja/freebsd.ninja
+ ${REINPLACE_CMD} -e 's|%LINK_INOTIFY%|${_LINK_INOTIFY_}|' ${WRKSRC}/3rd/luamake/compile/ninja/freebsd.ninja
+ ${REINPLACE_CMD} -e 's|%WRKDIR%|${WRKDIR}|' ${WRKSRC}/3rd/luamake/bee.lua/test/test.lua
+ ${REINPLACE_CMD} -e 's|%WRKDIR%|${WRKDIR}|' ${WRKSRC}/3rd/bee.lua/test/test.lua
+
+# `luamake all` instead of `luamake rebuild` because there is a flaky test
+do-build:
+ cd ${WRKSRC}/3rd/luamake && compile/build.sh
+ cd ${WRKSRC} && 3rd/luamake/luamake all
+
+do-install:
+ ${MKDIR} ${STAGEDIR}${DATADIR}/bin
+ ${INSTALL_SCRIPT} ${WRKDIR}/lua-language-server ${STAGEDIR}${PREFIX}/bin
+ ${INSTALL_PROGRAM} ${WRKSRC}/bin/lua-language-server ${STAGEDIR}${DATADIR}/bin
+ ${INSTALL_SCRIPT} ${WRKSRC}/bin/main.lua ${STAGEDIR}${DATADIR}/bin
+ ${INSTALL_DATA} ${WRKSRC}/debugger.lua ${STAGEDIR}${DATADIR}
+ ${INSTALL_DATA} ${WRKSRC}/main.lua ${STAGEDIR}${DATADIR}
+ cd ${WRKSRC} && ${COPYTREE_SHARE} "locale meta script" ${STAGEDIR}${DATADIR}
+
+# you may hit https://github.com/LuaLS/lua-language-server/issues/2896
+do-test:
+ cd ${WRKSRC} && 3rd/luamake/luamake unit-test
+
+.include <bsd.port.options.mk>
+
+.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1500050
+LIB_DEPENDS+= libinotify.so:devel/libinotify
+_INOTIFY_= links = "inotify",
+_LINK_INOTIFY_= -linotify
+.endif
+
+.include <bsd.port.mk>
diff --git a/devel/lua-language-server/distinfo b/devel/lua-language-server/distinfo
new file mode 100644
index 000000000000..6ff45446e5c5
--- /dev/null
+++ b/devel/lua-language-server/distinfo
@@ -0,0 +1,47 @@
+TIMESTAMP = 1765202287
+SHA256 (LuaLS-lua-language-server-3.16.0_GH0.tar.gz) = faf8c0be1f03b3800dc65663c90618b913ed750f5c25e2c4f8ff06557eba36f6
+SIZE (LuaLS-lua-language-server-3.16.0_GH0.tar.gz) = 3088066
+SHA256 (cppcxy-EmmyLuaCodeStyle-8500f3a_GH0.tar.gz) = 5f45f8d2f3e1a6f1807d5c38f81d38d5b50b382a8d7c3376ab7afd7000f1dcaf
+SIZE (cppcxy-EmmyLuaCodeStyle-8500f3a_GH0.tar.gz) = 5421453
+SHA256 (actboy168-bee.lua-dd7853f_GH0.tar.gz) = 731219f3a5ad2787d88ef451e59230f4eb4327f4a688c8f11034190bb0a18ba7
+SIZE (actboy168-bee.lua-dd7853f_GH0.tar.gz) = 803217
+SHA256 (actboy168-json.lua-aff2a3d_GH0.tar.gz) = 41858762e3cb7bddcdc8cbff6c59977b629e956d889425bdadc3acd7de769b03
+SIZE (actboy168-json.lua-aff2a3d_GH0.tar.gz) = 27700
+SHA256 (love2d-community-love-api-8536392_GH0.tar.gz) = 0bda3c23baa680a6b60150f65df639c9f9b5e4ef2527ff972ec7de1de56be364
+SIZE (love2d-community-love-api-8536392_GH0.tar.gz) = 152808
+SHA256 (bjornbytes-lovr-docs-e89c753_GH0.tar.gz) = 42465ee079a768f31ba5574613c3a53210fdc65989f37e4d49359eb52a1d383d
+SIZE (bjornbytes-lovr-docs-e89c753_GH0.tar.gz) = 18279747
+SHA256 (sqmedeiros-lpeglabel-912b0b9_GH0.tar.gz) = 8d16beb9a36bfb3d493f8e20055ad20bb7624df62d06b5994942a9e68a4e4f57
+SIZE (sqmedeiros-lpeglabel-912b0b9_GH0.tar.gz) = 83070
+SHA256 (actboy168-luamake-0e90778_GH0.tar.gz) = 8ade6e8918bfc24473d6f72296158e66345964b93d4d8b11f482da1c9302cafc
+SIZE (actboy168-luamake-0e90778_GH0.tar.gz) = 78631
+SHA256 (LuaCATS-cocos4.0-c0b2259_GH0.tar.gz) = 45da7cd85527b3e4e52fc3c3cf08038672593663b4901a09c4a35af654dafd81
+SIZE (LuaCATS-cocos4.0-c0b2259_GH0.tar.gz) = 165304
+SHA256 (LuaCATS-defold-05379b4_GH0.tar.gz) = 001e23bcb8cd2bc1af5d0332bb12e239b92a5247d3a570307b86749fe067f75c
+SIZE (LuaCATS-defold-05379b4_GH0.tar.gz) = 46403
+SHA256 (LuaCATS-jass-80d85cb_GH0.tar.gz) = 17e80904641d052d3312e3c231d078cd7c53779a924bb6300b91f0b4b44d0779
+SIZE (LuaCATS-jass-80d85cb_GH0.tar.gz) = 63050
+SHA256 (LuaCATS-openresty-3bec36f_GH0.tar.gz) = 9c45e9a1cd16bd33c9376aa0e23d94e0618640dcb565dc7b45e26f75cb8a5498
+SIZE (LuaCATS-openresty-3bec36f_GH0.tar.gz) = 82549
+SHA256 (LuaCATS-bee-c8ce19f_GH0.tar.gz) = aa581310c6548fa5d529aa2c1fbad9b46a1bddc6fa26f7d3496d387e96d39646
+SIZE (LuaCATS-bee-c8ce19f_GH0.tar.gz) = 4204
+SHA256 (LuaCATS-busted-5ed85d0_GH0.tar.gz) = 2a9d9a13d426bbf5e216ae838cf035ba49f56ec671881d1341ae9faa5e0ae337
+SIZE (LuaCATS-busted-5ed85d0_GH0.tar.gz) = 2039
+SHA256 (LuaCATS-ffi-reflect-e9037ef_GH0.tar.gz) = 1405e2ca00aa377ba5f1d9fc2a9ed82636b757f6578394eaf1ed50e37b20eb8e
+SIZE (LuaCATS-ffi-reflect-e9037ef_GH0.tar.gz) = 915
+SHA256 (LuaCATS-luafilesystem-9b5cfc1_GH0.tar.gz) = f467e14eab854b813552dd864780568f0a484dc5ff156c0a12a003855e313749
+SIZE (LuaCATS-luafilesystem-9b5cfc1_GH0.tar.gz) = 2746
+SHA256 (LuaCATS-love2d-98f7684_GH0.tar.gz) = bbe26b636ab2ee525aeffc66b6988f978831daa1f345144077f7998daca476d6
+SIZE (LuaCATS-love2d-98f7684_GH0.tar.gz) = 94867
+SHA256 (LuaCATS-lovr-3ba215f_GH0.tar.gz) = 87085a21ca0aa15ba3415dc3438c929499a3506421bc411003a2556d7c8c5afe
+SIZE (LuaCATS-lovr-3ba215f_GH0.tar.gz) = 81779
+SHA256 (LuaCATS-luaecs-21192fb_GH0.tar.gz) = feb213d219ebcb6f55818c2e524a086c9c014dbb2ae09c970611cbd53971b933
+SIZE (LuaCATS-luaecs-21192fb_GH0.tar.gz) = 3991
+SHA256 (LuaCATS-luassert-d3528bb_GH0.tar.gz) = 4766b14e56714448646152af9b2c18fcea5348333fd9c51de97d5d0a6d26b4b5
+SIZE (LuaCATS-luassert-d3528bb_GH0.tar.gz) = 7966
+SHA256 (LuaCATS-luv-3615eb1_GH0.tar.gz) = 3433e436a29010a2ea65a9c8fc08b71df5c2de203f88a104d53f593bb9e855e9
+SIZE (LuaCATS-luv-3615eb1_GH0.tar.gz) = 40896
+SHA256 (LuaCATS-skynet-afa6717_GH0.tar.gz) = 286e9df99c011973995618f61706e1aabcf6db2e20603d25cf20ad82f9c107be
+SIZE (LuaCATS-skynet-afa6717_GH0.tar.gz) = 20066
+SHA256 (actboy168-bee.lua-f242926_GH0.tar.gz) = 740e6a6ebb8ae0d64c71feee54b56390c12be1e0e330c94c369b382048701553
+SIZE (actboy168-bee.lua-f242926_GH0.tar.gz) = 801985
diff --git a/devel/lua-language-server/files/lua-language-server.in b/devel/lua-language-server/files/lua-language-server.in
new file mode 100644
index 000000000000..3769af677064
--- /dev/null
+++ b/devel/lua-language-server/files/lua-language-server.in
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+TMPPATH=$(/usr/bin/mktemp -d '/tmp/lua-language-server.XXXXXX' || exit 1)
+
+exec '%%DATADIR%%/bin/lua-language-server' \
+ --logpath="${TMPPATH}/log" \
+ --metapath="${TMPPATH}/meta" \
+ "$@"
diff --git a/devel/lua-language-server/files/patch-3rd_bee.lua_compile_common.lua b/devel/lua-language-server/files/patch-3rd_bee.lua_compile_common.lua
new file mode 100644
index 000000000000..7a2493f85406
--- /dev/null
+++ b/devel/lua-language-server/files/patch-3rd_bee.lua_compile_common.lua
@@ -0,0 +1,22 @@
+--- 3rd/bee.lua/compile/common.lua.orig 2025-12-03 14:18:20 UTC
++++ 3rd/bee.lua/compile/common.lua
+@@ -207,7 +207,7 @@ lm:source_set "source_bee" {
+ }
+ },
+ freebsd = {
+- sysincludes = "/usr/local/include",
++ sysincludes = "%LOCALBASE%/include",
+ sources = need {
+ "bsd",
+ "posix",
+@@ -291,8 +291,8 @@ lm:source_set "source_bee" {
+ ldflags = "-pthread"
+ },
+ freebsd = {
+- links = "inotify",
+- linkdirs = "/usr/local/lib",
++ %INOTIFY%
++ linkdirs = "%LOCALBASE%/lib",
+ ldflags = "-pthread"
+ },
+ openbsd = {
diff --git a/devel/lua-language-server/files/patch-3rd_bee.lua_test_test.lua b/devel/lua-language-server/files/patch-3rd_bee.lua_test_test.lua
new file mode 100644
index 000000000000..e96fb49e9d74
--- /dev/null
+++ b/devel/lua-language-server/files/patch-3rd_bee.lua_test_test.lua
@@ -0,0 +1,11 @@
+--- 3rd/bee.lua/test/test.lua.orig 2025-12-02 15:52:43 UTC
++++ 3rd/bee.lua/test/test.lua
+@@ -53,7 +53,7 @@ do
+ if lt.options.touch then
+ lt.options.touch = fs.absolute(lt.options.touch):string()
+ end
+- local tmpdir = fs.temp_directory_path() / "test_bee"
++ local tmpdir = "%WRKDIR%" .. "/tmp/test_bee"
+ fs.create_directories(tmpdir)
+ fs.current_path(tmpdir)
+ end
diff --git a/devel/lua-language-server/files/patch-3rd_luamake_bee.lua_test_test.lua b/devel/lua-language-server/files/patch-3rd_luamake_bee.lua_test_test.lua
new file mode 100644
index 000000000000..a77a015b2a3a
--- /dev/null
+++ b/devel/lua-language-server/files/patch-3rd_luamake_bee.lua_test_test.lua
@@ -0,0 +1,11 @@
+--- 3rd/luamake/bee.lua/test/test.lua.orig 2025-12-02 15:38:21 UTC
++++ 3rd/luamake/bee.lua/test/test.lua
+@@ -53,7 +53,7 @@ do
+ if lt.options.touch then
+ lt.options.touch = fs.absolute(lt.options.touch):string()
+ end
+- local tmpdir = fs.temp_directory_path() / "test_bee"
++ local tmpdir = "%WRKDIR%" .. "/tmp/test_bee"
+ fs.create_directories(tmpdir)
+ fs.current_path(tmpdir)
+ end
diff --git a/devel/lua-language-server/files/patch-3rd_luamake_compile_ninja_freebsd.ninja b/devel/lua-language-server/files/patch-3rd_luamake_compile_ninja_freebsd.ninja
new file mode 100644
index 000000000000..99b26383fb2c
--- /dev/null
+++ b/devel/lua-language-server/files/patch-3rd_luamake_compile_ninja_freebsd.ninja
@@ -0,0 +1,29 @@
+--- 3rd/luamake/compile/ninja/freebsd.ninja.orig 2025-10-29 08:38:58 UTC
++++ 3rd/luamake/compile/ninja/freebsd.ninja
+@@ -30,7 +30,7 @@ rule cxx_source_bee_2
+ rule cxx_source_bee_2
+ command = $cc -MMD -MT $out -MF $out.d -std=c++17 -fno-rtti -O2 -Wall $
+ -fvisibility=hidden -Ibee.lua -Ibee.lua/3rd/lua54 -isystem $
+- /usr/local/include -DNDEBUG -o $out -c $in
++ %LOCALBASE%/include -DNDEBUG -o $out -c $in
+ description = Compile C++ $out
+ deps = gcc
+ depfile = $out.d
+@@ -126,7 +126,7 @@ rule link_bootstrap
+ build $obj/source_bootstrap/main.obj: cxx_source_bootstrap $
+ bee.lua/bootstrap/main.cpp
+ rule link_bootstrap
+- command = $cc $in -o $out -Wl,-E -linotify -L/usr/local/lib -pthread -lm $
++ command = $cc $in -o $out -Wl,-E %LINK_INOTIFY% -L%LOCALBASE%/lib -pthread -lm $
+ -Wl,--push-state,-Bstatic -lstdc++ -Wl,--pop-state -Wl,-S,-x
+ description = Link Exe $out
+ rule copy
+@@ -138,7 +138,7 @@ rule link_luamake
+ description = Run test.
+ pool = console
+ rule link_luamake
+- command = $cc $in -o $out -linotify -L/usr/local/lib -pthread -lm $
++ command = $cc $in -o $out %LINK_INOTIFY% -L%LOCALBASE%/lib -pthread -lm $
+ -lstdc++ -Wl,-S,-x
+ description = Link Exe $out
+ rule build_luamake_test
diff --git a/devel/lua-language-server/pkg-descr b/devel/lua-language-server/pkg-descr
new file mode 100644
index 000000000000..46f3d7de1b46
--- /dev/null
+++ b/devel/lua-language-server/pkg-descr
@@ -0,0 +1,16 @@
+The Sumneko Lua Language Server is a comprehensive Lua development
+server. It functions as an LSP client, supporting:
+
+* Over 20 supported annotations for documenting your code
+* Go to definition
+* Dynamic type checking
+* Find references
+* Diagnostics/Warnings
+* Syntax checking
+* Element renaming
+* Hover to view details on variables, functions, and more
+* Autocompletion
+* Support for libraries
+* Code formatting
+* Spell checking
+* Custom plugins