Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package efm-langserver for openSUSE:Factory
checked in at 2026-09-21 12:20:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/efm-langserver (Old)
and /work/SRC/openSUSE:Factory/.efm-langserver.new.383539 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "efm-langserver"
Mon Sep 21 12:20:30 2026 rev:4 rq:1379258 version:0.0.57
Changes:
--------
--- /work/SRC/openSUSE:Factory/efm-langserver/efm-langserver.changes
2024-12-18 20:11:30.140704765 +0100
+++
/work/SRC/openSUSE:Factory/.efm-langserver.new.383539/efm-langserver.changes
2026-09-21 12:20:35.056682706 +0200
@@ -1,0 +2,24 @@
+Wed Sep 16 17:37:00 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to version 0.0.57:
+ * Kill lint process groups so lint-on-change cannot forkbomb
+ * Add format-ignore-exit-code configuration
+ * Compare document URIs case-insensitively
+ * Avoid reporting a fake formatter error
+ * Fix panics: position boundary off-by-one, unknown
+ lint-category-map types, and lint after shutdown
+ * Fix data races between handler and lint goroutines
+ * Keep debounced lint requests for other files
+ * Handle didChange with multiple content changes
+ * Use symbol-formats for documentSymbol; drop duplicates
+ * Support %e/%k diagnostic end positions
+ * Fix formatting edits on CRLF files and files without a
+ trailing newline
+ * Publish same-file diagnostics under the client's URI
+ * Honour the -loglevel flag; ignore unknown notifications
+ * Update jsonrpc2 and errorformat dependencies
+- Require golang(API) >= 1.23 to match go.mod
+- Switch prep to %autosetup and enable unit tests
+- Add a go_modules source service
+
+-------------------------------------------------------------------
Old:
----
efm-langserver-0.0.54.tar.gz
New:
----
_service
efm-langserver-0.0.57.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ efm-langserver.spec ++++++
--- /var/tmp/diff_new_pack.VTG4Yw/_old 2026-09-21 12:20:35.786713230 +0200
+++ /var/tmp/diff_new_pack.VTG4Yw/_new 2026-09-21 12:20:35.788713313 +0200
@@ -1,7 +1,7 @@
#
# spec file for package efm-langserver
#
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: efm-langserver
-Version: 0.0.54
+Version: 0.0.57
Release: 0
Summary: General purpose language server
License: MIT
@@ -26,14 +26,14 @@
Source1: vendor.tar.zst
BuildRequires: c_compiler
BuildRequires: zstd
-BuildRequires: golang(API) >= 1.20
+BuildRequires: golang(API) >= 1.23
%description
General purpose Language Server that can use specified error message format
generated from specified command e.g.
using linters and other tooling that supports the LSP specification.
%prep
-%setup -qa1
+%autosetup -p1 -a1
%build
%ifarch ppc64
@@ -47,6 +47,9 @@
%install
install -Dm755 %{name} %{buildroot}%{_bindir}/%{name}
+%check
+go test -mod=vendor ./...
+
%files
%{_bindir}/%{name}
%license LICENSE
++++++ _service ++++++
<services>
<service name="go_modules" mode="manual">
<param name="compression">zst</param>
</service>
</services>
++++++ efm-langserver-0.0.54.tar.gz -> efm-langserver-0.0.57.tar.gz ++++++
++++ 2132 lines of diff (skipped)
++++++ vendor.tar.zst ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vendor/github.com/reviewdog/errorformat/.gitignore
new/vendor/github.com/reviewdog/errorformat/.gitignore
--- old/vendor/github.com/reviewdog/errorformat/.gitignore 1970-01-01
01:00:00.000000000 +0100
+++ new/vendor/github.com/reviewdog/errorformat/.gitignore 2026-09-16
19:35:20.000000000 +0200
@@ -0,0 +1,6 @@
+# Folders to ignore
+.vscode/
+.idea/
+
+# Files to ignore
+.drone.sec.yaml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vendor/github.com/sourcegraph/jsonrpc2/README.md
new/vendor/github.com/sourcegraph/jsonrpc2/README.md
--- old/vendor/github.com/sourcegraph/jsonrpc2/README.md 2024-12-18
08:43:08.000000000 +0100
+++ new/vendor/github.com/sourcegraph/jsonrpc2/README.md 2026-09-16
19:35:20.000000000 +0200
@@ -3,9 +3,8 @@
Package jsonrpc2 provides a [Go](https://golang.org) implementation of
[JSON-RPC 2.0](http://www.jsonrpc.org/specification).
-This package is **experimental** until further notice.
-
-[**Open the code in
Sourcegraph**](https://sourcegraph.com/github.com/sourcegraph/jsonrpc2)
+* [Documentation](https://pkg.go.dev/github.com/sourcegraph/jsonrpc2)
+* [Open the code in
Sourcegraph](https://sourcegraph.com/github.com/sourcegraph/jsonrpc2)
## Known issues
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vendor/github.com/sourcegraph/jsonrpc2/SECURITY.md
new/vendor/github.com/sourcegraph/jsonrpc2/SECURITY.md
--- old/vendor/github.com/sourcegraph/jsonrpc2/SECURITY.md 1970-01-01
01:00:00.000000000 +0100
+++ new/vendor/github.com/sourcegraph/jsonrpc2/SECURITY.md 2026-09-16
19:35:20.000000000 +0200
@@ -0,0 +1,12 @@
+# Security Policy
+
+## Supported Versions
+
+Security updates are applied only to the latest release.
+
+## Reporting a Vulnerability
+
+If you have discovered a security vulnerability in this project, please report
it privately. **Do not disclose it as a public issue.** This gives us time to
work with you to evaluate and fix the issue before public exposure, reducing
the chance that the exploit will be used before a patch is released.
+
+Please disclose it privately via email to [email protected]. We will
work with you to understand and resolve the issue promptly.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vendor/github.com/sourcegraph/jsonrpc2/conn.go
new/vendor/github.com/sourcegraph/jsonrpc2/conn.go
--- old/vendor/github.com/sourcegraph/jsonrpc2/conn.go 2024-12-18
08:43:08.000000000 +0100
+++ new/vendor/github.com/sourcegraph/jsonrpc2/conn.go 2026-09-16
19:35:20.000000000 +0200
@@ -166,9 +166,7 @@
}
func (c *Conn) close(cause error) error {
- c.sending.Lock()
c.mu.Lock()
- defer c.sending.Unlock()
defer c.mu.Unlock()
if c.closed {
@@ -189,15 +187,17 @@
}
func (c *Conn) readMessages(ctx context.Context) {
- var err error
- for err == nil {
+ for {
var m anyMessage
- err = c.stream.ReadObject(&m)
+ err := c.stream.ReadObject(&m)
if err != nil {
- break
+ c.close(err)
+ return
}
switch {
+ // TODO: handle the case where both request and response are
nil.
+
case m.request != nil:
for _, onRecv := range c.onRecv {
onRecv(m.request, nil)
@@ -206,49 +206,53 @@
case m.response != nil:
resp := m.response
- if resp != nil {
- id := resp.ID
- c.mu.Lock()
- call := c.pending[id]
- delete(c.pending, id)
- c.mu.Unlock()
+ id := resp.ID
+ c.mu.Lock()
+ call := c.pending[id]
+ delete(c.pending, id)
+ c.mu.Unlock()
+
+ var req *Request
+ if call != nil {
+ call.response = resp
+ req = call.request
+ }
- if call != nil {
- call.response = resp
- }
-
- if len(c.onRecv) > 0 {
- var req *Request
- if call != nil {
- req = call.request
- }
- for _, onRecv := range c.onRecv {
- onRecv(req, resp)
- }
- }
-
- switch {
- case call == nil:
- c.logger.Printf("jsonrpc2: ignoring
response #%s with no corresponding request\n", id)
-
- case resp.Error != nil:
- call.done <- resp.Error
- close(call.done)
-
- default:
- call.done <- nil
- close(call.done)
- }
+ for _, onRecv := range c.onRecv {
+ onRecv(req, resp)
}
+
+ if call == nil {
+ c.logger.Printf("jsonrpc2: ignoring response
#%s with no corresponding request\n", id)
+ continue
+ }
+
+ var err error
+ if resp.Error != nil {
+ err = resp.Error
+ }
+
+ call.done <- err
+ close(call.done)
}
}
- c.close(err)
}
func (c *Conn) send(_ context.Context, m *anyMessage, wait bool) (cc *call,
err error) {
c.sending.Lock()
defer c.sending.Unlock()
+ // double check the error isn't due to being closed while sending.
+ defer func() {
+ if err != nil {
+ c.mu.Lock()
+ if c.closed {
+ err = ErrClosed
+ }
+ c.mu.Unlock()
+ }
+ }()
+
// m.request.ID could be changed, so we store a copy to correctly
// clean up pending
var id ID
@@ -330,25 +334,20 @@
// error is returned.
func (w Waiter) Wait(ctx context.Context, result interface{}) error {
select {
+ case <-ctx.Done():
+ return ctx.Err()
+
case err, ok := <-w.call.done:
if !ok {
- err = ErrClosed
+ return ErrClosed
}
- if err != nil {
+ if err != nil || result == nil {
return err
}
- if result != nil {
- if w.call.response.Result == nil {
- w.call.response.Result = &jsonNull
- }
- if err := json.Unmarshal(*w.call.response.Result,
result); err != nil {
- return err
- }
+ if w.call.response.Result == nil {
+ w.call.response.Result = &jsonNull
}
- return nil
-
- case <-ctx.Done():
- return ctx.Err()
+ return json.Unmarshal(*w.call.response.Result, result)
}
}
@@ -414,12 +413,7 @@
return errors.New("jsonrpc2: invalid empty batch")
}
for i := range msgs {
- if err := checkType(&msg{
- ID: msgs[i].ID,
- Method: msgs[i].Method,
- Result: msgs[i].Result,
- Error: msgs[i].Error,
- }); err != nil {
+ if err := checkType(&msgs[i]); err != nil {
return err
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vendor/github.com/sourcegraph/jsonrpc2/conn_opt.go
new/vendor/github.com/sourcegraph/jsonrpc2/conn_opt.go
--- old/vendor/github.com/sourcegraph/jsonrpc2/conn_opt.go 2024-12-18
08:43:08.000000000 +0100
+++ new/vendor/github.com/sourcegraph/jsonrpc2/conn_opt.go 2026-09-16
19:35:20.000000000 +0200
@@ -43,24 +43,10 @@
OnRecv(func(req *Request, resp *Response) {
switch {
- case req != nil:
- mu.Lock()
- reqMethods[req.ID] = req.Method
- mu.Unlock()
-
- params, _ := json.Marshal(req.Params)
- if req.Notif {
- logger.Printf("jsonrpc2: --> notif: %s:
%s\n", req.Method, params)
- } else {
- logger.Printf("jsonrpc2: --> request
#%s: %s: %s\n", req.ID, req.Method, params)
- }
-
case resp != nil:
- var method string
+ method := "(no matching request)"
if req != nil {
method = req.Method
- } else {
- method = "(no matching request)"
}
switch {
case resp.Result != nil:
@@ -70,18 +56,22 @@
err, _ := json.Marshal(resp.Error)
logger.Printf("jsonrpc2: --> error #%s:
%s: %s\n", resp.ID, method, err)
}
- }
- })(c)
- OnSend(func(req *Request, resp *Response) {
- switch {
+
case req != nil:
+ mu.Lock()
+ reqMethods[req.ID] = req.Method
+ mu.Unlock()
+
params, _ := json.Marshal(req.Params)
if req.Notif {
- logger.Printf("jsonrpc2: <-- notif: %s:
%s\n", req.Method, params)
+ logger.Printf("jsonrpc2: --> notif: %s:
%s\n", req.Method, params)
} else {
- logger.Printf("jsonrpc2: <-- request
#%s: %s: %s\n", req.ID, req.Method, params)
+ logger.Printf("jsonrpc2: --> request
#%s: %s: %s\n", req.ID, req.Method, params)
}
-
+ }
+ })(c)
+ OnSend(func(req *Request, resp *Response) {
+ switch {
case resp != nil:
mu.Lock()
method := reqMethods[resp.ID]
@@ -98,6 +88,14 @@
err, _ := json.Marshal(resp.Error)
logger.Printf("jsonrpc2: <-- error #%s:
%s: %s\n", resp.ID, method, err)
}
+
+ case req != nil:
+ params, _ := json.Marshal(req.Params)
+ if req.Notif {
+ logger.Printf("jsonrpc2: <-- notif: %s:
%s\n", req.Method, params)
+ } else {
+ logger.Printf("jsonrpc2: <-- request
#%s: %s: %s\n", req.ID, req.Method, params)
+ }
}
})(c)
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/vendor/github.com/sourcegraph/jsonrpc2/handler_with_error.go
new/vendor/github.com/sourcegraph/jsonrpc2/handler_with_error.go
--- old/vendor/github.com/sourcegraph/jsonrpc2/handler_with_error.go
2024-12-18 08:43:08.000000000 +0100
+++ new/vendor/github.com/sourcegraph/jsonrpc2/handler_with_error.go
2026-09-16 19:35:20.000000000 +0200
@@ -30,20 +30,16 @@
if err == nil {
err = resp.SetResult(result)
}
- if err != nil {
- if e, ok := err.(*Error); ok {
- resp.Error = e
- } else {
- resp.Error = &Error{Message: err.Error()}
- }
+
+ if e, ok := err.(*Error); ok {
+ resp.Error = e
+ } else if err != nil {
+ resp.Error = &Error{Message: err.Error()}
}
- if !req.Notif {
- if err := conn.SendResponse(ctx, resp); err != nil {
- if err != ErrClosed || !h.suppressErrClosed {
- conn.logger.Printf("jsonrpc2 handler: sending
response %s: %v\n", resp.ID, err)
- }
- }
+ err = conn.SendResponse(ctx, resp)
+ if err != nil && (err != ErrClosed || !h.suppressErrClosed) {
+ conn.logger.Printf("jsonrpc2 handler: sending response %s:
%v\n", resp.ID, err)
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vendor/github.com/sourcegraph/jsonrpc2/request.go
new/vendor/github.com/sourcegraph/jsonrpc2/request.go
--- old/vendor/github.com/sourcegraph/jsonrpc2/request.go 2024-12-18
08:43:08.000000000 +0100
+++ new/vendor/github.com/sourcegraph/jsonrpc2/request.go 2026-09-16
19:35:20.000000000 +0200
@@ -55,6 +55,10 @@
// UnmarshalJSON implements json.Unmarshaler.
func (r *Request) UnmarshalJSON(data []byte) error {
r2 := make(map[string]interface{})
+ pop := func(key string) interface{} {
+ defer delete(r2, key)
+ return r2[key]
+ }
// Detect if the "params" or "meta" fields are JSON "null" or just not
// present by seeing if the field gets overwritten to nil.
@@ -68,36 +72,37 @@
if err := decoder.Decode(&r2); err != nil {
return err
}
+
var ok bool
- r.Method, ok = r2["method"].(string)
+ r.Method, ok = pop("method").(string)
if !ok {
return errors.New("missing method field")
}
- switch {
- case r2["params"] == nil:
+ switch params := pop("params"); params {
+ case nil:
r.Params = &jsonNull
- case r2["params"] == emptyParams:
+ case emptyParams:
r.Params = nil
default:
- b, err := json.Marshal(r2["params"])
+ b, err := json.Marshal(params)
if err != nil {
return fmt.Errorf("failed to marshal params: %w", err)
}
r.Params = (*json.RawMessage)(&b)
}
- switch {
- case r2["meta"] == nil:
+ switch meta := pop("meta"); meta {
+ case nil:
r.Meta = &jsonNull
- case r2["meta"] == emptyMeta:
+ case emptyMeta:
r.Meta = nil
default:
- b, err := json.Marshal(r2["meta"])
+ b, err := json.Marshal(meta)
if err != nil {
return fmt.Errorf("failed to marshal Meta: %w", err)
}
r.Meta = (*json.RawMessage)(&b)
}
- switch rawID := r2["id"].(type) {
+ switch rawID := pop("id").(type) {
case nil:
r.ID = ID{}
r.Notif = true
@@ -115,13 +120,12 @@
return fmt.Errorf("unexpected ID type: %T", rawID)
}
+ // The jsonrpc field should not be added to ExtraFields.
+ delete(r2, "jsonrpc")
+
// Clear the extra fields before populating them again.
r.ExtraFields = nil
for name, value := range r2 {
- switch name {
- case "id", "jsonrpc", "meta", "method", "params":
- continue
- }
r.ExtraFields = append(r.ExtraFields, RequestField{
Name: name,
Value: value,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/vendor/modules.txt new/vendor/modules.txt
--- old/vendor/modules.txt 2024-12-18 08:43:08.000000000 +0100
+++ new/vendor/modules.txt 2026-09-16 19:35:20.000000000 +0200
@@ -3,10 +3,10 @@
# github.com/mattn/go-unicodeclass v0.0.2
## explicit
github.com/mattn/go-unicodeclass
-# github.com/reviewdog/errorformat v0.0.0-20240608101709-1d3280ed6bd4
+# github.com/reviewdog/errorformat v0.0.0-20250320004447-223c26dbe212
## explicit; go 1.13
github.com/reviewdog/errorformat
-# github.com/sourcegraph/jsonrpc2 v0.2.0
+# github.com/sourcegraph/jsonrpc2 v0.2.1
## explicit; go 1.12
github.com/sourcegraph/jsonrpc2
# gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15