diff options
| author | Dave Marker <dave@freedave.net> | 2025-12-08 14:49:35 +0000 |
|---|---|---|
| committer | Adam Weinberger <adamw@FreeBSD.org> | 2025-12-08 15:02:44 +0000 |
| commit | 680cb35b6474ec2b9bf91ae8950b5d79007b4a5a (patch) | |
| tree | 220035dbc8f32958fc11a95b497d88c70eb41742 | |
| parent | 1a3017f645fc1413e74f4badf33ee66e9bab199a (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-- | MOVED | 1 | ||||
| -rw-r--r-- | devel/Makefile | 1 | ||||
| -rw-r--r-- | devel/lua-language-server/Makefile | 90 | ||||
| -rw-r--r-- | devel/lua-language-server/distinfo | 47 | ||||
| -rw-r--r-- | devel/lua-language-server/files/lua-language-server.in | 8 | ||||
| -rw-r--r-- | devel/lua-language-server/files/patch-3rd_bee.lua_compile_common.lua | 22 | ||||
| -rw-r--r-- | devel/lua-language-server/files/patch-3rd_bee.lua_test_test.lua | 11 | ||||
| -rw-r--r-- | devel/lua-language-server/files/patch-3rd_luamake_bee.lua_test_test.lua | 11 | ||||
| -rw-r--r-- | devel/lua-language-server/files/patch-3rd_luamake_compile_ninja_freebsd.ninja | 29 | ||||
| -rw-r--r-- | devel/lua-language-server/pkg-descr | 16 |
10 files changed, 235 insertions, 1 deletions
@@ -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 |
