From 8e5bd0b0adeef79df2e1bafea4d6ea500d4ff90f Mon Sep 17 00:00:00 2001 From: "ingenarel (NeoJesus)" Date: Tue, 16 Jun 2026 09:11:56 +0600 Subject: [PATCH] dev-util/docker-language-server: new package, add 0.20.1 Signed-off-by: ingenarel (NeoJesus) --- dev-util/docker-language-server/Manifest | 2 + .../docker-language-server-0.20.1.ebuild | 71 ++++++++++++++++ .../files/telemetry-0.20.1.patch | 85 +++++++++++++++++++ dev-util/docker-language-server/metadata.xml | 15 ++++ 4 files changed, 173 insertions(+) create mode 100644 dev-util/docker-language-server/Manifest create mode 100644 dev-util/docker-language-server/docker-language-server-0.20.1.ebuild create mode 100644 dev-util/docker-language-server/files/telemetry-0.20.1.patch create mode 100644 dev-util/docker-language-server/metadata.xml diff --git a/dev-util/docker-language-server/Manifest b/dev-util/docker-language-server/Manifest new file mode 100644 index 0000000000..bafb5c4308 --- /dev/null +++ b/dev-util/docker-language-server/Manifest @@ -0,0 +1,2 @@ +DIST docker-language-server-0.20.1-deps.tar.xz 170888880 BLAKE2B b6083d3452a67a8774405db2afdf52ae672f338451dd9896e9a395c837cce565f7b41baf375490b3f0c69d6e4b27f72170dbc9225c4522dafc182f2267102f61 SHA512 163b1e04ada6e2c1219430a9fe65397c74d954e41062b487a821c1a60134b50df4a29064073538db88cdb2334e2f8aff42e6c32a38a9ee2d4db48c7fa525db66 +DIST docker-language-server-0.20.1.tar.gz 261348 BLAKE2B fef37c694fb4b0288a17a28d81ce6c01384e42433e753589d7021808ed4ec170ff65f8a3df9cbfea0bce1c2b052ffe3274fc0c21423637a21d9215b3c77451ec SHA512 0fb5edb069e0fa3a2ed0e5d0879e8385b93f31509de16b3c1d4824251ccf9b81ee97220e2abe89aaee481b1b47525fb36a2c48e854c481a79ace408b391c394d diff --git a/dev-util/docker-language-server/docker-language-server-0.20.1.ebuild b/dev-util/docker-language-server/docker-language-server-0.20.1.ebuild new file mode 100644 index 0000000000..2c85b858bd --- /dev/null +++ b/dev-util/docker-language-server/docker-language-server-0.20.1.ebuild @@ -0,0 +1,71 @@ +# Copyright 2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit go-module shell-completion optfeature + +DESCRIPTION="Language server for Dockerfiles, Compose files, and Bake files" +HOMEPAGE="https://github.com/docker/docker-language-server" + +if [[ "${PV}" == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/docker/docker-language-server.git" +else + KEYWORDS="~amd64" + SRC_URI="https://github.com/docker/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz + https://github.com/ingenarel/guru-depfiles/releases/download/${P}-deps.tar.xz/${P}-go-mod-deps.tar.xz -> + ${P}-deps.tar.xz + " +fi + +LICENSE="Apache-2.0" +#gentoo-go-license docker-language-server-0.20.1.ebuild +LICENSE+=" Apache-2.0 BSD-2 BSD ISC MIT MPL-2.0 Unicode-DFS-2016 " +# dependency licenses +# if it says unknown license, and it's for in_toto, it's Apache-2.0 +SLOT="0" +RESTRICT="test" +BDEPEND=">=dev-lang/go-1.25.0" +PATCHES=( + "${FILESDIR}/telemetry-0.20.1.patch" +) +# the telemetry patch removes some unnessary bloat where the lsp would try to publish the telemetry (but will fail +# anyway because we don't have the api keys), otherwise i would actually use the telemetry use flag for this + +src_unpack(){ + if [[ "${PV}" == 9999 ]];then + git-r3_src_unpack + go-module_live_vendor + else + default + fi +} + +src_compile(){ + local VERSION + if [[ "${PV}" == 9999 ]]; then + VERSION="$(git show -s --format=%cs)-$(git rev-parse --short HEAD)" + else + VERSION="${PV}" + fi + CGO_ENABLED=0 ego build \ + -ldflags="-s -w -X 'github.com/docker/docker-language-server/internal/pkg/cli/metadata.Version=${VERSION}'" \ + -o ./bin/"${PN}" ./cmd/"${PN}" +} + +src_install(){ + dobin ./bin/"${PN}" + ./bin/"${PN}" completion bash > "${PN}" || die "generating bash completion failed" + dobashcomp "${PN}" + ./bin/"${PN}" completion zsh > "_${PN}" || die "generating zsh completion failed" + dozshcomp "_${PN}" + ./bin/"${PN}" completion fish > "${PN}.fish" || die "generating fish completion failed" + dofishcomp "${PN}.fish" +} + +pkg_postinst(){ + # at the time of writing this, it doesn't say what features, just some optional features + # https://github.com/docker/docker-language-server/blob/5187ff578db630f5df5b5922a10d8415a5bb7d32/README.md?plain=1#L7 + optfeature "some optional features" app-containers/docker-buildx +} diff --git a/dev-util/docker-language-server/files/telemetry-0.20.1.patch b/dev-util/docker-language-server/files/telemetry-0.20.1.patch new file mode 100644 index 0000000000..240215e750 --- /dev/null +++ b/dev-util/docker-language-server/files/telemetry-0.20.1.patch @@ -0,0 +1,85 @@ +diff --git a/internal/pkg/cli/start.go b/internal/pkg/cli/start.go +index 47ea4c5..55722d5 100644 +--- a/internal/pkg/cli/start.go ++++ b/internal/pkg/cli/start.go +@@ -84,13 +84,11 @@ For socket mode, pass the --address option. + func runStdioServer(_ context.Context) error { + docManager := document.NewDocumentManager() + s := server.NewServer(docManager) +- s.StartBackgrondProcesses(context.Background()) + return s.RunStdio() + } + + func runSocketServer(_ context.Context, addr string) error { + docManager := document.NewDocumentManager() + s := server.NewServer(docManager) +- s.StartBackgrondProcesses(context.Background()) + return s.RunTCP(addr) + } +diff --git a/internal/pkg/server/server.go b/internal/pkg/server/server.go +index 220bff6..139a442 100644 +--- a/internal/pkg/server/server.go ++++ b/internal/pkg/server/server.go +@@ -159,7 +159,6 @@ func (s *Server) Initialized(context *glsp.Context, params *protocol.Initialized + } + + func (s *Server) shutdown(ctx *glsp.Context) error { +- _, _ = s.telemetry.Publish(context.Background()) + protocol.SetTraceValue(protocol.TraceValueOff) + return nil + } +@@ -182,26 +181,6 @@ func (s *Server) recomputeDiagnostics() { + } + } + +-func (s *Server) StartBackgrondProcesses(ctx context.Context) { +- s.publishTelemetry(ctx) +-} +- +-func (s *Server) publishTelemetry(ctx context.Context) { +- go func() { +- defer s.handlePanic("publishTelemetry") +- +- for { +- select { +- case <-ctx.Done(): +- return +- default: +- time.Sleep(time.Second * 60) +- _, _ = s.telemetry.Publish(ctx) +- } +- } +- }() +-} +- + func (s *Server) handleRecovered(method string, recovered interface{}) bool { + if recovered != nil { + debug.PrintStack() +diff --git a/internal/telemetry/client.go b/internal/telemetry/client.go +index 8d942f6..42ba887 100644 +--- a/internal/telemetry/client.go ++++ b/internal/telemetry/client.go +@@ -27,19 +27,19 @@ type TelemetryClientImpl struct { + } + + func NewClient() TelemetryClient { +- return &TelemetryClientImpl{telemetry: configuration.TelemetrySettingAll} ++ return &TelemetryClientImpl{telemetry: configuration.TelemetrySettingOff} + } + + func (c *TelemetryClientImpl) UpdateTelemetrySetting(value string) { + switch value { + case "all": +- c.telemetry = configuration.TelemetrySettingAll ++ c.telemetry = configuration.TelemetrySettingOff + case "error": +- c.telemetry = configuration.TelemetrySettingError ++ c.telemetry = configuration.TelemetrySettingOff + case "off": + c.telemetry = configuration.TelemetrySettingOff + default: +- c.telemetry = configuration.TelemetrySettingAll ++ c.telemetry = configuration.TelemetrySettingOff + } + } + diff --git a/dev-util/docker-language-server/metadata.xml b/dev-util/docker-language-server/metadata.xml new file mode 100644 index 0000000000..94c868ff40 --- /dev/null +++ b/dev-util/docker-language-server/metadata.xml @@ -0,0 +1,15 @@ + + + + + ingenarel_neojesus@disroot.org + ingenarel + + + docker/docker-language-server + + + The Docker Language Server is a language server for providing language features for file types in the Docker + ecosystem (Dockerfiles, Compose files, and Bake files). + +