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>
