Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 08 Dec 2025 15:02:59 +0000
From:      Adam Weinberger <adamw@FreeBSD.org>
To:        ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org
Cc:        Dave Marker <dave@freedave.net>
Subject:   git: 680cb35b6474 - main - devel/lua-language-server: Resurrect port
Message-ID:  <6936e8a3.335d6.85ebf91@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help

The branch main has been updated by adamw:

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

commit 680cb35b6474ec2b9bf91ae8950b5d79007b4a5a
Author:     Dave Marker <dave@freedave.net>
AuthorDate: 2025-12-08 14:49:35 +0000
Commit:     Adam Weinberger <adamw@FreeBSD.org>
CommitDate: 2025-12-08 15:02:44 +0000

    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
---
 MOVED                                              |  1 -
 devel/Makefile                                     |  1 +
 devel/lua-language-server/Makefile                 | 90 ++++++++++++++++++++++
 devel/lua-language-server/distinfo                 | 47 +++++++++++
 .../files/lua-language-server.in                   |  8 ++
 .../files/patch-3rd_bee.lua_compile_common.lua     | 22 ++++++
 .../files/patch-3rd_bee.lua_test_test.lua          | 11 +++
 .../files/patch-3rd_luamake_bee.lua_test_test.lua  | 11 +++
 .../patch-3rd_luamake_compile_ninja_freebsd.ninja  | 29 +++++++
 devel/lua-language-server/pkg-descr                | 16 ++++
 10 files changed, 235 insertions(+), 1 deletion(-)

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6936e8a3.335d6.85ebf91>